1 名前:デフォルトの名無しさん [2007/07/15(日) 22:31:51 ] あなたが解けない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++の宿題を片付けます 92代目 pc11.2ch.net/test/read.cgi/tech/1183511364/
76 名前:55 mailto:sage [2007/07/16(月) 19:05:29 ] >>58 ぐぐってみましたが意味不明でした… すいません、教えていただけますか?
77 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 19:06:56 ] >>63 が駄目ならこれも駄目ってことか OS無しって難しすぎだろ PlaySound("c:\\windows\\media\\chimes.wav", NULL, SND_SYNC | SND_FILENAME);
78 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 19:08:20 ] >>76 ./a.out 変換元ファイル 変換後ファイル名
79 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 19:10:28 ] >>64 出てきたバイナリのコマンドラインに対象テキストファイル名と出力先ファイル名を追記。 例えばコンパイルして出てきたプログラムがa.exe、暗号化するテキストがbefore.txt、 出力先をafter.txtとするなら a.exe before.txt after.txt でafter.txtに暗号化済みのファイルが出力される。 逆操作は不可。そういう意味では>>55 は要件を満たしていないね。 こんなとこに丸投げする人にいう事じゃないと思うけど こんくらいのソース読めないでこれからやっていけると思ってる?
80 名前:51 mailto:age [2007/07/16(月) 19:12:04 ] すいません やっぱり 自分でやってみます 自分で考えて解決しなきゃ成長しませんもんね・・・・・ 色々ありがとうございました。 >>71 さん、心使いは嬉しいのですが学校で研究を続けるつもりなので・・・・ それと学校名は出せません。ごめんなさい
81 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 19:15:45 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4638.txt [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc 3.4 [3.3] 言語: C [4] 期限: 明日まで [5] その他の制限: 出来る限り単純な方法で回答して下さると助かります。 よろしくお願いします。
82 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 19:16:44 ] 擁護するわけじゃないけど、コマンドライン引数の実際の使い方は教本によっちゃ物凄い投げやりだからな。 こんなんで分かればエスパーだろってぐらい。 で、分からんから後まわしにして課題出てくると四苦八苦するんだよな。
83 名前:デフォルトの名無しさん [2007/07/16(月) 19:16:53 ] >>80 ここの方達が手上げてるのを完成させるの難しくない? >>67 の行ってるUNIX板行った方がよくない?
84 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 19:18:28 ] >>81 前スレに同じのがあったから見てくるといいと思うよ。
85 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 19:20:27 ] LL構文解析懐かしすぎる
86 名前:デフォルトの名無しさん [2007/07/16(月) 19:27:12 ] >>29 だれかお願いします。 >>47 ,48ががんばってくれたけど「ポインタのポインタ」使用版でないと 駄目な課題なので分かる方お願いします。 >>47 ,48 ありがとうございます。
87 名前:56=57=60 mailto:sage [2007/07/16(月) 19:29:07 ] orz
88 名前:51 mailto:age [2007/07/16(月) 19:32:53 ] 自分も投げ出してたから人のこと言えないけど 時間かかってでも自分で考えて解決した方がいいと思う
89 名前:デフォルトの名無しさん mailto:unko [2007/07/16(月) 19:34:51 ] >>88 秀同って事でスレ終了 乙です
90 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 19:45:35 ] >>78 その通りやっても出来ない・・・なぜでしょうか
91 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 19:57:19 ] >>90 次の一連のコマンドを打ち込んだ結果を晒してみて echo hello>a.txt ./a.out a.txt b.txt echo $? cat b.txt
92 名前:91 mailto:sage [2007/07/16(月) 19:59:42 ] 最後に追加 ls -l a.out a.txt b.txt
93 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 20:00:57 ] C:\Documents and Settings\******>echo hello>a.txt C:\Documents and Settings\******>./a.out a.txt b.txt '.' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 C:\Documents and Settings\******>echo $? $? C:\Documents and Settings\******>cat b.txt cat: b.txt: No such file or directory こうなりました
94 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 20:02:44 ] C:\Documents and Settings\******>ls -l a.out a.txt b.txt ls: a.out: No such file or directory ls: b.txt: No such file or directory -rw-rw-rw- 1 user group 7 Jul 16 19:59 a.txt 追加の分はこうなりました コマンドプロンプトで実行しました
95 名前:91 mailto:sage [2007/07/16(月) 20:05:31 ] >>93 linux じゃなかったのかよ! echo hello>a.txt .\a.exe a.txt b.txt type b.txt dir
96 名前:デフォルトの名無しさん [2007/07/16(月) 20:08:41 ] 笑った。 どうみてもコマンドプロンプトかcygwinとかだね。
97 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 20:21:17 ] >>86 皆さんの回答を参考にして作ってみた。これでどうかな。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4639.txt
98 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 20:31:46 ] よく見てないけど。 if(buf[strlen(buf)-1] == '\n') buf[strlen(buf)-1] = 0; ↑ifで判定する必要ない。
99 名前:デフォルトの名無しさん [2007/07/16(月) 20:41:55 ] >>42 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4641.txt 参考コードは一部使用していない
100 名前:99 mailto:sage [2007/07/16(月) 20:52:38 ] >>42 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4642.txt 一部訂正
101 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 21:00:34 ] >>42 コンパイルしていない #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct _{ int r, i; } img; static img *ary=NULL; static int arysize; static int arylen; void putimg(img img){ if(arysize<=arylen){ arysize+=10; ary=realloc(ary, sizeof(img)*arysize); } ary[arylen++]=img; } int main(void){ img m; int i; for(;;){ scanf("%d,%d", &m.r, &m.i); if(m.r==1&&m.i==0) break; putimg(m); } for(m.r=1, m.i=i=0;i<arylen;i++){ printf("%d+%d*i\n", ary[i].r, ary[i],i); m.r=m.r*ary[i].r-m.i*ary[i].i; m.i=m.r*ary[i].i+m.i*ary[i].r; } printf("%d+%di\n", m.r, m.i); }
102 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 21:04:13 ] [1] 授業単元: プログラミング言語 [2] 問題文(含コード&リンク): • 区間[ a, b ]において連続なる関数f ( x) について,定積分の計算を行う • 適用する公式は,シンプソンの公式 S=h/3{y(0)+y(2n)+4{y(1)+y(2)+....+y(2n-1)}+y(2)+y(4)+.....+y(2n-2)} • f ( x)=1/(1+x2) • a=0, b=10, e=0.0000001の場合の積分値とnの値を表示する • 各変数(nを除く)の型はdoubleとする [3] 環境 [3.1] OS:windows xp [3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2005 [3.3] 言語:C++ [4] 期限:次の木曜まで [5] その他の制限: これといって無し リンク先に手順の例とかがあります kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4644.txt とりあえず自分でやってみたけど無理でした。この雑魚にどなたかご教授をorz あと最後らへんのprintf文の、&nの&は無かったことに(´;ω;`)
103 名前:デフォルトの名無しさん [2007/07/16(月) 21:05:06 ] >>97 ぜんぜん良いと思います。 ありがとうございます。 ポインタのポインタを使っていてちゃんと動作するものなら問題ないので。
104 名前:デフォルトの名無しさん [2007/07/16(月) 21:09:42 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4645.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: cygwin [3.3] 言語: C [4] 期限: 7/17午前中 [5] その他の制限: なし
105 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 21:19:06 ] >>103 ベースは>>56 さんのなので、よろ
106 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 21:34:45 ] >>102 #include <stdio.h> double f(double x){ return 1.0/(1.0+x*x); } int main(void){ double a=0.0, b=10.0, h, sum; long n=10000000, i; h=(b-a)/n; sum=f(a)+f(b); for(i=1;i<n;i+=2) sum+=2*f(a+h*i); for(i=2;i<n;i+=2) sum+=4*f(a+h*i); sum*=h/3; printf("Answer: %f\n", sum); return 0; }
107 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 22:14:38 ] >>106 さん、ありがとうございます。工夫すればかなり短くなるんですね・・・ それと、問題文に抜けてしまったんですが • s2は最新の計算結果,s1は一つ前の計算結果 • |s2-s1|<eとなるまで,nを1増やしながら,以下の 処理を繰り返す - s1←s2 - s2を新しいnで計算する というのはどうすれば出来るでしょうか?よろしければご教授お願いします
108 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 22:24:21 ] >>104 #include <stdio.h> int main(void){ int masu[9], a, i, j, turn = 0; char *koma[3] = {" 0 ", " X ", " * "}; for(i = 0; i < 9; i++) masu[i] = 2; while(1){ do{ printf("?"), scanf("%d", &a); if(a >= 9) continue; }while(masu[a] != 2); masu[a] = turn%2; turn++; for(i = 0; i < 3; i++){ for(j = 0; j < 3; j++) printf("%s", koma[masu[i*3 + j]]); printf("\n"); } if((masu[(a + 3)%9] == masu[a] && masu[(a + 6)%9] == masu[a]) || (masu[3*a/3 + (a + 1)%3] == masu[a] && masu[3*a/3 + (a + 2)%3] == masu[a]) || (a%4 == 0 && masu[0] == masu[a] && masu[4] == masu[a]&& masu[8] == masu[a]) || (a%2 == 0 && a%8 != 0 && masu[(a + 2)%8 + 2] == masu[a] && masu[(a + 4)%8 + 2] == masu[a])){ printf("%s\n", koma[masu[a]]); break; }else if(turn >= 9){ printf("draw\n"); break; } } return 0; }
109 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 22:29:18 ] 一つでまとめますかw あんたすごいよ。
110 名前:21 mailto:sage [2007/07/16(月) 22:30:37 ] どなたか>>21 お願いします!
111 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 22:33:10 ] >>107 #include <stdio.h> #include <math.h> double f(double x){ return 1.0/(1.0+x*x); } int main(void){ double a=0.0, b=10.0, e=0.0000001, h, s1=0.0, s2; long n, i; int is_first=1; for(n=2;;n+=2){ // アルゴリズムの関係で n は偶数 h=(b-a)/n; s2=f(a)+f(b); for(i=1;i<n;i+=2) s2+=2*f(a+h*i); for(i=2;i<n;i+=2) s2+=4*f(a+h*i); s2*=h/3; if(!is_first && fabs(s2-s1)<e) break; s1=s2; is_first=0; } printf("n=%ld integral=%f\n", n, s2); return 0; }
112 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 22:46:56 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): CSVファイルからデータを読み込み、構造体に入れる。 CSVファイルの中身は、名前・住所・電話番号で、10件以内である。 構造体には、登録番号・名前・住所・電話番号を入れる。 登録番号は自分でつける。 最初に、登録番号と名前を表示し、入力された登録番号に応じて 名前住所電話番号を表示する。 [3] 環境 [3.1] OS:windows cygwin [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限: 今日中 [5] その他の制限:特になし 色々かんがえたのですがわかりませんでした。。 よろしくおねがいします。
113 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 22:48:53 ] >>111 さん 素早い回答ありがとうございました。おかげで次の宿題は出せそうです。ありがとうございました。
114 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 22:49:29 ] >>107 ごめん間違った for(i=1;i<n;i+=2) s2+=2*f(a+h*i); for(i=2;i<n;i+=2) s2+=4*f(a+h*i); ↓ for(i=1;i<n;i+=2) s2+=4*f(a+h*i); for(i=2;i<n;i+=2) s2+=2*f(a+h*i);
115 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 22:50:12 ] あちゃー手遅れだったか
116 名前:スモーク [2007/07/16(月) 22:50:23 ] 多分岐型 整数型の変数a・b と、文字型の変数e を用意し、 キーボードから2つの数値と1つの演算子を入力し 、その計算結果cを出力するプログラムを作成しなさい。 実行される計算は和・差・積・商・剰余の5種類とし、 演算子はそれぞれ’+’、’-’、’*’、’/’、’%’で 表現されるものとする。 演算子にそれ以外の記号が入力された場合は エラーメッセージを表示する。 また0による除算の回避も含めること。 まだcaseになれていないのだろうか・・・。 教えてください。
117 名前:スモーク [2007/07/16(月) 22:51:41 ] 他にも。 多分岐型(2) 次の説明は冬季オリンピックの開催年についての説明である。 キーボードから変数year に入力された年号について、 開催された年に第何回大会が開催されたか 画面に表示するプログラムを作成しなさい。 また開催年でない場合は、画面にその旨メッセージを出力すること。
118 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 22:55:35 ] >>117 説明がneeeeeeeeeeeee
119 名前:107 mailto:sage [2007/07/16(月) 22:56:05 ] >>114 さん、わざわざ丁寧にありがとうございます!(´;ω;`)ブワッ
120 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 22:57:52 ] 【質問テンプレ】 [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 文字列を置換するプログラムをつくれ。 どのような形でもいいので、置き換える文字列と置き換えられる文字列を受け取り 置換した文章を出力する。なるべくポインタを使うこと。試しにちゃんと動くか確認すること。 (例)”僕" を ”私” に置換する 僕は20才だ。僕の好きなたべものはお酒だ。 -> 私は20才だ。私の好きなたべものはお酒だ。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン:(gcc 2.95.3) [3.3] 言語: C [4] 期限: (2007年07月31日23:59まで ) [5] その他の制限: 無し
121 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 22:58:12 ] まぁ、感謝されたって力つかなきゃ意味無いし、暇つぶしの種にされてるだけだから考え物だけどな。
122 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 23:05:22 ] >>110 あれでできてるんじゃねえのか? scanfの前に"c2p Message:","p2c Message:"とか printfをいれて挙動をチェックしろ
123 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 23:11:52 ] [1] 授業単元:データ構造とアルゴリズム [2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4648.txt [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:Visual Studio .NET 2003 [3.3] 言語:C [4] 期限:2007/7/17(火) 10:30 [5] その他の制限:入力はfopen系関数を使用したものではなく、コマンドプロンプトから入力が保存されたテキストファイルを読み込む方法で行うようにしなければならない。 どうかよろしくお願いします。
124 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 23:16:50 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク): メンバx[]の値が定まっているPoint5Dのインスタンスを引数とし, その2ノルムを計算して返す関数 Norm を書け. [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:明日まで [5] その他の制限:無し 問題の意味がいまいち分かりません…orz よろしくお願いします。
125 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 23:17:09 ] >>120 #include <stdio.h> #include <string.h> void replace(char *sentence, char *src, char *dest){ char *ptr; int src_len; src_len=strlen(src); for(;;){ ptr=strstr(sentence, src); if(ptr==NULL) break; printf("%.*s%s", ptr-sentence, sentence, dest); sentence=ptr+src_len; } printf("%s", sentence); } int main(void){ char *sentence="僕は20才だ。僕の好きなたべものはお酒だ。"; char *src="僕", *dest="私"; replace(sentence, src, dest); return 0; }
126 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 23:18:52 ] >>120 #include <stdio.h> int main(int argc, char **argv) { char *queue; int c, qhead = 0, qtail = 0, qsize; if (argc < 3) return fprintf(stderr, "usage: %s from to\n", argv[0]), 1; qsize = strlen(argv[1]); queue = malloc(qsize); while ((c = getchar()) != EOF) { queue[qtail] = c; qtail = (qtail + 1) % qsize; if (qhead != qtail) continue; if (memcmp(&queue[qhead], argv[1], qsize - qhead) == 0 && memcmp(queue, argv[1] + qsize - qhead, qtail) == 0) { fputs(argv[2], stdout); qhead = qtail = 0; } else { putchar(queue[qhead]); qhead = (qhead + 1) % qsize; } } while (qhead != qtail) { putchar(queue[qhead]); qhead = (qhead + 1) % qsize; } free(queue); return 0; }
127 名前:126 mailto:sage [2007/07/16(月) 23:21:41 ] あ。 #include <stdlib.h> #include <string.h> もしといて。スマソ。
128 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 23:28:07 ] >>125 ありがとうございます。かなりきれいにできていますね。 自分もstrstr ()を使ったのですが、途中でつまってしまいました。
129 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 23:28:59 ] >>120 便乗 #include <stdio.h> #include <string.h> int main(void) { char buf[1024], rep[2048], word1[32], word2[32], *p = buf, *q = rep; scanf("%[^\n]%s%s", buf, word1, word2); while(*p){ if(!strncmp(p, word1, strlen(word1))) strcpy(q, word2), p += strlen(word1), q += strlen(word2); else *q++ = *p++; } *q = '\0'; puts(rep); return 0; }
130 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 23:31:06 ] >>126 すごいですね。こんなやりかたもあったのですか。
131 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 23:38:44 ] >>129 検索単語がみつかったら単語の文字の数だけ前に進めてstrcpy()をつかうのですね。 それも考えていたのですが、できそうでできませんでした。 みなさん、ありがとうございました。
132 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 23:40:48 ] [1] 授業単元:情報基礎 [2] 問題文: ・1から9までの数字を一回ずつ使った9桁の数字を小町数という。 自乗した数が小町数となるような自然数をすべて求めるプログラムを作成し その数と小町数の両方を出力せよ [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限: (明日まで ) [5] その他の制限: 無し C言語習いたてで、期限ぎりぎりまでがんばったんですけどダメでした どなたかよろしくお願いします。
133 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 23:52:56 ] 昔のスレに同じ質問あった気がするな
134 名前:22 mailto:sage [2007/07/16(月) 23:54:32 ] >>25 ありがとうございます。 なんですが、元々のソースを追記修正して今まできたので 一応そのような形でって事になってます。 制限なしと書いていましたが、現在のソースを やっと作れるか作れないかぐらいのレベルなので >>25 さんのだとまだちょっとわからないことがいろいろとあります。 勉強してみます。ありがとうございました。
135 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 00:08:28 ] >>132 #include <stdio.h> #include <string.h> int check(unsigned long n) { char f[10] = { '0' }; for (n = n * n; n > 0; n /= 10) f[n % 10] = '1'; return memcmp(f, "0111111111", 10) == 0; } int main(void) { unsigned long n; /* * 最小小町数 123456789, sqrt(123456789) = 11111.11... * 最大小町数 987654321, sqrt(987654321) = 31246.96... */ for (n = 11111; n < 31428; ++n) if (check(n)) printf("%lu * %lu = %lu\n", n, n, n * n); return 0; }
136 名前:135 mailto:sage [2007/07/17(火) 00:11:09 ] あ、コメント間違ってら sqrt(987654321) = 31426.96... ね、正しくは。
137 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 00:18:27 ] >>136 わざわざありがとうございます! 今できる環境にないので明日大学で試してみます
138 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 01:10:25 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4649.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:本日(17日)まで [5] その他の制限:無し よろしくお願いします。
139 名前:デフォルトの名無しさん [2007/07/17(火) 01:50:51 ] >>108 ありがとうございます。 終了条件の部分大変参考になりました。
140 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 03:38:07 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク):迷路の作成(探索) 2次元配列を用いて迷路をつくりSTARTからGOALまでの経路を視覚的にわかるように出力せよ。 (例)壁1 通路0 START8 GOAL9 データ 1 1 1 1 1 1 1 1 1 1 1 9 0 0 0 1 0 1 0 1 1 1 1 1 0 1 0 0 0 1 1 0 1 0 0 1 1 1 0 1 1 0 1 0 1 1 0 0 0 1 1 0 0 0 1 0 0 1 1 1 1 1 0 1 1 0 1 0 0 1 1 0 0 0 1 0 1 0 1 1 1 0 1 0 0 0 0 0 8 1 1 1 1 1 1 1 1 1 1 1
141 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 03:38:42 ] 続きです 出力結果 ********** *G+++* * * ****+* * * *++*** * * *+** * * ++* *** **+** * * * ++* * ** * *+++++S* ********** [3] 環境 [3.1] OS:Mac [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:本日(17日)まで [5] その他の制限:無し 現在奮闘中ですがなかなかできませんorz よろしくお願いします。
142 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 04:26:02 ] >>142 #include <stdio.h> #define X 10 #define Y 10 int map[X][Y]={ {1,1,1,1,1,1,1,1,1,1}, {1,9,0,0,0,1,0,1,0,1}, {1,1,1,1,0,1,0,0,0,1},{1,0,1,0,0,1,1,1,0,1}, {1,0,1,0,1,1,0,0,0,1},{1,0,0,0,1,0,0,1,1,1}, {1,1,0,1,1,0,1,0,0,1},{1,0,0,0,1,0,1,0,1,1}, {1,0,1,0,0,0,0,0,8,1},{1,1,1,1,1,1,1,1,1,1}}; char expr[]=" *+34567SG"; int next(int x, int y) { if (map[x][y] == 0) map[x][y] = 2; if (map[x-1][y] == 9 || map[x-1][y] == 0 && next(x-1, y)) return 1; if (map[x][y-1] == 9 || map[x][y-1] == 0 && next(x, y-1)) return 1; if (map[x+1][y] == 9 || map[x+1][y] == 0 && next(x+1, y)) return 1; if (map[x][y+1] == 9 || map[x][y+1] == 0 && next(x, y+1)) return 1; if (map[x][y] == 2) map[x][y] = 0; return 0; } int main() { int x, y, r=0; for (x=0; x<X; x++) for (y=0; y<Y; y++) if (map[x][y] == 8) next(x, y); for (x=0; x<X; x++) { for (y=0; y<Y; y++) putchar(expr[map[x][y]]); putchar('\n'); } return 0; }
143 名前:142 mailto:sage [2007/07/17(火) 04:30:54 ] 安価ミスた.orz
144 名前:デフォルトの名無しさん [2007/07/17(火) 04:46:27 ] ja.wikipedia.org/w/index.php?title=%E8%83%BD%E7%99%BB%E3%81%8B%E3%82%8F%E3%81%84%E3%81%84%E3%82%88%E8%83%BD%E7%99%BB&redirect=no
145 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 08:50:03 ] >>138 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4650.txt
146 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 09:22:08 ] >>112 #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct{ char num[128], name[128], adr[128], tel[128]; }Data; int main(int argc, char *argv[]) { Data x[10]; FILE *fp; int i = 0, j; char buf[1024], *p, search[128]; if(argc < 2) fprintf(stderr, "usage : %s string\n", argv[0]), exit(1); if((fp = fopen(argv[1], "r")) == NULL) perror(argv[1]), exit(2); while(fgets(buf, sizeof(buf), fp) != NULL){ printf("num : "), scanf("%s", x[i].num); if((p = strtok(buf, ",")) != NULL) sscanf(p, "%s", x[i].name); if((p = strtok(NULL, ",")) != NULL) sscanf(p, "%s", x[i].adr); if((p = strtok(NULL, ",")) != NULL) sscanf(p, "%s", x[i].tel); i++; } for(j = 0; j < i; j++) printf("%s %s\n", x[j].num, x[j].name); printf("search : "), scanf("%s", search); for(j = 0; j < i; j++) if(!strcmp(search, x[j].num)) printf("%s %s %s\n", x[j].name, x[j].adr, x[j].tel); return 0; }
147 名前:デフォルトの名無しさん [2007/07/17(火) 11:28:50 ] [1] 授業単元:IT入門B1 [2] 問題文:繰り返し複素数(実部,虚部はそれぞれ整数型とする)を入力し,ユーザが最後に1 (1+i*0)を入れたら今まで入力した複素数の実部と虚部のペアをすべて出力し,さらに入力した複素数すべての積を出力するプログラムを作成せよ. なお,ユーザが入力する回数に制限はないものとする. stdio.hの他にstdlib.hをインクルードしておく必要がある. [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:c [4] 期限:2007年7月30日 [5] その他の制限: 特になし 参考プログラムです→www-it.sci.waseda.ac.jp/ITB1/class1/list.c よろしくお願いします。
148 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 11:38:25 ] >>147 検索して死ね
149 名前:デフォルトの名無しさん [2007/07/17(火) 11:39:39 ] [1]授業単元:プログラミング技術III [2]問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4651.txt [3] 環境 [3.1] OS: Linux [3.2] コンパイラ: gcc [3.3] 言語: C [4] 期限:7/18まで [5] その他の制限:特になし よろしくお願いします
150 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 13:09:50 ] [1]授業単元:ゲームV [2]問題文:数独(wiki参照ja.wikipedia.org/wiki/%E6%95%B0%E7%8B%AC )解読プログラム [3] 環境 [3.1] OS: Linux [3.2] コンパイラ: gcc [3.3] 言語: C [4] 期限:7/20 [5] その他の制限:関数は2つ以下、#include <stdio.h>のみを使用すること 宜しくお願いします
151 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 13:22:11 ] >>150 www.techfinesse.com/game/sudoku_solver.php こんなのがあるようだぞ その制限には引っかかるようだがなw
152 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 13:30:55 ] [1] データ構造論 [2]treeprintのプログラムを参考にして木をカッコ表記で表示するプログラムを作り、コマンド X で動作するようにせよ。 /* treeprint() : 2分探索木を根から順にすべて表示する(1行10個毎) */ int num; /* 1行のデータ個数を制御するための変数。*/ void treeprint(void) { num= 0; /* 木の根ノードからサブ関数trprintを用いてプリント開始。*/ trprint(start->right); } int trprint(TNODE *p) /* trprint(p) : p の2分木を再帰的にプリント。*/ { if(p != end){ /* p が終端ノードでないならば */ trprint(p->left); /* pの左部分木を再帰的にプリント。 */ printf("%5d%c",p->key, (++num % 10) ? ' ':'\n'); /* pのkey値を表示。 */ trprint(p->right); /* pの右部分木を再帰的にプリント。 */ } } [3.1] Linux [3.2] gcc 3.4 VC 6.0等 [3.3] C言語 [4] 2007年07月18日12:00まで] [5] プログラムの中のtreeprintだけ問題文の載せています よろしくお願いします
153 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 13:33:01 ] >>149 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4652.c
154 名前: ◆Il0WZuGYWw mailto:sage [2007/07/17(火) 14:47:00 ] >>150 bsdのportsの中に入ってるお
155 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 15:36:03 ] >>150 何の工夫も無い力技だが一応やってみた。 出回っているソースは確実にこれよりはマシだろう。 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4656.txt
156 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 16:23:42 ] あ、あ、ぼるじょあのほうにカキコしてしまった…… こっちのほうがいいのかな?マルチは怒られますよね?よければ誰かぼるじょあスレ見てください〜〜
157 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 19:15:37 ] >>142 遅い時間にも関わらず回答ありがとうございます。 確かに動作できました。 しかしながら関数を3つ作ってとけとのことでしたorz すみませんがお時間がありましたら回答おねがいします。 問題は>>140-141 です よろしくお願いします<(__)>
158 名前:c言語初心者 [2007/07/17(火) 20:00:23 ] 授業名:プログラミング1 プリントを渡されてやってこいとのことでした。 問題1 サイコロを10000回投げたとき、1から6までのそれぞれの目が 何回ずつ出たか調べるプログラムを作成せよ #include<stdio.h> #include<stdlib.h> #define uniformrand()((double)rand() / ((double)RAND_MAX + 1.0)) int main(void) { int i, j,spot, f[ ?(1) ]; srand(0); for (j = 1;j <= 6;j++){ f[j] = 0; } for( i = 1;i <= 10000; i++){ spot = (int)(6 * uniformrand()) + 1; [ ?(2) ] } return 0; } です。どうかよろしくお願いします。
159 名前:デフォルトの名無しさん [2007/07/17(火) 20:01:52 ] C++です 距離の単位にyかmが入力されるともう片方の単位に変換するプログラムです。 ただし、距離を変換する部分は、関数transを定義し、main関数で呼び出すこと。 距離の数値を入れた後に動かなくなるんですが、何が違うのか教えてほしいです。。 よろしくお願いします #include <iostream> using namespace std; double trans(char a,double b) { double c; cin>>a; cin>>b; if(a='y') { c=b*0.914; return c; } else if(a='m') { c=b/0.914; return c; } }
160 名前:デフォルトの名無しさん [2007/07/17(火) 20:02:55 ] 続き int main() { char a; double b; cout<<"meter or yard -->"; cin>>a; while(a!='E') { cout<<"input data -->"; cin>>b; { if(a='y') { cout<<b<<" yard --> "<<trans(a,b)<<" meter"; } else if(a='m') { cout<<b<<" meter --> "<<trans(a,b)<<" yard"; } cout<<"meter or yard -->"; cin>>a; } } return 0;
161 名前:デフォルトの名無しさん [2007/07/17(火) 20:04:35 ] a=='y' にしろ
162 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 20:05:45 ] >>158 結果の出力は要らないのか?
163 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 20:05:48 ] >>158 #include<stdio.h> #include<stdlib.h> #define uniformrand()((double)rand() / ((double)RAND_MAX + 1.0)) int main(void) { int i, j,spot, f[7]; srand(0); for (j = 1;j <= 6;j++){ f[j] = 0; } for( i = 1;i <= 10000; i++){ spot = (int)(6 * uniformrand()) + 1; f[spot]++; } for(i=1; i<=6; i++) { printf("%d %d \n",i,f[i]); } return 0; }
164 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 20:06:15 ] >158 (1)7 (2)f[spot]++;
165 名前:c言語初心者 [2007/07/17(火) 20:07:34 ] たぶん(1),(2)にあてはまるものをいれてこいってことだと思います。 よろしくおねがいします。。
166 名前:デフォルトの名無しさん [2007/07/17(火) 20:10:40 ] >161 改善されませんでした・・・
167 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 20:14:50 ] >>159 >>161 に加えて trans(a,b)で余計に a, b を入力させようとしてるから. 引数で渡してんだから,そこで入力させてどうする.
168 名前:c言語初心者 [2007/07/17(火) 20:27:54 ] ありがとうございました 講義名:プログラミング1 プリントを渡されてやってこいとのことでした。よろしくおねがいします 1,2,・・・13の中から5個の数をランダムに選び出すプログラムを作成せよ #include<stdio.h> #include<stdlib.h> #define uniformrand()((double)rand() / ((double)RAND_MAX + 1.0)) int a[13]; void RandomPermutation(int n) { 例題2と同じ } int main(void) { int i; RandomPermutation(13); for (i = 0;i < (1)? ; i++){ printf("%4d \n", (2)? ); } return 0; } です。(1)(2)の部分をお願いします。『例題2と同じ』という場所は 問題の横に横に例題2というのが乗っていました。だけど、自分はどこからどこまでが例題2 と同じ部分なのかがわからないです。例題2の部分がいるならそれも打ちます。よろしくお願いします。
169 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 20:37:44 ] (1)13 (2)a[i]
170 名前:デフォルトの名無しさん [2007/07/17(火) 20:41:31 ] [1] 授業単元:C言語演習 [2] 問題文: テキストファイルを読み込みたとえばテキストファイルに 3+4= 5*6= ...etc(これは他のその他の数式、etcと直接出力しない) と書かれていたら画面に 3+4=7 5*6=30 ...etc と出力せよ。 [3] 環境 [3.1] OS: (Linux) [3.2] コンパイラ名とバージョン: (gcc ) [3.3] 言語: (C言語) [4] 期限: 7月19日
171 名前:c言語初心者 [2007/07/17(火) 20:46:29 ] 講義名:プログラミング1 プリントを渡されてやってこいとのことでした。よろしくおねがいします よく切られたトランプから、5枚のカードを選び出すプログラムを作成せよ、 ただし、トランプにはジョーカーは含まれないものとする。 #include<stdio.h> #include<stdlib.h> #define uniformrand()((double)rand() / ((double)RAND_MAX + 1.0)) int a[ (1)? ]; void RandomPermutation(int n) { 例題2と同じ } int main(void) { int i; RandomPermutation( (1)? ); for(i = 0; i < 5; i++){ if( (2)? ){ printf("ハート% 4d \n", n (3)? ); }else if ( (4)? ){ printf("ダイア% 4d \n", n (5)? ); }else if ( (6)? ){ printf("クラブ% 4d \n", n (7)? ); }else{ printf("ハート% 4d \n", n (8)? ); } return 0; } 問2もありがとうございました。(1)から(8)までをよろしくお願いします
172 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 20:47:34 ] >>170 演算の種類は?
173 名前:デフォルトの名無しさん [2007/07/17(火) 21:06:43 ] >>172 足し算、引き算、割り算、掛け算です。説明不足ですいません。
174 名前:スモーク [2007/07/17(火) 21:23:34 ] こんばんわ。すみません、今度は説明を書いたのでよろしくお願いします。 「1」課題:C言語でコードを記述して実行する。 「2」内容:多分岐型のコードを使って整数型の変数a・b と、文字型の変数e を用意し、 キーボードから2つの数値と1つの演算子を入力して、その計算結果cを出力するプログラムを作る。 というもの。さらに、実行される計算は和・差・積・商・剰余の5種類とし、 演算子はそれぞれ’+’、’-’、’*’、’/’、’%’で、 表現されるものとする。 演算子にそれ以外の記号が入力された場合は、 エラーメッセージを表示する。 また0による除算の回避も含めるものです。 「3」OS:WINDOWS XP SP2。 「4」バージョン:Visual Studio 2005。 「5」期限:今週の金曜まで。 「6」 コンパイラのバージョン: gcc。 これでおねがいします。
175 名前:デフォルトの名無しさん [2007/07/17(火) 21:23:47 ] [1] 授業単元: CG入門 [2] 問題文 縦横400ピクセルのスクリーン上に3次元空間の3角形が複数個、投影される。 この3角形についてそれぞれ @スクリーン上の頂点:(x1,y1)(x2,y2)(x3,y3) A頂点のZ値(視点から3次元空間までの距離):Z1,Z2,Z3 B三角形の色:(r,g,b)-均一色 が標準入力から与えられるとき、Z−バッファ法に基づいてスクリーン上に三角形を描き 最終結果をppm画像として出力するプログラムを作成せよ。 *必要なデータは標準入力から入力するものとし、かつ複数のB角形に対応させる事 (B角形個数は予め与えてもよい) [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Visual studio. [3.3] 言語: C [4] 期限: 2007年7月19日 11:00まで この手のプログラムはスレ違いかもしれないと思いつつも、C言語で書いて来いとのことなので 書き込ませて頂きました。何卒、よろしくお願いします。
176 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 21:25:47 ] >>170 できた。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4657.txt