1 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 12:30:56 ] あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。 【質問者へ】 回答者の便宜のため、質問の際は以下を行うことを推奨します。 ・質問は【質問テンプレ】を利用してください。 ・問題文は、出題されたまま全文を書いてください。 ・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう. ・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。 ・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。 ・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。 ・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。 【質問テンプレ】 [1] 授業単元: [2] 問題文(含コード&リンク):() [3] 環境 [3.1] OS: (Windows/Linux/等々) [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: (C/C++/どちらでも可 のいずれか) [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) 【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm 【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html 【過去ログ検索】 chomework.sakura.ne.jp/ 【wiki】 www23.atwiki.jp/homework/ 【前スレ】C/C++の宿題を片付けます 108代目 pc11.2ch.net/test/read.cgi/tech/1211980711/
608 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 08:43:37 ] 問題文も読めない盲は引っ込んでろよ
609 名前:デフォルトの名無しさん [2008/06/15(日) 08:47:41 ] >>592 C++知らないからCで int CountZeroElements(int *array, int n){ for(int c=0; n>=0; c+=(array[n--]!=0)) ; return c; } int * RemoveZeroElements(const int * array, int n){ int i, c, *ret, len; len=CountZeroElements(array, n); ret=(int*)malloc(sizeof(int)*len); for(i=c=0; i<n; i++) if(array[i]!=0) ret[c++]=array[i]; return ret; }
610 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 08:48:21 ] for (i = 0; i < n; ) { if (array[i] == 0) { for (--n; i < n; i++) array[i] = array[i + 1]; i = 0; } else i++; } return n;
611 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 08:49:55 ] >>605 クソな595,596が使っているからこそ、ローカル変数を1つだけに したコードを考えて欲しいんだナ
612 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 08:53:20 ] 変数一つにすることにどんな意味がある? >>610 は一つになってるけど>>594 よりムダが多いだろ
613 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 08:55:57 ] int RemoveZeroElements(int *const array, const int n){ int i; ?????????????????? } この条件ではどーだ?
614 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 08:56:07 ] // 学生向けのコード int RemoveZeroElements(int* array, int n) { int len = 0; // 戻り値に使う配列の長さを格納する変数 int* work = new int[n]; // 作業用領域を確保 // 0を除去した配列を作業用領域に作り、配列の長さを求める for(int i = 0; i != n; ++i) { if(array[i] != 0) { work[len++] = array[i]; } } // 作業用の配列から、引数で与えられた配列に、内容をコピーする。 for(int i = 0; i != len; ++i) { array[i] = work[i]; } delete [] work; // 作業用領域の後始末 return len; }
615 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 08:56:33 ] くそコードかいた595=596が話をそらそうとして必死だなw
616 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 09:10:39 ] [1] 授業単元:プログラミング基礎 [2] 問題文: 自然数nを入力し、nの階乗(1×2×…×n)を計算し、 10進数で表示するプログラムを作りなさい。ただし、n<10000程度までは正しく動くようにすること。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2008年6月27日まで [5] その他の制限:いまポインタについて習っている所です
617 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 09:15:57 ] >>616 >>218 を参考にしな。
618 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 09:40:43 ] >>616 #include <stdio.h> #define N 1000000 int main(void) { int i, j, n, fig = 0; int a[1000] = {0}, temp[1000] ={0}; scanf("%d", &n); a[0] = 1; for(i=2; i<=n; i++) { for(j=0; j<=fig; j++) temp[j] = a[j] * i; for(j=0; j<=fig; j++) { if(temp[j] / N) { a[j] = temp[j] % N; if(j==fig) fig++; temp[j+1] += temp[j] / N; } else a[j] = temp[j]; } } printf("%d", a[fig]); for(i=fig-1; i>=0; i--) printf("%06d", a[i]); return 0; }
619 名前:592 mailto:sage [2008/06/15(日) 09:59:02 ] コードありがとうございます。 若干流れが荒れてしまって申し訳ない。。。
620 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 10:10:08 ] >>617-618 ありがとうございました。
621 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 10:11:02 ] 594と610と614以外は参考にしちゃ駄目だから
622 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 10:17:28 ] >>620 いまどきは滅多にないと思うけど、618は環境によっては正しく動かない可能性あるから。
623 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 10:21:18 ] IT業界関連社会人を目指す学生向けの回答はこっち >>614 はパソコン愛好会のお遊び勉強会向けのコードで大学の宿題じゃNG 効率はやや悪いが、 1.何を書き換えるかが把握しやすい。 2.ローカル変数をstaticにしている(必要もなくautoにしない) 3.newで許可無く勝手に変数を作っていない という点に相違がある。こういうのが非常に大事になってくる。 int RemoveZeroElements(int *array, int n){ static int i,j; for(i=0;i<n;i++){ if(array[i]==0){ for(j=i+1;j<n;j++){//後ろに0でない項があれば、それと交換する if(array[j]){array[i]=array[j];array[j]=0;break;} }//for }//if }//for for(i=0;i<n;i++) if(array[i]==0) return i+1; }
624 名前:623 mailto:sage [2008/06/15(日) 10:24:17 ] return n;が抜けてたから追加しといて
625 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 10:29:00 ] >>623 >return i+1; >return i+1; >return i+1; >return i+1;
626 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 10:30:43 ] >>623 なんだこのクソコードw
627 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 11:23:48 ] カウンタ用の変数をプログラム全体の実行終了までメモリ上に保持しとくとか・・・。 実行環境はメモリ余りまくりのWindowsXPだというのに・・・。 バカなの?
628 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 11:42:17 ] 再帰とか普通禁止されてる業務用コードは、リエントラントである ことなんて要求されないから、ローカル変数をautoに統一だなんて DOSとかの貧弱なメモリ環境のコード書いてた時の戒律だぜw 実行環境はメモリ余りまくりのWindowsXPだというのに・・・。 それをやらないのってひょっとして バカなの?
629 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 11:57:23 ] わざわざ似た文面で返すところを見ると、よっぽど悔しかった模様。
630 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 12:00:31 ] >>623 すいません、実行すると配列の最後に0が入っちゃうんですけど。 配列の長さも9になってしまいます。
631 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 12:16:42 ] 628は627をわかりやすく補足しただけだろ
632 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 12:20:30 ] >>320 >>593 誰もやらない理由って言うかさ、問題文と提示コードの内容が違うからじゃね 提示コードで処理してる data[3][Y_SIZE][X_SIZE]ってさ、明らかにPNMフォーマットじゃ無い しかし問題文はPNMフォーマットを利用って書いてある 意味不明だよ、提示コードも良く分らずに君が書いたのか?
633 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 12:22:59 ] スレッドセーフを意識しないのが最近の流行なんだ? よし、俺も関数内static変数バンバン使うぜ!
634 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 12:46:15 ] >>592 C++ならこんな感じ kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6910.txt
635 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 13:07:10 ] >>320 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6911.c
636 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 13:09:47 ] >>632 8行目のPS3をP3にし、 21行目の%dの後ろにスペースを一個追加すれば、 ppmを吐くようになる。
637 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 13:16:15 ] その上で、16行目を以下の4行で置き換えればとりあえずsinカーブを書くようになるよ。 for (x = 0; x < X_SIZE; x++) { y = 256 / 6.28 * sin(x / 256.0 * 6.28) + 128; data[0][y][x] = 255; }
638 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 13:17:08 ] 連投すまん、 #include <math.h> も忘れずに。
639 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 13:30:50 ] 円を角煮は、パラメトリック表示した円の式を使うのが楽。 (ただし、あまり美しくはかけない。) double t; for (t = 0; t < 6.28; t += 0.01) { x = 128 * cos(t); y = 128 * sin(t); data[0][y][x] = 255; } ぐらいでどうかな。 渦巻きは、半径(ここでは128)をtにあわせて変化させてやれば良い。
640 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 13:37:50 ] 不動小数点数をループカウンタに使うなよ。 横着しないでpiから計算すれ。
641 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 13:39:04 ] >>640 それぐらいは許容範囲にしてやれw
642 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 14:28:14 ] 1] 授業単元: プログラミング [2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6912.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VC6.0 [3.3] 言語: C++ [4] 期限: 2008/6/17 [5] その他の制限:問題文の制限のみ なんだかもう頭の中がごちゃごちゃになってきました 御教授お願いしますorz
643 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 14:52:12 ] >>642 #include<stdio.h> int main() { int a[10], i, *pa, *pb; for(i = 0; i < 10; i ++) a[i] = i; pa = a; /* a と &a[0] のどちらでも可 */ printf("a[0]=%d\n", pa[0]); /* pa[0] と *pa のどちらでも可 */ printf("a[4]=%d\n", pa[4]); /* pa[4] と *(pa+4) のどちらでも可 */ pb = a+5; /* a+5 と &a[5] のどちらでも可 */ printf("*(pb-2)=%d\n", *(pb-2)); /* *(pb-2) と pb[-2] のどちらでも可 */ return 0; }
644 名前: ◆bVi8L9tS1c mailto:sage [2008/06/15(日) 18:29:50 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6913.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VC6.0 [3.3] 言語: C [4] 期限: 本日24時まで [5] その他の制限:出来るだけ簡素に すいません、よろしくお願いします
645 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:37:20 ] >>644 #include <stdio.h> int char2int(const char *s); int main(void){ char s[]="123"; int t; t = char2int(s); printf("文字列: %s \n", s); printf("数値: %d \n", t); return 0; } int char2int(const char *s){ int n = 0; while(*s) n = n * 10 + (*s++ - '0'); return n; }
646 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:38:36 ] >>644 #include <stdio.h> #include <stdlib.h> int char2int(char const *s); int main(void){ char s[]="123"; int t = char2int(s); printf("文字列: %s\n", s); printf("数値: %d\n", t); return 0; } int char2int(char const *s){ return atoi(s); }
647 名前: ◆nOwZY.WgD2 mailto:sage [2008/06/15(日) 19:45:02 ] [1] 授業単元:基礎プログラミング [2] 問題文: (1) char*pstrというchar型のアドレスを宣言して、256バイトのメモリ領域を割り当てます。 割り当てたメモリ領域に以下のような文字を入れ、表示させなさい。 I'll finish this book today. (2) (1)で割り当てたメモリ領域を512バイトに拡張しなさい。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ:VC 6.0 [3.3] 言語:C [4] 期限: 今日中でお願いします。 [5] その他の制限: malloc関数を使ってください。
648 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 19:47:08 ] reallocは使用可能?
649 名前: ◆bVi8L9tS1c mailto:sage [2008/06/15(日) 19:47:15 ] >>645-646 ありがとうございました
650 名前: ◆nOwZY.WgD2 mailto:sage [2008/06/15(日) 19:48:17 ] すみません書き忘れてました。 (2)はrealloc使用OKです。
651 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 19:53:43 ] >>647 #include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { char *pstr; pstr = malloc(256); strcpy(pstr, "I'll finish this book today."); fputs(pstr, stdout); pstr = realloc(pstr, 512); return 0; } エラーチェックは省略。
652 名前:231 mailto:sage [2008/06/15(日) 19:56:47 ] >>562 ありがとうございました!
653 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 20:18:54 ] >>320 >>593 既に>>635 で出てるが… kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6916.txt
654 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 20:59:58 ] >>651 freeつける癖つけましょう
655 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 21:04:29 ] 昔、あるfjで、exitの前に freeすべきかどうかで 大論争があったね。
656 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 21:12:49 ] [1] 授業単元:プログラミング演習 [2] 問題文: 次をポーランド記法を用いて計算し、標準出力に出力せよ。 * + 3.2 1.6 - 8 / 9.1 0.2 [3] 環境 [3.1] OS:WindowsVista64 [3.2] コンパイラ:bcc32 [3.3] 言語:C [4] 期限: 今日中でお願いします。 [5] その他の制限: ありません。
657 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 21:33:10 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク):() kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6917.txt kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6918.txt [3] 環境 [3.1] OS: (Windows/Linux/等々) Windows [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) Microsoft Visual Studio 2008 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 明後日 [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) 二つあります。両方お願いします。
658 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 22:05:10 ] >>656 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6919.txt
659 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 22:11:29 ] >>658 ありがとうございます。
660 名前:デフォルトの名無しさん [2008/06/15(日) 22:12:38 ] [1] 授業単元: [2] 問題文(含コード&リンク): CSVファイル内のレコードをスペース区切りで入力した文字列でアンド検索せよ (「あいう けこ」と入力すると「あいうえお,かきくけこ,さしすせそ」というレコードがヒットする) [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: VC 6.0 [3.3] 言語: C [4] 期限: 明日まで [5] その他の制限: ライブラリはなしで 一つの文字列での検索は出来るのですが、複数のときにどうしたらいいのかわかりません…。 今書いているソース↓ FILE *fp= fopen(IN_FILE, "r"); char buff[256]; //CSVファイルのデータ用 char srch[256]; //検索ワード用 gets(srch); //検索するワードの取得 int i = 0; //行数。その後の編集や削除処理でデータを特定するために使用 int line = 0; //ヒットした行数 while(fgets(buff, 256, fp) != NULL) { ++i; if(strstr(buff, srch) != NULL) { printf("%d%s", i,buff); ++line; } } fclose(fp);
661 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 22:31:12 ] >>657 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6920.c 問題017 単純選択法 発展
662 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 22:38:26 ] >>660 入力された文字列をスペース区切りで複数の文字列に分割する 分割した文字列ごとに検索する
663 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 22:44:22 ] >>657 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6921.c 問題018 単純交換法 配列は乱数で決定しているんで、適当に 自分で入力する形式に変更してたもう
664 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 22:45:15 ] >>657 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6922.c
665 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 22:47:57 ] >>663 は間違えた・・・
666 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 22:52:34 ] >>657 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6923.c 問題018 単純交換法
667 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 22:57:49 ] ソートネタ大人気だな
668 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 22:59:12 ] そーっと しておいてくれ・・・
669 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 23:09:04 ] ありがとうございます。
670 名前:657 mailto:sage [2008/06/15(日) 23:14:34 ] >>669 名前忘れました>>657 です。
671 名前: [2008/06/16(月) 00:14:46 ]
672 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 01:02:14 ] >>623 がいるからIT(笑)って言われるんだよ
673 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 01:09:29 ] >>462 掘り返してすいません 何故さきに余りを求めて足して最後に1000以上なら1000を引くのかがわかりません どうしてその考えにいたるのかが分かりません できれば詳しく説明して欲しいのですがよろしいでしょうか?
674 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 01:11:56 ] [1] 授業単元:C言語入門 [2] 問題文:二次方程式 ax2+bx+c=0に適当なa,b,cを与えて もし実数解をもつならば 解を計算して表示し、 虚数解であれば「実数解をもちません」と表示 するような、プログラム if-else文を使って作成せよ [3] 環境 [3.1] OS: (WindowsXPです [3.3] 言語: (Cになります。 [4] 期限: ([2008年6月16日10:00まで] になります(´;ω;`) よろしくお願いいたします。。
675 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 01:21:01 ] #include <stdio.h> #include <math.h> int main(void) { double a, b, c, d; scanf("%lf%lf%lf", &a, &b, &c); d = b * b - 4 * a * c; if(d < 0) printf("実数解をもちません\n"); else if(d > 0) printf("%f, %f\n", (-b + sqrt(d))/ (2*a), (-b-sqrt(d)) / (2*a)); else printf("%lf\n", -b / (2 * a)); return 0; }
676 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 01:22:01 ] >>675 っ a==0
677 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 01:22:07 ] >>673 > 何故さきに余りを求めて足して まともに計算したら巨大な数になって、intもlongも超えちゃう。 最終的に下3桁を求めればいいのだから、 乗算と加算だけなら下3桁の範囲だけで計算していれば十分。 合同式とかいうんだっけ?あまり詳しくないけど。 > 1000以上なら1000を引くのか rtは2000未満なので、余りを求めているのと同じ。
678 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 01:27:33 ] >>673 1 + 4 + 27 + 256 において、10で割った余りを求めることにしよう。 1^1 と 2^2 は10を越えていないんでそのままでおk。この時点で余りの合計は5。 3^3は27で10を越え、10で割った余りの7のみを残しておk。5+7=12、 ここで合計も10を越えたから10で割った余りの部分を残して2。 4*4 = 16 は10で割った余りの6のみ残して、次は 本来は16*4 = 64 だが、前の6に4を掛けて24で4のみ残しておk、さらにもう一度 本来は64*4 = 256 だが、前の4に4を掛けて16で6のみでおk 2+6 = 8で、答えはあっているじゃろう。 そうやって、10で割った余りの部分だけを残してべき乗を継続しても成り立つのが分かる。
679 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 01:33:32 ] #include <stdio.h> #define MAX 4 #define MOD 10 int main(void) { int i, j, rt = 0; for(i=1; i<=MAX; i++) { int r = 1; for(j=0; j<i; j++) r = (r * i) % MOD; rt += r; if(rt >= MOD) rt%=MOD; } printf("%d\n", rt); return 0; } ちょいと拝借して、このソースの MAX 、 MOD を適当に変えてみ。 理屈が成り立つことが分かるから。
680 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 01:33:50 ] >>676 >二次方程式
681 名前: ◆nOwZY.WgD2 mailto:sage [2008/06/16(月) 01:35:35 ] >>651 error C2440: '=' : 'void *' から 'char' に変換できません。 1> この変換が可能なコンテキストはありません。 って出るんですけどどうしたらいいでしょうか
682 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 01:53:09 ] >>655 単に strdup() を無神経に使っていることに噛み付いただけなんですけれど‥‥‥。
683 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 02:17:03 ] >>681 明示的にキャスト汁 pstr=malloc(256); →pstr=(char *)malloc(256); pstr=realloc(pstr,512); →pstr=(char *)realloc(pstr,512);
684 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 02:19:57 ] >>681 エラーメッセージのコピペかソースコードのコピペで失敗してるんじゃない?
685 名前:デフォルトの名無しさん [2008/06/16(月) 02:20:47 ] C++だとvoid*を他のポインタ型に代入するときに明示的なキャスト必要なんだっけ?
686 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 02:20:58 ] >>681 C++ 扱いでコンパイルしてませんか?
687 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 02:47:08 ] [1] 授業単元:C言語入門 [2] 問題文:ある2つの実数aとbを入力し、aの数が3で割り切れる、 または、bの数が2で割り切れる場合のみに、それらの 四則演算を行い、その結果を表示するプログラムを作成せよ [3] 環境 [3.1] OS: WindowsXP [3.3] 言語: C [4] 期限: 今日中にお願いしたいです。。 よろしくお願いします。
688 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 02:50:03 ] >>687 整数ではなくて実数? 実数なら必ず2で割り切れるという扱いでおk?
689 名前: ◆nOwZY.WgD2 mailto:sage [2008/06/16(月) 02:53:04 ] >>683 それでできました、ありがとうございます><b
690 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 03:14:05 ] >>688 はい、実数で、 2で割り切れる扱いでお願いいたします(*´д`*)
691 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 03:27:09 ] >>687 #include<stdio.h> #include<stdlib.h> #include<ctype.h> int main(void){ char buf[256]; int i, chk, bufindex; double a, b; printf("Input a : "); scanf("%255s", buf); if(sscanf(buf, "%lf%n", &a, &bufindex)<1) return 1; for(i=0,chk=0;i<bufindex;i++) if(isdigit(buf[i])) chk+=buf[i]-'0'; if(chk%3!=0) return 2; printf("Input b : "); if(scanf("%lf", &b)<1) return 3; printf("a+b=%f+%f=%f\n", a, b, a+b); printf("a-b=%f-%f=%f\n", a, b, a-b); printf("a*b=%f*%f=%f\n", a, b, a*b); if(b) printf("a/b=%f/%f=%f\n", a, b, a/b); return 0; }
692 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 05:24:04 ] >>691 それでは「aの数」、「bの数」をどう解釈しても題意を満たさないのでは?
693 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 05:25:29 ] >>572 ありがとうございます! 助かりました 今日提出しにいこうと思います
694 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 05:58:25 ] [1] 授業単元: 入門 [2] 問題文(含コード&リンク): 1. {C1}=(a11 a12){b1} {C2}=(a21 a22){b2} ↑は行列の積です。 C=A・bの形でA,bはfloat型 これを求めるプログラムの計算です。 2. {d1}=(a11 a12)n乗{b1} {d2}=(a21 a22){b2} ↑は1と同じ行列の積ですが、Aのところがn乗となっています。 わかりにくくて申し訳ないですが、お願いします。 [3] 環境 [3.1] OS: vista [3.3] 言語:C [4] 期限: できるだけはやくほしいです [5] その他の制限: まだ、3ヶ月ほど習っただけでやったことがあるのは 演算と型、if、switch、do、while、for、配列、関数ぐらいです。
695 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 06:01:23 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク):() ポゴソートについて調査し、それを実演するプログラムを書け。 データ数N=10000の場合について、整数の一様乱数の整数配列を作成してから それをポゴソートし、結果がソートされているかをプログラムでチェックする。 配列を作成した時点からソートが完了した時点までにかかった時間をミリ秒単位で測定し、 処理にかかった時間を出力せよ。10回実行し、かかった時間を表にし、平均時間も計算し、 プログラムコードと共に提出せよ。 [3] 環境 [3.1] OS: linux [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) GCC [3.3] 言語: (C/C++/どちらでも可 のいずれか) C [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 本日中 [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) 乱数は起動の度に異なるようにすること。乱数配列の出力、整列済み乱数配列の出力は不要とのことです。
696 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 06:16:46 ] ボゴソートなら知ってるがポゴソートは知らないな
697 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 06:22:04 ] 意味は通じているのにいちいち誤字を指摘するか。 格の低い男だな。
698 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 06:22:24 ] データ数10000のボゴソートなんて正気じゃねえなw
699 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 06:25:37 ] ttp://ja.wikipedia.org/wiki/%E3%83%9C%E3%82%B4%E3%82%BD%E3%83%BC%E3%83%88 これは酷い。こんなのは授業の一部で、効率の悪い例としてさらっと話して 生徒は聞き流す程度で終わらせてしまえば良いものを、敢えて課題にするとは・・・ 嫌がらせか?
700 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 06:27:47 ] ボゴソート int check(int *a, int size) { int i; for(i=1; i<size; i++) if(a[i] < a[i-1]) return 0; return 1; } void bogo_sort(int *a, int size) { int i, j, temp; do { for(i=1; i<size; i++) { j = rand() / (RAND_MAX + 1.0) * (i + 1); temp = a[j]; a[j] = a[i]; a[i] = temp; } }while(!check(a, size)); }
701 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 06:56:02 ] 嫌らしい難問だナ まともとは思えないのでスルーがよろしいかと (一様乱数とはほど遠い線形合同法を使ったCのライブラリ乱数で N=10000もの順列を一様に生成すること自体至難の技なのだが)
702 名前:691 mailto:sage [2008/06/16(月) 09:25:54 ] >>687 >>691 は無かったことにして
703 名前:デフォルトの名無しさん [2008/06/16(月) 09:47:52 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):プログラムを、共振周波数を固定しCを変化させるプログラムに変更せよ 問題 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6925.c complex.txt ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6926.txt complex.h ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6927.txt [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: Visual C++(よくわかりません) [3.3] 言語: C [4] 期限: 2008/06/12 10:30 [5] その他の制限: RLC共振回路の問題です。先生に聞いてもよくわかりませんでした。 RとLを固定してやるそうです。急ぎです。よろしくおねがいします。
704 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 10:30:56 ] 無保証。自己責任で参考にしてね void main(void) { complex zin, ai; double v=10.,l=13.92e-3,c=0.01591e-6,pi=3.14159; double r,fr,f,q,w,x,za,aiabs; r=5; // fr=1./(2.*pi*sqrt(l*c)); // q=2*pi*fr*l/r; // printf("R=%lf fr=%lf Q=%lf¥n¥n",r,fr,q); printf("C(Farad) L(Henry) freq.(Hz) I(ampare) Zin(ohm)¥n"); // for(f=9000.;f<=11000.;f+=25.){ f=9000.0; for(c=1.0E-8;c<1.0;c*=1.001){ w=2.*pi*f; x=w*l-1./(w*c); zin=cmplx(r,x); za=cabso(&zin); ai=cmplx(v,0.0); ai=cdiv(&ai,&zin); aiabs=cabso(&ai); printf("C=%12.2lf l=%f f=%12.2lf %14.4lE %15.5lE¥n",c,l,f,aiabs,za); } getchar(); return ; }
705 名前: ◆rR6EHrq.2w [2008/06/16(月) 13:38:07 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク):下記のプログラムを参考にし、f(x)=2cos(x)-x/8=0の数値解を求めるプログラムを作成せよ ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6928.txt [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: VC6.0 [3.3] 言語: C [4] 期限: 2008/06/16 14:30 [5] その他の制限:出来る限り簡単なものでお願いします
706 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 14:32:39 ] >>705 問題のタイプが全然違うので、参考(マウスで選択して、キーボードからちょこちょこっと入力)にして解くことは 期待できないね。 この問題を出した奴はよほどのバカだ。まだ>>695 を出したアホのほうがマシ まともに相手せず、「氏んだほうがいいよ」と白紙のレポートなりメールなり出すのが吉かと
707 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 15:11:57 ] >>705 微分を知っていれば10秒ほどでできるよ。 f()の中身をreturn 2 * cos(x) - x / 8.;にしてdf()の中身をreturn -2 * sin(x) - 1 / 8.;にするだけだ。
708 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 17:10:40 ] [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク):(kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6929.txt 上記のソースコードをキューを使い幅優先探索するプログラムに変更せよ。 [3] 環境 [3.1] Linux [3.2] gcc [3.3] 言語:C [4] 期限:明後日まで