1 名前:デフォルトの名無しさん [2007/06/23(土) 23:03:25 BE:255611693-2BP(12)] あなたが解けない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++の宿題を片付けます 90代目 pc11.2ch.net/test/read.cgi/tech/1181802185/
165 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 16:32:25 ] >>160 #include <stdio.h> int main(void) { int n = 0; FILE *fp; if ((fp = fopen("count.txt", "r+")) == NULL) return 1; fscanf(fp, "%d", &n); rewind(fp); fprintf(fp, "%d\n", ++n); fclose(fp); return 0; }
166 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 16:41:16 ] >>144 $ cat vitamin.c #include <stdio.h> int main(int argc, char **argv) { if (argc < 2 || argv[1][0] == 0) return 0; putchar(argv[1][0]); ++argv[1]; return main(argc, argv); } $ cc vitamin.c $ ./a.out "簡単な絵"
167 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 16:50:21 ] >>165 ありがとうございました。
168 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 16:54:15 ] >>160 #include <stdio.h> int main(void){ FILE *fp = fopen("count.txt", "r"); size_t len; int i, flag = 1; char buf[1023], ret[1024] = {0}, *p; if(!fp) exit(1); fgets(buf, sizeof(buf), fp); if((p = strchr(buf, '\n')) != NULL) *p = '\0'; len = strlen(buf); for(i = 0; i < len; i++){ if(flag && (buf[len - i - 1] == '9')) ret[len - i] = '0', flag = 1; else if(flag) ret[len - i] = buf[len - i - 1] + 1, flag = 0; else ret[len - i] = buf[len - i - 1]; } if(flag) ret[0] = '1', p = ret; else p = ret + 1; if((fp = freopen("count.txt", "w", fp)) == NULL) exit(2); fputs(p, fp); fclose(fp); return 0; }
169 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 17:42:43 ] >>159 #include <stdio.h> typedef struct tag_student_t{ double eng, math; int id; }student_t; void InputData(student_t s[], int n){ int i; for(i = 0; i < n; i++){ printf("student %d\ninput data (id, eng, math) : ", i + 1); scanf("%d%lf%lf", &s[i].id, &s[i].eng, &s[i].math); } } int main(void){ student_t s[4]; double max = -1; int i, i_max = 0; InputData(s, 4); for(i = 0; i < 4; i++) if(max < s[i].eng + s[i].math) i_max = i, max = s[i].eng + s[i].math; printf("id : %d eng : %.3f math : %.3f sum : %.3f\n", s[i_max].id, s[i_max].eng, s[i_max].math, s[i_max].eng + s[i_max].math); return 0; }
170 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 17:48:10 ] >>162 #include <stdio.h> #define STACK 10 #define QUEUE 10 // <中略> int main(void){ stack s[STACK]; queue q[QUEUE]; int i; puts("push"); for(i = 0; i < 13; i++) printf("%d\n", push(s, i)); puts("pop"); for(i = 0; i < 13; i++) printf("%d\n", pop(s)); puts("enqueue"); for(i = 0; i < 13; i++) printf("%d\n", enqueue(q, i)); puts("dequeue"); for(i = 0; i < 13; i++) printf("%d\n", dequeue(q)); return 0; }
171 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 17:52:09 ] >>162 すいません。C言語までしか習っていないのでC言語のみでお願いします。
172 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 17:53:48 ] >>170 できればでいいのですが問1と問2にわけて頂けないでしょうか
173 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 18:15:22 ] >>172 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4390.txt
174 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 18:29:03 ] >>128 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4391.txt
175 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 19:18:34 ] [1] 授業単元:データ構造とアルゴリズム [2] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4394.txt [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:Visual Studio .NET 2003 [3.3] 言語:C [4] 期限:2007/6/26 10:30 [5] その他の制限:入力はfopen系関数を使用したものではなく、コマンドプロンプトから入力が保存されたテキストファイルを読み込む方法で行うようにしなければならない。 どんなに考えてもわかりません。わからないまま前日になってしまいました… よろしくお願いします。
176 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 19:24:03 ] まいったな……何の問題なのかも分からないや。
177 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 19:59:11 ] [1] 授業単元:プログラム技術 [2] 問題文: (2)次に引数の順番を入れ替えて逆順に表示するプログラムに直せ。 ソースプログラムを書き込んで提出せよ。*/ main(int argc , char *argv[]){ int i; printf("%d argument(s).\n" , argc -1); for(i=argc-1; i>=0; i--){ printf("argv[%d] : \"%s\"\n", i , argv[i]); } } 引数の順番を入れ替えると(char *argv[] , int argc)入力した文字は反映されず、argument(s).の前に 意味不明の数字が表示されて動作を終了してしまいます。 C:\c>smp2 a b c 3616655 argument(s). ちなみに、引数を入れ替えなければ、逆に表示されます。 回答、よろしくお願いします。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:Visual Studio .NET 2003 [3.3] 言語:C [4] 期限:2007/6/26 [5] その他の制限:
178 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:02:43 ] >>173 ありがとうございました! いろいろ注文多くすいませんでした。
179 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:05:55 ] >>177 argumentでスレを検索汁
180 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:07:42 ] >>177 >>14
181 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:11:23 ] >>177 > 引数の順番を入れ替えると(char *argv[] , int argc) っつか吹いたっw
182 名前:177 mailto:sage [2007/06/25(月) 20:16:15 ] >>179 >>180 検索しましたが、何の参考にもなりませんでした。 まだ習い始めたばかりでよく分からないんです・・・ >>181 なにか根本的に間違っていたりしますか? いや、冗談抜きでこの授業分からないんです・・・
183 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:18:02 ] >>182 言葉の意味を勘違いしているだけでしょ。main関数の中の引数の変数の定義を逆にしてどーすんだと。 仕様からして不適切だし、もしそれで答えろっていうなら、そんな講師は全世界レベルで非難を浴びますw
184 名前:デフォルトの名無しさん [2007/06/25(月) 20:22:35 ] [1] 授業単元:情報処理 [2] 問題文: 3つのベクトルA=(a1,a2,a3),B=(b1,b2,b3),c=(c1,c2,c3)がある。次のベクトル三重積に関する等式を示すプログラムを条件にしたがって作成せよ。 (A×B)×C=-(B,C)A+(A,C)B ここにA×Bは外積(A,B)は内積を示す。 データの入出力はファイルを使用 ファイル入出力に関してもサブルーチン化 ベクトルはそれぞれ一次元配列化 外積、内積ともにサブルーチンを作成し、外積は左辺、内積は右辺を計算できるようにすること [3] 環境 [3.1] OS:linux [3.2] コンパイラ名とバージョン:g77 fortran [3.3] 言語:fortran [4] 期限:2007/6/26 ぜひともおねがいします><
185 名前:177 mailto:sage [2007/06/25(月) 20:24:28 ] >>183 レスどうもです。なるほどorz >次に引数の順番を入れ替えて ↑では、これは何をしろと言っているのでしょうか・・・。 う〜ん、ますます分からなくなってきたorz
186 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:24:50 ] >言語:fortran ( ^ω^)・・・
187 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:26:37 ] >>185 問題文を全て一字一句違わず書けばいいよNE☆
188 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:28:15 ] >>160 #include <stdio.h> #include <stdlib.h> int main() { char *p; long l; char buff[128]; FILE *fop = fopen("count.txt","r"); fgets(buff,sizeof(buff),fop); l =strtol(buff,&p,10); fclose(fop); fop =fopen("count.txt","a+"); fprintf(fop,"\n%d",l+1); return 0; }
189 名前:177 mailto:sage [2007/06/25(月) 20:29:13 ] >>187 /*(1)次のプログラムを実行し結果を確認せよ。 (2)次に引数の順番を入れ替えて逆順に表示するプログラムに直せ。 ソースプログラムを書き込んで提出せよ。*/ 問題文はコレで全てですorz
190 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:33:31 ] >>189 だから、受け継いだ値を逆から表示しろって問題なんでしょ?そういうこと。 括弧の中を逆にして受け継げって問題だったら全世界レベルで爆笑もんだよw スイスのジュネーブにあるISO団体が、んだごるぁ?てめぇんとこは俺らが決めた標準はおろか C言語の基本も理解していないおかしな授業をしてんのかと?国際的な裁判にかけられちゃいますよ?
191 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:35:29 ] >>177 まぁ、もし 入れ替え っていうなら、例えば引数を3つ受け継いだのなら 1番目と3番目を入れ替えるコードを書けと?そして argv[1] から順に表示しろと? そういう問題ならそうすべきだが、そんなことせずに単純に逆から表示すりゃ良いでそ。
192 名前:177 mailto:sage [2007/06/25(月) 20:41:53 ] みなさんどうもです。そうですね、main()の中を入れえ変えるってのは いくらなんでも無さそうですね。 有難うございました。
193 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:41:56 ] >>177 mainに関して、いろいろ実験してみるといい。 例えば、こんなのも駄目だ。 #include <stdio.h> int main(char *argv[]) { printf("%s\n", argv[0]); return 0; }
194 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:42:00 ] >>189 ほれよ。無駄な上に君の環境で動くかどうか分からないソース (多分大丈夫だろうけど) #include <stdio.h> int main(int argc, char **argv) { int i, j; char *tmp; printf("%d argument(s).\n" , argc -1); printf("argv[0] : \"%s\"\n", argv[0]); for (i = 1, j = argc - 1; i < j; ++i, --j) { tmp = argv[i]; argv[i] = argv[j]; argv[j] = tmp; } for (i = 1; i < argc; ++i) printf("argv[%d] : \"%s\"\n", i, argv[i]); return 0; }
195 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:49:58 ] 乱数を発生させて、1〜100までを網羅するように表示せよ。(順番は問わない) まったく、わからんよ。見かけによらず重い
196 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:55:07 ] >>195 日本語でおk
197 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 20:59:13 ] #include <stdio.h> #include <stdlib.h> #include <time.h> #define swap(type, x, y) do{ type temp = x; x = y; y = temp;}while(0) int main(void) { int x[100], i, j, k; srand((unsigned int)time(NULL)); for(i = 0; i < 100; i++) x[i] = i + 1; for(i = 0; i < 1000; i++){ j = (int)(((double)rand()/(RAND_MAX + 1))*100); k = (int)(((double)rand()/(RAND_MAX + 1))*100); swap(int , x[j], x[k]); } for(i = 0; i < 100; i++) printf("%3d ", x[i]); return 0; }
198 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:04:26 ] >>195 #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { int a[100],i,tmp,pos; int a_sz=sizeof(a)/sizeof(a[0]); srand((unsigned)time(NULL)); for(i=0; i<a_sz; i++) a[i]=i+1; for(i=0; i<a_sz; i++) { pos=rand()%a_sz; tmp=a[pos]; a[pos]=a[i]; a[i]=tmp; } for(i=0; i<a_sz; i++) printf("%d ",a[i]); return 0; }
199 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:07:18 ] [1] 授業単元:プログラミングT [2] 問題文(含コード&リンク): ・ポインタを説明せよ。(Wikipedia,Google等参照不可。また書籍の参照も不可。自分の文章で答えること) ・構造体を説明せよ。(同上) [3] 環境 [3.1] OS:NULL [3.2] コンパイラ名とバージョン:NULL [3.3] 言語:C [4] 期限:2007年06月25日(本日) [5] その他の制限:同じ文章を見つけた場合は成績評価「不可」とする。 よろしくお願いします。
200 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:08:14 ] そっか、配列の要素を一回ずつ交換してやればいいんだな。
201 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:09:29 ] >>199 同じ学校の学生が見てたら終わりじゃん
202 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:09:52 ] >>199 ja.wikipedia.org/wiki/%E6%A7%8B%E9%80%A0%E4%BD%93 ja.wikipedia.org/wiki/%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF_%28%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%29 何も丸々言葉を写さなきゃおk。自分が理解して自分の言葉で書けばええやん。
203 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:10:22 ] OS NULLって何?
204 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:10:59 ] >>203 Oナニー Siてたら NULLヌルしちゃった、てへっ ♥
205 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:11:53 ] むずいね。
206 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:12:03 ] >>199 先生がこのスレを見ている可能性は考えなかったのか
207 名前:199 mailto:sage [2007/06/25(月) 21:16:56 ] >>206 先生、にちゃんねる大嫌いそうだったから、つい書いてしまいました。
208 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:19:10 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): Mission 1 で作成した「Projection1.java 」は「0 列目」と, 「引数で指定した列」をCSV 形式で出力しましたが, 今度は 「0 列目」と「引数で指定した列以外の全ての列」をCSV 形式で 取り出すプログラムに変更せよ. それを「Quiz6.java 」というファイルとして作成し, いつもの要領で,WebCT に添付ファイルとして提出. 「CSV.java 」または「Projection1.java 」をコピーして作 ると良い. クラス名は「Quiz6 」としてください [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: Java? [3.3] 言語: C [4] 期限: 今日中に提出 [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
209 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:20:17 ] class Quiz6{ public static void main(String[] args){ String[][] seiseki = { {"名前"," 国語"," 算数"," 英語"}, {"あべ","45","56","98"}, {"いいだ","70","45","30"}, {"いしかわ","32","70","75"}, {"おがわ","90","10","42"}, {"かご","85","32","80"}, {"かめい","75","92","40"}, {"こんの","30","30","100"}, {"たかはし","85","20","50"}, {"たなか","80","38","68"}, {"つじ","20","60","75"}, {"にいがき","82","42","75"}, {"ふじもと","18","70","78"}, {"みちしげ","60","46","88"}, {"やぐち","28","99","82"}, {"よしざわ","76","45","80"} }; int col = Integer.parseInt( args[0] ); quiz6(seiseki,col); }
210 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:21:26 ] public static void Quiz6(String[][] table,int col){ int i,j; for(i=0; i<table.length; i++){ System.out.println(table[i][0]+","+table[i][col]); } } public static void printTable(String[][] table){ int i,j; for(i=0; i<table.length; i++){ System.out.print(table[i][0]); for(j=1; j < table[i].length; j++){ if( ★指定した列でなければ ){ System.out.print(★); } } System.out.print( "\n" ); } } } ★の箇所がわかりません。お願いします。
211 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:21:26 ] >>208 スレ違い
212 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:21:35 ] >>208 スレタイ100回読み直せ ついでに>>1 も
213 名前:128 mailto:sage [2007/06/25(月) 21:28:26 ] >>157 さん、>>174 さんありがとうございました 参考にさせていただきます
214 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:29:58 ] こいつCとJAVAの区別ついてないんじゃないの?
215 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:31:07 ] なるほど > [3.2] コンパイラ名とバージョン: Java? > [3.3] 言語: C だものな
216 名前:デフォルトの名無しさん [2007/06/25(月) 21:32:59 ] [1] 授業単元:情報数理 [2] 問題文(含コード&リンク): 複素数型を扱うライブラリcomplex.cを後述するヘッダ ファイル complex.hに基づいて作ってください。 さらにmain.cというファイルで適当な計算のサンプル を作り#include “complex.h”として作成したライブラリ が適切に動作するか検証してください。 typedef struct complex complex; /* complex 型の宣言 */ struct complex { double real; /* 実部 */ double imag; /* 虚部 */ }; /* プロトタイプ宣言 */ complex cAdd(complex, complex); /* 複素数の加算 x+y */ complex cMult(complex, complex); /* 複素数の乗算 xy */ complex cDiv(complex, complex); /* 複素数の除算 x/y */ double cAbs(complex); /* 複素数の絶対値 |x| */ complex cSub(complex, complex); /* 複素数の減算 x-y */ void printComplex(complex); /* 複素数型データのstdoutへの表示出力 */ [3] 環境 [3.1] OS:WindowsXP [3.2] bcc32 [3.3] C [4] 期限:無期限
217 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 21:37:10 ] sageし忘れました・・・。
218 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 22:09:55 ] >>134 どうかお願いしますー
219 名前:デフォルトの名無しさん [2007/06/25(月) 22:12:28 ] >>216 加算と乗算と除算と表示。 あとは他の人に任せた。 complex cAdd(complex x, complex y){/* 複素数の加算 x+y */ complex ret; /*戻り値*/ ret.real = x.real + y.real; ret.imag = x.imag + y.imag; return(ret); } complex cMult(complex x, complex y){ /* 複素数の乗算 xy */ complex ret; /*戻り値*/ ret.real = (x.real * y.real) - (x.imag * y.imag); ret.imag = (x.real * y.imag) + (x.imag * y.real); return (ret); } complex cDiv(complex x, complex y){/* 複素数の除算 x/y */ complex ret;/*戻り値*/ ret.real = ((x.real * y.real) + (x.imag * y.imag)) / ((y.real)*(y.real) + (y.imag)*(y.imag)); ret.imag = ((x.imag * y.real) - (x.real * y.imag)) / ((y.real)*(y.real) + (y.imag)*(y.imag)); return (ret); } void printComplex(complex x){ /* 複素数型データのstdoutへの表示出力 */ printf("実部 = %lf, 虚部 = %lf", x.real, x.imag); }
220 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 22:19:12 ] >>218 何ゆえ>135は無視?
221 名前:デフォルトの名無しさん [2007/06/25(月) 22:21:23 ] 途中までってのも気持ち悪いから、全部やるか…。 >>216 math.hは使ってもいいの? 使っていいのなら平方根の計算が楽なんだけど…。
222 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 22:25:10 ] 216です。はい、math.hを用いていただいても大丈夫です。ありがとうございます。
223 名前:デフォルトの名無しさん [2007/06/25(月) 22:32:24 ] 絶対値と減算。 math.hを使っていいのなら、累乗もpow()で表現すればよかったか…。まあいいや、合ってれば。 気に入らない箇所があったら適当に直しておいて。 とりあえず、x(4,2)とy(-2,3)で検証した。 よく分からないけど、これは学部一回生レベル? double cAbs(complex x){ /* 複素数の絶対値 |x| */ return(sqrt((x.real)*(x.real) + (x.imag)*(x.imag))); } complex cSub(complex x, complex y){ /* 複素数の減算 x-y */ complex ret; /*戻り値*/ ret.real = x.real - y.real; ret.imag = x.imag - y.imag; return(ret); }
224 名前:デフォルトの名無しさん [2007/06/25(月) 22:46:01 ] あ、もう答えのソース出たんだ。 ソース書いてて、「公式のコピーをC言語として写してるだけでちょうどだるくなったところだった」
225 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 23:03:32 ] どうか>>175 お願いしますー。 グラフにおける深さ優先探索です。
226 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 00:22:48 ] >>225 問1 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4395.txt dfs.exe -r のようにして起動すると再帰版 引数なしだとスタック版として動作する 見ればわかると思うが dfs_recurse()が再帰版の関数 dfs_stack()がスタック版の関数な 超適当に作ったから確認は自分でやってくれ
227 名前:デフォルトの名無しさん [2007/06/26(火) 01:48:12 ] [2] 問題文(含コード&リンク): 指定されたテキスト(data.txt)から1行ずつデータを取り込んでいき、 1行のデータが300文字以上の時はその行数と共にエラーメッセージを表示し終了。 また行頭に#が付いた行をコメント行として読み飛ばす。 [3] 言語: C [4] 期限:6.26 よろしくおねがいします
228 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 01:57:42 ] >>227 data.txt の中身の例を詳しく
229 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 02:07:37 ] >>226 ありがとうございました!
230 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 02:12:06 ] >>227 #include<stdio.h> #include<string.h> #define N 300 int main() { FILE *fp; int i = 0; char data[N+1]; fp = fopen("data.txt","r"); while(fgets(data,N+1,fp) != NULL) { i++; if(strlen(data) > N) { printf("行数:%d エラーメッセージ\n",i); break; } if(data[0] != '#') { ; } } return 0; } てきとー。質問がてきとーなんだから回答もてきとーでおkだよな?
231 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 02:14:28 ] if(strlen(data) > N) ↓ if(strlen(data) >= N) 300より上を300以上に変えたときにミスった
232 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 03:55:32 ] [1] プログラミング実習 [2] 問題文(含コード&リンク): 要素数nの整数型配列からk個の要素を選んで足し合わせ bを超えない範囲での最大数を求めるプログラムを書け ただしnは100程度、kは3程度、配列とbの値は適当に設定すること [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: BCC5.5 [3.3] 言語: C [4] 期限: 7月20日 [5] その他の制限:特にありません よろしくお願いします
233 名前:232 mailto:sage [2007/06/26(火) 03:57:41 ] すいません >>232 のkは95程度の間違いです
234 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 04:07:13 ] >>232 > 最大数 何の最大数?合計?範囲を超えないbの要素の個数k?
235 名前:232 mailto:sage [2007/06/26(火) 05:35:30 ] >>234 足し合わせた合計です。 kは自分で適当に設定してください。
236 名前:デフォルトの名無しさん [2007/06/26(火) 08:07:25 ] >>232 問題文はちゃんと書きましょう。 >要素数nの整数型配列からk個の要素を選んで足し合わせ >bを超えない範囲での最大数を求めるプログラムを書け >ただしnは100程度、kは3程度、配列とbの値は適当に設定すること 要素数を100として、その配列の中身は何? どうやって設定するの?rand()で良いの? >kは95程度の間違いです >kは自分で適当に設定してください。 せめてお前が設定しろよ
237 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 09:59:09 ] [1] 授業単元: プログラミング [2] 問題文: テキストファイルを読み込んで、"{"の数と"}"の数を数え、テキストファイルに出力するプログラムを作成しなさい. 課題実行においては以下の点に注意すること. プログラム名は「chkpair」とすること. ここで指定するデータ(ファイル),は存在するものとして仮定してよい. 読み込むテキストファイル名はプログラムを実行後にキーボードから指定する. ファイル名の長さは最大で(マクロ定数)FILENAME_MAX文字までとしてよい. 出力するテキストファイルはchkpair.outとする.すでにchkpair.outがあり書き込み権限がある場合は、出力を上書きすること. 入力ファイルによって結果が異なるので、必ずしも実行例と同じ出力になる必要はない. [3] 環境 [3.1] OS: windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C
238 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 10:01:19 ] [1] 授業単元: プログラミング [2] 問題文: 商品の在庫を管理するプログラムを作成する.在庫を扱う場合,在庫の平均単価(実数), 在庫数(整数)を管理する必要がある.本問題で作成するプログラムは,4回商品を入荷した時の平均在 庫単価と在庫総数を出力するものとする.商品入荷の時は,商品の単価と入荷数を順に入力していくものとする.このとき,平均単価と在庫数をひとつの構造体で管理するものとする. 変数を管理する構造体の名前をstock_t(この名前はtypedefで定義した名前を指す)とし,構造体のメンバを, 平均単価はdouble型とし,名前をpriceとする 在庫数はint型とし,名前をquantityとする とする. 課題実行においては以下の点に注意すること. プログラム名は「stock」とすること. プログラム実行開始直後の在庫数は0とする [3] 環境 [3.1] OS: windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C ./stock 100.0 10 200.0 10 300.0 10 555.0 30 377.5 60/*←出力*/
239 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 10:21:46 ] >>237 #include <stdio.h> #define FILENAME_MAX 128 // 環境によってはマズイ int main(void) { FILE *fpin, *fpout = fopen("chkpair.out", "w"); int ch, count1 = 0, count2 = 0; char filename[FILENAME_MAX], buf[128]; printf("filename for input : "); scanf("%s", filename); if((fpin = fopen(filename, "r")) == NULL) perror(filename), exit(1); while((ch = fgetc(fpin)) != EOF){ if(ch == '{') count1++; else if(ch == '}') count2++; } sprintf(buf, "{ : %d\n} : %d\n", count1, count2); fputs(buf, fpout); fclose(fpin); fclose(fpout); return 0; }
240 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 10:30:48 ] >>238 #include <stdio.h> typedef struct tag_stock_t{ double price; int quantity; }stock_t; int main(void) { stock_t x[4]; double price_sum = 0, price_ave; int i, num = 0; for(i = 0; i < 4; i++) scanf("%lf%d", &x[i].price, &x[i].quantity); for(i = 0; i < 4; i++){ price_sum += x[i].price*x[i].quantity; num += x[i].quantity; } price_ave = price_sum/num; printf("%.1f %d\n", price_ave, num); return 0; }
241 名前:227 [2007/06/26(火) 10:43:16 ] data.txtはこんなかんじです。 #正の数 133 535 846 167 335 #負の数 -647 -673 -384 -384 -373
242 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 10:47:29 ] >>239 > #define FILENAME_MAX 128 // 環境によってはマズイ うむ、かなりまずい。stdio.h にマクロ定義されていると思われるんで 敢えてそこで定義しない方が良いかも
243 名前:デフォルトの名無しさん [2007/06/26(火) 10:56:24 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク): 3d^2x/dt^2+dx/dt+2x=4 x(t=0)=0 dx/dt(t=0)=0 上記の微分方程式をルンゲークッタ法を用いて解け [3] 環境 [3.1] OS: windowsXP [3.2] コンパイラ名とバージョン: bcc32 [3.3] 言語: C言語 [4] 期限: ([2007年6月25日まで [5] その他の制限: なし お願いします
244 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 11:16:50 ] [1] 授業単元:プログラミング1 [2] 問題文(含コード&リンク): 年と月を入力すると、カレンダーを表示するプログラムの作成。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.3 [3.3] 言語: C [4] 期限: 6月27日 [5] その他の制限:入門者らしいつくりでお願いします。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4399.c 此所まではやってみたのですが、実行したときに" 日 月 火 水 木 金 土" の部分しか表示されないので困っています。
245 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 11:41:21 ] >>244 曜日を得るのは標準関数を使えばいいのに…… それはさておき、 ・monthは1〜12なのに[0〜11]の配列をそのまま参照している。 ・「土」の後に改行していない。 のは問題かな。 後はもっと細かく見ないと判らん。
246 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 11:49:09 ] if(month==2&&(year % 4 == 0 && year % 100 != 0 || year % 400 == 0)) return(day[2]+1); これねぇ、本当は良くない。できればうるう年なら day[2] = 29; そうでないなら day[2]=28; にした方が良い。ここでは問題ないけど、何回か呼び出しをした場合 これだとうるう年に該当するたびに2月の日数が1ずつ加算されていくから。
247 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 11:51:01 ] 何を言ってるんだ
248 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 11:51:24 ] >>246 もしもーし、脳味噌入ってますか〜?
249 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 11:59:00 ] >>247 >>248 理解力のない馬鹿は視ねよw
250 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:00:26 ] >>245 ,246返信ありがとうございます。 指摘頂いた部分やその他修正したらカレンダーらしいものは表示が出るようになりました。 あとは1月2月3月らへんが多少ずれてるのですがこれはどう直したら良いでしょうか。
251 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:01:34 ] >249 頭が腐ってるのか目が腐ってるのか知らんが、もう一度よく見直せ。
252 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:03:51 ] >>249 マジで言ってるなら医者に行くか、取り敢えず寝てきたら? 100年くらい。 >>250 エスパーじゃないからどうずれるのか判らんし、そこがデバッグの楽しみだろう。 つーか、曜日の計算と改行する条件判断はあってる? youbiが1のときは何曜日のつもり?
253 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:05:23 ] やった!おまいら釣られてやんのっ(プ コードを見りゃ加算されるわけねーってバレバレじゃんw
254 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:08:09 ] いや、顔真っ赤にして後釣り宣言しなくていいから。
255 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:12:20 ] プププッ、ネタでボケて書いたことをマジに受けて茶化し、煽りレス入れている こんな時間にいる引きこもりニーツがきめぇ〜〜んだよ(プ 俺?俺は大学の研究室からやw
256 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:14:46 ] どこの脳内研究室なんだか。
257 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:15:18 ] 都内の某ランクSの大学ですが何か?
258 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:16:38 ] それじゃ、次のボケをお願いします。もうちょっと判り難いのがいいかな。
259 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:19:03 ] >257 本当にSランクなら、そもそも釣りなんて無駄なことはしない
260 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:20:19 ] >>244 を実行してみたけど、1日の表示がおかしい、曜日がきちっと算出されていない。 もうこんなんじゃ、月(付き)合ってらんね〜
261 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:21:39 ] >>259 Sランク級の釣りにビビッてんだろぉ?Sランク級の釣りにお前がチビッているのがわかるぜ?
262 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:25:59 ] ランクSAITEIのランクSだなw
263 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 12:28:03 ] ちっちっち、違うぜ?Sugoi、Super、SutekiのSだぜ?お前らとは質が違うよ、質が。
264 名前:デフォルトの名無しさん [2007/06/26(火) 12:31:44 ] [1] プログラミング基礎 [2] 以下のプログラムは,都道府県名(ローマ字)を入力すると,各都道府県の人口(人)と面積(km2)が列挙されたファイル prefectures.dat からデータを読み込み,指定した都道府県の人口,面積およびそれらの比である人口密度を表示するプログラムである. このプログラムを以下の例のように,人口,面積について 日本全体の総和に対する比率(百分率) も表示されるように書き換えよ. 実行例: nodabls?% ./a.out[Enter] chiba[Enter] Statistics of the Chiba Population = 6056159 (4.7 %) Area (km^2) = 5156.19 (1.4 %) Density (per km^2) = 1174.54 [3.1] Unix [3.2] gcc [3.3] c [4] 2007年6月29日(金)
265 名前:デフォルトの名無しさん [2007/06/26(火) 12:33:21 ] 続き プログラム /* density.c: calculate population density for the given prefecture */ #include <stdio.h> #include <strings.h> int main(void) { char name[20], query[20]; int pop; double area, den; FILE *fp; fp = fopen("prefectures.dat", "r"); /* ファイルオープン */ if (fp == NULL) { /* オープンに失敗? */ fprintf(stderr, "Can't open file!\n"); return (-1); } scanf("%s", query); /* 都道府県名を入力 */ den = -1.0; /* 1行分の情報を読み込みつつループをファイル末尾まで繰り返し */ while (fscanf(fp, "%s%d%lf", name, &pop, &area) != EOF) { if (strcasecmp(name, query) == 0) { /* 都道府県名が一致? */ den = pop / area; /* 人口密度 = 人口/面積 */ printf("Statistics of the %s\n", name); printf("Population = %10d\n", pop); printf("Area (km^2) = %10.2f\n", area); printf("Density (per km^2) = %10.2f\n", den); break; /* ループから抜ける */