1 名前:デフォルトの名無しさん [2009/06/24(水) 23:28:21 BE:454421568-DIA(282072)] あなたが解けない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++の宿題片付けます 127代目 pc12.2ch.net/test/read.cgi/tech/1244449887/
577 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 03:40:22 ] typedef struct{ int bunshi, bunbo; }bunsu; bunsu* bunsu_seki(bunsu* A,bunsu* B) { if(A == NULL) return NULL; if(B == NULL) return NULL; bunsu C; C.bunshi = A->bunshi * B->bunshi; C.bunbo = A->bunbo * B->bunbo; return &c; }
578 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 03:42:02 ] あーーーーーーーーーーーーすまん>>577 は無しで typedef struct{ int bunshi, bunbo; }bunsu; bunsu* bunsu_seki(bunsu* A,bunsu* B) { if(A == NULL) return NULL; if(B == NULL) return NULL; bunsu* C = (bunsu*)malloc(sizeof(bunsu)); if(C == NULL) return NULL; C->bunshi = A->bunshi * B->bunshi; C->bunbo = A->bunbo * B->bunbo; return C; }
579 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 03:42:34 ] >>569 (2) bunsu bunsu_seki(bunsu a, bunsu b) { a.bunsi *= b.bunsi; a.bunbo *= b.bunbo; return a; } >>577 だめじゃね?
580 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 03:45:31 ] >>578 どんどん話がややこしい方にすすんでるし題意は満たしてないし
581 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 03:50:55 ] いかん ついつい・・>>552 の(2)は>>579 でいいね >>577 >>578 はなしで
582 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 03:52:17 ] ポインタで渡す方が処理が速い伝説に惑わされたらいかんよ
583 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 03:55:52 ] 実際どっちがいいんだろうね もっとでかい構造体をリストにして扱うことがほとんどなのでついつい
584 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 03:56:21 ] >>574 何か消し忘れた#defineが残ってるな あれは不要だから消しとけ
585 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 03:57:50 ] リストにするなら隣のポインタ持たないとダメだからしょうがないけど。 試しにベンチでもやってみたら? >>578 のはちゃんと呼び出し側でfreeしないとメモリどんどん使うから気をつけてね
586 名前:デフォルトの名無しさん [2009/07/04(土) 04:25:38 ] [1] 授業単元:C+ [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9676.txt [3] 環境 OS: vista コンパイラ名とバージョン: gcc 言語:C [4] 期限: 一週間 [5] その他の制限: 4題あります。 テストの類題なのでなるべく簡単に題意を満たす解答をお願いします。
587 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 04:28:35 ] >>559 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9677.c
588 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 05:08:00 ] >>586 1. int sum1toN(int n) { int i, s; for(i = 1, s = 0; i <= n; i++){ s += i; } return s; } 2. #include <stdio.h> #define PAI 3.14159 void circle(double r, double *enshu, double *menseki); int main(void){ double r, enshu, menseki; printf("半径を入力 >>"); scanf("%lf", &r); circle(r, &enshu, &menseki); printf("円周 = %f 面積 = %f\n" , enshu, menseki); return 0; } void circle(double r, double *enshu, double *menseki) { *enshu = 2.0 * PAI * r; *menseki = PAI * r * r; return; }
589 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 05:08:42 ] >>586 続き 3. #include <stdio.h> int main(void) { int a[8] = { 1, 2, 3, 4, 5, 6, 7, 8 }, i; for(i = 0; i < 8; i++){ if(7 - 2 - i >= 0) a[7 - i] = a[7 - 2 - i]; else a[7 - i] = 0; } for(i = 0; i < 8; i++) printf("a[%d] = %d\n", i, a[i]); return 0; } 4. #include <stdio.h> int main(void){ char ch[81], max; int i; gets(ch); for(i = 0, max = '\0'; ch[i] != '\0'; i++){ if(ch[i] > max) max = ch[i]; } printf("文字コード最大は%c <%d>\n", max, max); return 0; }
590 名前: ◆/91kCCQXBo mailto:sage [2009/07/04(土) 08:06:02 ] >>547 0123 の逆順 3210 jbbs.livedoor.jp/bbs/read.cgi/computer/32221/1246384344/13
591 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 11:41:47 ] >>586 (1) int sum1toN(int n){ return (n + 1)*n/2; } オーバーフローしたら知らん。
592 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 11:58:38 ] >>591 仕様は満たしているが、出題者の意図に沿ってないような…。
593 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 12:03:29 ] >>592 やっぱ模範解答は>>588 だよね。 こっちはこんなのもあるよ程度で。
594 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 12:40:12 ] >>586 (3) #include <stdio.h> #define SHIFT_NUM 2 #define ARRAY_SIZE 8 int main(void){ int a[ARRAY_SIZE] = {1,2,3,4,5,6,7,8}, i, j; for(i = 0; i < SHIFT_NUM; ++i){ for(j = ARRAY_SIZE - 1; j > 0; a[j] = a[j-1], --j); a[0] = 0; } for(i = 0; i < ARRAY_SIZE; ++i) printf("a[%d]=%d\n", i, a[i]); return 0; } 簡単かどうかと言われるとどうなんだろう。
595 名前:デフォルトの名無しさん mailto:age [2009/07/04(土) 13:34:22 ] [1] 授業単元: 関係演算子 [2] 問題文(含コード&リンク): どんな計算式でもいいが、10で割ると余りが0になる場合だけをprintf文で表示させろ [3] 環境 [3.1] OS: (Windows) [3.2] コンパイラ名とバージョン: gcc ) [3.3] 言語: (C/C++/どちらでも可) [4] 期限: 明後日まで [5] その他の制限: 制限なし
596 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 13:53:08 ] >>595 #include <stdio.h> int main(void){ int n = 100; if( n%10 == 0 ){ printf("%dは10の倍数\n"); } return 0; } こういう意味でおk?
597 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 13:54:51 ] >>596 訂正: printf => printf("%dは10の倍数\n", n);
598 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 14:01:36 ] どんな計算式の、計算式が重要。n=100か?
599 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 14:09:58 ] >>598 どんな10で割ったら余りが0になる数値を特定しろ 特定方法(計算式)はどんなのでも構わない って意味じゃないの?
600 名前:598 mailto:sage [2009/07/04(土) 14:15:41 ] 商を用いて、10で割ると余りが0になる場合だけをprintf文で表示させろ <= これが設問じゃないかと どんな計算式でもいいが商を用いて、10で割ると余りが0になる場合だけをprintf文で表示させろ
601 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 14:23:18 ] >>587 ありがとうございます。
602 名前:599 mailto:sage [2009/07/04(土) 14:28:30 ] >>600 int n1, n2 n1 = 123; /* 調査対象 */ n2 = n1 / 10; n2 *= 10; if(n1 - n2 == 0){ 表示処理 } こんなん?
603 名前:aka [2009/07/04(土) 14:33:17 ] 情報オリンピックの2008年度予選問題3の連鎖のプログラムを教えてください。 www.ioi-jp.org/joi/2008/2009-yo-prob_and_sol/2009-yo-t3/2009-yo-t3.html
604 名前:598 mailto:sage [2009/07/04(土) 14:33:30 ] ループすべき。 #include <stdio.h> int main() { int ans; for(ans=-21;ans<=21;ans++) if(!(ans%10)) printf("%d ",ans); else printf(".. "); }
605 名前: ◆/91kCCQXBo mailto:sage [2009/07/04(土) 14:58:08 ] jbbs.livedoor.jp/bbs/read.cgi/computer/32221/1246384344/14 >>538 課題1 % gcc -o space space.c #include <stdio> >>538 課題2 % gcc -o innpro innpro.c #include <stdio> >>538 課題3 % gcc -o janken janken.c char janken_com(int seed){ int t; srand(seed); //乱数の種(seed)を設定. t=rand()%3; //rand()は整数の乱数を返す関数.rand()%3により0から2の乱数を発生させることができる. if(t==0) return 'g'; if(t==1) return 'c'; return 'p'; }
606 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 16:03:08 ] [1] 授業単元:C [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9680.txt kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9678.txt [3] 環境 [3.1] OS: XP [3.2] コンパイラ名とバージョン:Visual Studio 2008 [3.3] 言語: C [4] 期限: 7月7日 [5] 番号の場所を書き直すようお願いします。
607 名前:デフォルトの名無しさん [2009/07/04(土) 16:07:08 ] [1] 授業単元:プログラミング言語2 [2] 問題文(含コード&リンク) 簡単なデータベース機能を持つプログラムを作成しなさい.対象となるデータは自分で考えてください. (住所録,商品の在庫,図書,ワールドカップの勝敗....) 以下の要件を示します. 1. ファイルからデータを読み込む機能をつけること. 2. データは4つ以上の項目を保持させること. (住所録では、「名前」「住所」「郵便番号」「電話番号」等で4項目以上) 3. 並び替えの機能をつけること.また並び替える項目が指定できること. 4. 各項目についてデータの検索を行う機能をつけること.また,検索条件を組み合わせることができること. (住所録なら,「郵便番号」が 399 で始まって,かつ,「電話番号」が 026 で始まる 等) 5. データは半角英数字(英語やローマ字)で扱ってよい 6. データの追加ができること. 7. データの削除ができること.削除は上記の検索と組み合わせることで,ある条件に合致したデータを削除できること. 8. 追加・削除した結果をファイルに保存できること. [3] 環境 [3.1] OS: windows [3.2] コンパイラ名とバージョン: cygwinのgccです。 バージョンはわかりません。 [3.3] 言語: C [4] 期限: 2009年7月13日まで [5] その他の制限: 双方向リストまで、終わりました。 対象となるデータは住所録でお願いします。 プログラムに説明を付けてくれると、助かります。 よろしくお願いします。
608 名前: ◆/91kCCQXBo mailto:sage [2009/07/04(土) 16:33:55 ] >>595 #include <stdio.h> int main(int argc, char *argv[]) { int i, c; FILE *fp; if(argc < 2) { printf("Usage : %s filename.ext", argv[0]); return 1; } if((fp=fopen(argv[1],"r")) == NULL) { printf("%s file open error!", argv[1]); return 1; } puts("ASCIIコードが10の倍数の時の、ファイル先頭からの位置:"); for(i=1; (c=getc(fp)) != EOF; i++) { // 結果の値はファイルから読み込む if(!(c%10)) printf("%dx%d ", i, c); // 結果の値が、10 で割ると余りが0になる場合だけを表示 // else if(!(i%10)) printf("x%d ", c); // 繰返しの回数が、10 で割ると余りが0になる場合 // else printf("."); // その他の場合 } fclose(fp); }
609 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 18:07:38 ] >>603 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9681.c
610 名前: ◆/91kCCQXBo mailto:sage [2009/07/04(土) 18:57:23 ] >>606 リストを用いて個人データを格納する表を作成。(穴埋め問題) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9682.c
611 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 19:29:17 ] >>609 これ「落ちた状態」をいちいち作って数えたんだけど よく考えたらその必要なかった…。無駄無駄無駄ー!
612 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 19:53:43 ] 未回答文plz
613 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 20:12:41 ] >>603 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9683.c >>609 で作ったやつの修正版
614 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 20:55:21 ] >>607 >8. 追加・削除した結果をファイルに保存できること. これって追加・削除の「履歴」じゃなくて単に「現在のデータ」でいいんだよね?
615 名前:デフォルトの名無しさん [2009/07/04(土) 21:21:31 ] [1] 授業単元: C言語 [2] 問題文 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9685.txt これを参考に、100人以内の生徒ID、名前を入力するプログラムを作る [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VisualC++ [3.3] 言語 C [4] 期限: 7月6日 [5] その他の制限 ソースプログラムにある形の関数を使うこと
616 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 21:34:14 ] >>615 これでいいのかな #include<stdio.h> #include<string.h> #define SIZE 100 略 int main(){ int i; student_type students[SIZE]; for( i = 0; i < SIZE; ++i ){ read_student( &students[i] ); } }
617 名前:デフォルトの名無しさん [2009/07/04(土) 22:26:52 ] >>613 高校生でも分かる簡単なプログラムになりませんかね? 図々しくてごめんなさい… ぜひお願いします。
618 名前:613 mailto:sage [2009/07/04(土) 22:37:57 ] >>617 いや、そう言われても… この板の住人なら高校生でも>>613 は読めると思うが 一般的な高校生レベルってどんなのよ まあ、どの行がわからんのか言ってみれ
619 名前:デフォルトの名無しさん [2009/07/04(土) 22:52:23 ] ホント無知で申し訳ないっす。。 printf("%s : %d --> %d\n", filename, N, min); free(array); fclose(fp); } int check_okikata(int *array, int size, int index, int color) { らへんがよく分かりません どういう意味でしょう?
620 名前:デフォルトの名無しさん [2009/07/04(土) 23:30:29 ] >>614 そうです。 項目が削除されたリストと、項目が追加されたリストを出力します。
621 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 23:35:28 ] >>619 つまり動的な配列の確保(mallocとfree)がわからないんだな じゃあ固定配列で書き換えるから
622 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 23:56:20 ] >>619 malloc()とfree()を使わないようにした kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9686.c
623 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 00:18:10 ] >>620 えっ?2つのリストが出力されるの!? 追加や削除をして変更された「現在のデータベースのデータ」のリスト1つじゃないの?
624 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 01:35:36 ] [1]数値情報解析 [2]ガウス−ザイデル法によりn元1次方程式を解くプログラムを作りなさい。 [3] [3.1]Windows [3.2]Visual Studio 2008 [3.3]C [4]2009年7月15日 [5]ほぼ素人なので、少しでも優しい表現にしていただけるようよろしくお願い致します。 あと、パワーポイントでこのプログラムのフローチャートを書いていただければありがたいです。
625 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 02:42:19 ] >>624 >>162 問題 >>174 >>177 >>183 解答
626 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 02:57:38 ] ガウスザイデル法って反復法だからガウス法と違うだろ
627 名前:デフォルトの名無しさん [2009/07/05(日) 03:19:53 ] C++なんですが、 文字変数aの中身が'a'ならば『aが格納されています』と表示させ、'a'でないならば、 『'a'でない文字が格納されています』と表示させるプログラムを作成せよ 誰かお願いします #include<iostream> using namespace std; int main(){ return 0; }
628 名前:デフォルトの名無しさん [2009/07/05(日) 03:21:02 ] >>627 ですが、間違えました。 文字変数aの中身→文字変数mの中身 でした
629 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 03:22:32 ] ファイルから読み込みするの? それともキーボードの入力を待って入力された文字を判断するの?
630 名前:デフォルトの名無しさん [2009/07/05(日) 03:26:02 ] >>627 文字変数mの中身が'a'ならば『aが格納されています』と表示させ、'a'でないならば、 『'a'でない文字が格納されています』と表示させるプログラムを作成せよ としか書かれてないんですよね。 ただ書き始めと終わりは下の定型文みたいのを使うんですが #include<iostream> using namespace std; int main(){ return 0; }
631 名前:デフォルトの名無しさん [2009/07/05(日) 03:26:46 ] >>630 ですが間違えました >>627 じゃなくて>>629 でした
632 名前:デフォルトの名無しさん [2009/07/05(日) 03:55:39 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 下に示すように,非負の整数を次々と読み込んでいき,各値の二乗値の和を表示するプログ ラムを作成せよ.なお,整数の読み込みは,負の整数を読み込んだ段階で終了するものとし, その数の二乗値の和は加算しないものとする. 整数を入力してください 整数1 : 3 整数2 : 5 整数3 : -1 二乗値の合計は34 です. [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:Visual Studio 2008 [3.3] 言語: C [4] 期限: 09年07月07日 [5] その他の制限:なし。
633 名前:デフォルトの名無しさん [2009/07/05(日) 04:00:22 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 下に示すように,行数と列数を読み込み,1 行目には1234567890…を列数の個数だけ,2 行 目には2345678901…を列数の個数だけ,…と表示するプログラムを作成せよ. ファイル提出: 実行ファイル 何行ですか: 7 何列ですか: 12 123456789012 234567890123 345678901234 456789012345 567890123456 678901234567 789012345678 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:Visual Studio 2008 [3.3] 言語: C [4] 期限: 09年07月07日 [5] その他の制限:なし。
634 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 04:02:16 ] >>632 #include <stdio.h> int main(void) { int i = 0, sum = 0, n; while(1) { printf("整数%d :", ++i); scanf("%d", &n); if(n < 0) break; sum += n * n; } printf("二乗値の合計は%d です.\n", sum); return 0; }
635 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 04:06:28 ] >>633 #include <stdio.h> int main(void) { int i, j, n, m; printf("何行ですか:"); scanf("%d", &n); printf("何列ですか:"); scanf("%d", &m); for(i=1; i<=n; i++) { for(j=0; j<m; j++) printf("%d", (i+j)%10); putchar('\n'); } return 0; }
636 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 06:59:52 ] >>627 #include<iostream> using namespace std; int main(){ char m; if (m == 'a') cout << "『aが格納されています』" << endl; else cout << "『'a'でない文字が格納されています』" << endl; return 0; }
637 名前: ◆/91kCCQXBo mailto:sage [2009/07/05(日) 09:01:09 ] >>627 関数が使えるなら。 #include<iostream> using namespace std; namespace { int m; void sub(void) { if (m == 'a') cout << "『aが格納されています』" << endl; else cout << "『'a'でない文字が格納されています』" << endl; } } int main(){ m='a'; sub(); m='x'; sub(); return 0; }
638 名前: ◆/91kCCQXBo mailto:sage [2009/07/05(日) 09:47:08 ] >>627 テンプレートの中だけ書く。>>626 は無しで。 char m = '\a'; int i; char data[4]={'m', 'a', 'i', 'n'}; for(i=0; i<=sizeof data/sizeof(char); m = data[i++]) { if (m == 'a') cout << "『'a'が格納されています』\n"; else cout << "『'a'でない文字が格納されています』\n"; }
639 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 10:42:52 ] そのループはギャグのつもり?
640 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 10:51:16 ] 1週間ぐらい前に文字列表示とか、四則演算とか聞いてた人でしょ。 授業は if 文に入ったらしいが、何も分からないから全部聞くと。
641 名前: ◆/91kCCQXBo mailto:sage [2009/07/05(日) 12:35:40 ] >>595 ループか関数のどちらかは使う必要あり。 #include <stdio.h> void div10(int c) { if(c%10) ; else printf("%dは10で割り切れる数\n", c); } int main() { div10(1); div10(20); div10(21); div10(30); div10(13); return 0; }
642 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 13:10:10 ] >>638 そのおソースは頂けない せめてこうしよう #include <iostream> using namespace std; int main() { char* data = "main"; for(char* ite = data;*ite != '\0';ite++){ if(*ite == 'a') cout << "aが格納されています" << endl; else cout << "'a'でない文字が格納されています" << endl; } return EXIT_SUCCESS; }
643 名前: ◆/91kCCQXBo mailto:sage [2009/07/05(日) 13:29:31 ] >>627 どお? #include <iostream> using namespace std; int main(){ int i = 0; char m, data[] = {'m', 'a', 'i', 'n'}; while( m = data[i], i++ < sizeof data/sizeof(char) ) { if (m == 'a') cout << "『'a'が格納されています』\n"; else cout << "『'a'でない文字が格納されています』\n"; } return 0; }
644 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 13:53:38 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): モンテカルロ法を用いて、円周率を計算しなさい。なおランダムに打つ点は1000点用いること。 また上記プログラムを改良して、50点打つごとに、真の円周率(ここでは3.1415926とします) との差を求め、その差をスペースと*を用いてグラフ化しなさい。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:7/9 [5] その他の制限: 申し訳ありませんがよろしくお願いします
645 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 16:52:12 ] >>644 喜べ、これでキミは英雄だ kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9687.zip hit-or-missは中心(0,0)半径1の円に入るかどうかで判定した 一様乱数はC標準のものを用いた おまけとして100000回試行したデータも付けておいた この判定法と乱数では試行回数が1000回では不十分であると分かるはずだ 改善は他の住人に任せた
646 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 17:11:25 ] >>535 遅くなりました ありがとうございます><
647 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 17:40:26 ] >>638 sizeof data/sizeof(char) >>639 が指してるのがこれかどうか分からんけど、とりあえず気持ち悪い
648 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 17:43:21 ] >>647 固定配列のサイズを表現する普通の記述だが なんで気持ち悪いと思う?
649 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 17:46:18 ] そっか。 俺ならsizeof(data)/sizeof(data[0])と書くから。 片方にしか括弧つけない意味も分からないし。
650 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 17:49:14 ] ああ、そういう意味なら気持ち悪いな 確かに
651 名前:デフォルトの名無しさん [2009/07/05(日) 17:51:08 ] [1] 授業単元:数値計算 [2] 問題文(含コード&リンク):Ax=bの連立1次方程式の解を求めるプログラムを作成しなさい。 (この行列を使用してください A={{10,-9,0,0,0,0,0}, {-9,17,-8,0,0,0,0}, {0,-8,17,-9,0,0,0}, {0,0-9,13,-4,0,0}, {0,0,0,-4,12,-8,0}, {0,0,0,0,-8,10,-2}, {0,0,0,0,0,-2,2}} b={0,0,0,0,0,0,7}) [3] 環境 [3.1] OS: Windows Vista [3.2] Visual Studio 2008 [3.3] 言語: C++ [4] 期限: 2009年7月1日まで] [5] その他の制限:特にありませんがなるべく簡単なものでお願いします 解が{0.37,0.41,1.28,2.06,3.81,4.69,8.19}に近いものになるはずです。
652 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 17:53:09 ] >>651 既に期限過ぎてるんだが
653 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 17:53:15 ] あとsizeof(char)は常に1だから冗長とかいう奴もよくいるねw おれは冗長でも書くべきと思う派
654 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 17:54:36 ] >>650 どういう意味なら気持ち悪くないの?
655 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 17:57:09 ] >>648 読みにくいし i <= sizeof〜 だと境界越えてるじゃん >>642 とどっちが読みやすいよ
656 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 18:00:36 ] うわあほんとだ。。。 sizeof記述の気持ち悪さに気を取られすぎた俺バカ
657 名前:デフォルトの名無しさん [2009/07/05(日) 18:18:03 ] <<651 私の計算ミスでした。すいません
658 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 18:55:03 ] >>651 >>162 問題 >>174 >>177 >>183 解答 何の計算ミス?
659 名前:デフォルトの名無しさん [2009/07/05(日) 19:38:56 ] >>623 返信遅れてすみません。 追加、削除された1つのリストで大丈夫です。
660 名前:デフォルトの名無しさん [2009/07/05(日) 20:49:18 ] [1] 授業単元:情報 [2] 問題文(含コード&リンク): パソコン甲子園 2008 予選問題 問7 ふしぎな虫 www.pref.fukushima.jp/pc-concours/2009/03/pdf/2008yosen.pdf [3] 環境 [3.1] OS: Windows xp [3.2] コンパイラ名とバージョン:Visual Studio 2008 [3.3] 言語: C [4] 期限: 7月6日 よろしくお願いします。
661 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 21:34:32 ] >>645 ありがとうございます。 凄い。誤差ってなかなか安定しないんですね ですが中身が問題分からなかった低能では いささか理解が追いつきません このまま出したら本当に英雄になっちゃいそうです
662 名前: ◆/91kCCQXBo mailto:sage [2009/07/05(日) 21:47:10 ] >>644 差の絶対値をグラフにした。 #include <stdio.h> #include <stdlib.h> #define PI 3.1415926 int main() { int i, j, imax = 1000; /* 乱数の発生回数 1000 */ int n, inter = imax/20; /* グラフの表示インターバル 50 */ float x,y,pi=PI,eps,mul; for(n=0, i=1; i<=imax; i++) { /* 0以上1未満の乱数を生成する */ x = rand()/((float)RAND_MAX+1); y = rand()/((float)RAND_MAX+1); /* 0<=x,y<=1の範囲にある中心原点半径1の扇形の中に乱数による点が入ったらカウントする */ if( x*x + y*y < 1) n++; if( i%inter ) ; else { /* 円周率の計算とグラフの表示 */ pi = (float)n/i*4; /* 半径1の円の面積すなわち円周率 */ eps = PI-pi; eps = (eps<0)? -eps : eps; if(i==inter) mul = 70/eps; /* 1回目はグラフの倍率を決める */ printf("%5.3f ", pi); for(j=eps*mul; j>=1; j--) putchar(' '); printf("*\n"); } } printf("PI=%f\n", pi); }
663 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 22:30:36 ] >>662 ありがとうございます コメントまで… 何度実行しても値が変わらない気がするのはそういう物ですか?
664 名前: ◆/91kCCQXBo mailto:sage [2009/07/05(日) 22:37:17 ] srand(time(NULL)); を、最初に呼べば毎回変わるはず、>>645 のように。
665 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 22:41:51 ] >>664 出来ました。が、ときたまグラフが崩れるので封印しときます 勉強になりました
666 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 23:08:32 ] >>234 で、>>251 さんに kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9608.txt というプログラムを書いて頂いたのですが、RAND_MAXがrand関数の利用に当たるとして 再提出になってしまいました。 rand_maxはrandのとる最大値とのことですが、これを使わないで同様の趣旨を実現するにはどうしたらよいのでしょうか?
667 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 23:14:25 ] RAND_MAXをINT_MAXに変える
668 名前:デフォルトの名無しさん [2009/07/05(日) 23:53:23 ] 2つの整数をキーボードから入力して、最初の数の方が小さい場合には、『最初の数の方が小さいか等しいです』と表示させて、大きい場合には、『後の数の方が小さいです』と表示させるプログラムを作成せよ #include<iostream> using namespace std; int main(){ return 0; } の中に入る文を作るんですが、どうすればいいですか。使うのはifとcoutとelseくらいだと思うんですが
669 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 23:54:46 ] >RAND_MAXがrand関数の利用に当たるとして 何ソレ ただの定数マクロでしょ?
670 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 00:24:57 ] >>666 関数の利用に当たる・・・だと・・・ 数学科で出された問題? だったらそのトンチンカンな主張も納得できるけど工学科だったら・・・
671 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 00:28:29 ] >>668 例はいらない。 // ↑C++テンプレート int a1, a2; cout << "2つの数を入力してください:"; cin >> a1 >> a2; if(a1<=a2) cout << "最初の数の方が小さいか等しいです\n"; else cout << "後の数の方が小さいです\n"; // ↓C++テンプレート
672 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 00:49:54 ] >>671 // ↑C++テンプレート // ↓C++テンプレート なんだよ、このコメントは。w まぁ、>>671 の予想通り、minを使うのが速いよってことですね。
673 名前: ◆jmI6IAV7WI [2009/07/06(月) 05:28:45 ] [1] 授業単元: 構造体 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9688.txt [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限: 7月10日 [5] その他の制限: よろしくお願いします
674 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 06:48:27 ] 書くとこ入力部だけじゃねーかw
675 名前: ◆jmI6IAV7WI [2009/07/06(月) 07:43:14 ] >>674 入力部だけでもお願いできないでしょうか 難しくて何がなんだかさっぱりわからないので すみません
676 名前: ◆/91kCCQXBo mailto:sage [2009/07/06(月) 14:11:15 ] >>673 1. printf("1番目のX Y座標をスペースを開けて入力して下さい:"); scanf("%lf%lf", &my_line.p1.x, &my_line.p1.y); printf("2番目のX Y座標をスペースを開けて入力して下さい:"); scanf("%lf%lf", &my_line.p2.x, &my_line.p2.y); printf("2点間の直線距離は:"); 2. 三角形の面積 area = fabs(t.p2.x * t.p3.y - t.p3.x * t.p2.y)/2; printf("1番目のX Y座標をスペースを開けて入力して下さい:"); scanf("%lf%lf", &my_triangle.p1.x, &my_triangle.p1.y); printf("2番目のX Y座標をスペースを開けて入力して下さい:"); scanf("%lf%lf", &my_triangle.p2.x, &my_triangle.p2.y); printf("3番目のX Y座標をスペースを開けて入力して下さい:"); scanf("%lf%lf", &my_triangle.p3.x, &my_triangle.p3.y); printf("3点で囲まれた三角形の面積は:");
677 名前: ◆/91kCCQXBo mailto:sage [2009/07/06(月) 14:25:27 ] >>624 ガウス・ザイデル法の計算方法 山本昌志 2005年12月16日 akita-nct.jp/yamamoto/lecture/2005/5E/Linear_eauations/ex_GaussSeidel_html/node2.html 必要なら以下にコメントも付けとく。仮にエクセルのPADでもいい? #if 0 for( j=1; j<=N; j++ ){ temp += a[i][j] * x[j]; } /* a[i][i] * newx + (temp - a[i][i] * x[i]) = b[i]; */ /* a[i][i] * newx = b[i] - (temp - a[i][i] * x[i]); */ newx = 1.0 / a[i][i] * (b[i] - (temp - a[i][i] * x[i])); #else for( j=1; j<=N; j++ ){ if( i==j ) continue; temp += a[i][j] * x[j]; } /* Xi(k+1) = 1/Aii * ( Bi - (Ai,1*X1(k) + Ai,2*X2(k) + ... + Ai,i-1*Xi-1(k) + Ai,i+1*Xi+1 + ... + Ai,n*Xn )) */ newx = (b[i] - temp)/a[i][i]; #endif