1 名前:デフォルトの名無しさん [2008/04/15(火) 23:07:41 ] あなたが解けない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++の宿題を片付けます 104代目 pc11.2ch.net/test/read.cgi/tech/1202135539/
348 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 00:18:51 ] >>347 #include<stdio.h> #define N 1000000 int main(void){ int min,max,mid; int count1,count2; int data,i; FILE *fp; fp=fopen("bdata.txt", "r"); if(fp==NULL) return 1; count1=0; while(fscanf(fp, "%d", &data)==1) count1+=data; fclose(fp); if(N%2) count2=(N+1)/2*N; else count2=N/2*(N+1); printf("%d\n", count2-count1); return 0; }
349 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 00:28:15 ] >>348 >if(N%2) count2=(N+1)/2*N; >else count2=N/2*(N+1); は場合分けする必要が無いだろ 答えは出るし効率もいいけど指定された解法じゃない
350 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 00:30:17 ] >>348 ありがとうございます。 本当に助かりました。
351 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 00:40:45 ] いや、助かってないでしょw 解法が違う以外にも、intが32bitじゃ足りないし。
352 名前:348 mailto:sage [2008/04/23(水) 00:52:43 ] >>347 解法無視してたので訂正版 >>351 >>349 の指摘している場合分けのおかげで正しい答えがでる #include<stdio.h> #define N 1000000 int main(void){ int min,max,mid; int count1,count2; int data,i; FILE *fp; fp=fopen("bdata.txt", "r"); if(fp==NULL) return 1; min=1; max=N; while(min<max){ mid=(min+max)/2; count1=count2=0; fseek(fp, 0L, SEEK_SET); for(i=0;i<N-1;i++){ fscanf(fp, "%d", &data); if(data>=min && data<=max){ if(data<=mid) count1++; else count2++; } } if(count1<mid-min+1) max=mid; else min=mid+1; } fclose(fp); printf("%d\n", max); return 0; }
353 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 00:53:42 ] 347です。確かに348さんのやつで、それらしき解答が出るのですが、 初心者の私にはソースを読んでも理解できませんでした。 どなたか助けてください。
354 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 00:57:09 ] 理解できないならあきらめるしか無いと思うが
355 名前:351 mailto:sage [2008/04/23(水) 01:03:00 ] ああなるほど、オーバーフローしても差は正しくなるってことか。 >>353 まず、値の総和を計算している。 1〜Nまで全部揃っているなら、総和はN*(N+1)/2になるはず。 しかし1個だけ値が足りない、総和はその値の分だけ少なくなる。
356 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 01:23:20 ] 347です。 355さんの説明で348のソースを理解できました。ありがとうございます。 352の改訂版のfseek(fp, 0L, SEEK_SET); のfseek関数を知らないので,ググったらファイルの位置指示子の設定とあったのですが、 この役割をどなたか教えていただけませんか。 また、fseek関数を使わない方法はないのでしょうか。
357 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 01:24:42 ] >>316 当方の環境はWindowsXP, 処理系はcygwin(gcc 3..4.4) です。 課題 1:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6312.txt 課題 2:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6313.txt 課題 3:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6314.txt 課題 4:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6315.txt >>346 ですでに回答がありますので、お友達にでも贈ってください。
358 名前:264 [2008/04/23(水) 01:31:22 ] ありがとうございます!
359 名前:348 mailto:sage [2008/04/23(水) 01:33:42 ] >>356 #include<stdio.h> #define N 1000000 int main(void){ int min,max,mid; int count1,count2; int data,i; FILE *fp; min=1; max=N; while(min<max){ mid=(min+max)/2; count1=count2=0; fp=fopen("bdata.txt", "r"); if(fp==NULL) return 1; for(i=0;i<N-1;i++){ fscanf(fp, "%d", &data); if(data>=min && data<=max){ if(data<=mid) count1++; else count2++; } } fclose(fp); if(count1<mid-min+1) max=mid; else min=mid+1; } printf("%d\n", max); return 0; }
360 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 01:55:39 ] >>359 何度もありがとうございます。本当にありがとう。
361 名前:デフォルトの名無しさん [2008/04/23(水) 04:00:39 ] すみません 質問良いですか? class split { public: char a : 1; char b : 2 ; char c : 5;} char x[1000]; split *z; z=&x[10]; z->a; とすればxの値を部分的に読み取れますか?
362 名前:361 [2008/04/23(水) 04:08:45 ] 自己解決しました 符号無しにすれば正常に読み取れるみたいです
363 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 05:47:26 ] 誰か>>361-362 を解説してくれ
364 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 06:42:28 ] >>357 とか、かなり前に散々既出で決まった、ISO準拠の int main(void) あるいは int argc , char*argv[] を使ってない EOFについて噛み付いてきた新入りって何モノ? 初心者、素人臭が漂いすぎ・・・
365 名前:デフォルトの名無しさん [2008/04/23(水) 06:45:23 ] すみません、335お願いします・・・
366 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 06:58:49 ] >>336 EOFがキーボードから入力できるかの話だろ もはや何の話を(ry
367 名前:デフォルトの名無しさん [2008/04/23(水) 07:19:49 ] ドザが二匹いてどっちもドザだからまともな議論にならないだけだな。
368 名前:デフォルトの名無しさん [2008/04/23(水) 08:01:37 ] ドザってなに?
369 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 08:19:08 ] # <これをNGにすると、#includeで引っかかってしまうが # < これをNGにすると、奴の脳内レスを排除できますw
370 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 08:23:20 ] >>364 課題2, 課題3, 課題4 では int argc, char*argv[]を使っています。
371 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 08:24:27 ] #define NAME_F 11 for (j = 0; j < NAME_F - strlen(member[i]->name); j++) ↑ん〜〜〜、ん〜〜〜、やっぱ きんもぉ〜☆
372 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 08:29:31 ] これから理論的に反論できないキチガイのレスが続きますが一切放置で
373 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 08:39:51 ] >>372 自己紹介乙。それをやっているのはお前だから、こいつを放置よろ。
374 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 08:42:59 ] まぁ、別に問題とは言わんが、これは主観的な意見にもなるかもしれんが #defineなど定義などは、上にまとめておいて、管理しやすくするのも良い。 あと・・・毎回 strlen で値を算出してたら、回数が少ない場合は気にならないが 繰り返す上では無駄が生じるよ。だったら、そのために変数を定義して 使った方が良いんじゃない?以上、京大、東大卒の教授の下で指導を受けた元生徒より。
375 名前:316 mailto:sage [2008/04/23(水) 09:39:59 ] ありがとうございました。 大変助かりました。
376 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 11:33:22 ] >>374 そこまで自己主張するならコテ&トリップつければいいのに
377 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 11:35:29 ] >>376 しつけぇ、お前がトリップつけろ。側NGにしてやるから
378 名前:偽者of京大、東大卒の教授の下で指導を受けた元生徒 mailto:sage [2008/04/23(水) 12:03:46 ] ドザとか目的も無くスラング使いたがる奴はDQN率が高い
379 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 12:09:00 ] 死刑判決受けた元少年みたいだな とりあえずお前をNGに追加した、サンクス
380 名前:デフォルトの名無しさん [2008/04/23(水) 12:50:57 ] [1] 授業単元:プログラミング基礎 [2] 問題文(含コード&リンク): 課題1 1、3つのポインタ型変数と3つの変数が char c, *pc; int i, *pi; double d, *pd; と定義され、 pc = &c; pi = &i; pd = &d; と初期化されたポインタに対して pc++; pi++; pd++; 加算したときに、格納されている値が(つまり格納しているアドレスが)何バイト 増えたか表示するプログラムを作成せよ。 2、完成させたプログラムを実行し、その結果について、3つのポインタ型変数を それぞれ加算したときの増分されるバイト数が異なる理由を(実行結果を引用してもよい) 説明せよ。 3、適当な配列int a[5]={1,-2,3,4,5};を定義し、その内容をポインタ変数 int *pa; を用いて 表示するプログラムを作成しなさい。 [3] 環境 [3.1] OS:Linux [3.2] gcc [3.3] 言語:C [4] 期限: 2008年4月23日22:00まで [5] その他の制限: なし
381 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 16:43:58 ] [1] 授業単元:プログラミング実習第一 [2] 問題文(含コード&リンク): 配列のすべての要素の最大公約数を求める関数gcdpを実装し、それを用い入力された10個の最大公約数を表示するプログラムを作りなさい。 [3] 環境 [3.1] MacOSX [3.2] gcc [3.3] 言語: C [4] 期限: 4月25日18:00まで [5] その他の制限:必ず配列を使うこと。ポインタは習ってないので使わないでください。
382 名前:偽者of京大、東大卒の教授の下で指導を受けた元生徒 mailto:sage [2008/04/23(水) 16:51:51 ] >>381 #include<stdio.h> int gcd(int a, int b){ int c; while((c=a%b)) a=b,b=c; return b; } int gcdp(int arr[], int arrsize){ int i, ret; ret=arr[0]; for(i=1;i<arrsize;i++) ret=gcd(arr[i], ret); return ret; } int main(void){ int arr[]={60, 70, 80, 90, 25, 100, 10, 75, 30, 35}; printf("%d\n", gcdp(arr, 10)); return 0; }
383 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 17:16:07 ] >入力された
384 名前:偽者of京大、東大卒の教授の下で指導を受けた元生徒 mailto:sage [2008/04/23(水) 17:18:42 ] >>382 のmain関数訂正 int main(void){ int i, arr[10]; for(i=0;i<10;i++) scanf("%d", &arr[i]); printf("%d\n", gcdp(arr, 10)); return 0; }
385 名前:デフォルトの名無しさん [2008/04/23(水) 20:40:37 ] マネージャパン、月刊アスキー、週刊アスキーの3誌は共同で6月にFXのシステムトレーグランプリ「シストレFXグランプリ」を開催。 詳細WEBページは5/15開設予定で(www.fx-gp.com)、5月22日より登録受付開始、6月2日よりグランプリ開始の予定。賞金総額2000万円。 主催はマネージャパン、月刊アスキー、週刊アスキー、協賛はクリック証券。 ttp://system-trading.jp/news/index.php?ID=39
386 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 22:39:29 ] >>335 @ while(fin==0){ /* finフラグが立つまで繰り返す */ /* tmp_nodeを経由する方が距離が小さくなるノードを探して最短距離と前ノード表を更新 */ /* まだ最短距離が確定していないノードの中から次の探索ノードを選ぶ */ tmp_dist = dist[tmp_node]; for(i=0; i < NODE_NUM; ++i){ a = graph[tmp_node][i]; /* tmp_nodeからiまで距離 */ if(a == MAX || tmp_node == i || chk[i] == 1) continue; b = tmp_dist + a; /* 始点からのtmp_node経由のiまでの距離 */ if(b < dist[i]){ path[i] = tmp_node; dist[i] = b; } } j = NODE_NUM; /* 未確定ノードの内、始点から最短距離のノード */ c = MAX; /* 始点からの距離 */ for(i=0; i < NODE_NUM; ++i){ if(chk[i] == 1 || dist[i] == MAX) continue; if(dist[i] < c){ j = i; c = dist[i]; } } if(j != NODE_NUM){ chk[j] = 1; tmp_node = j; continue; } fin = 1; /* 終点ノードへの最短距離が確定したら終了 */ }
387 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 23:40:23 ] >>380 1. printf("1byte, 4(or 2)byte, 8byte"); 2. 確保するメモリサイズが違う 3. pa = a; for(int i = 0; i < sizeof(a); i++) printf("%d", pa[i]) コード書き始めて期限切れに気付いたからてきとーにしといた
388 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 00:23:27 ] >>387 3番は pa = a; for(i = 0;i < sizeof(a)/sizeof(int);i++){ printf("%d",*(p+i)); } を期待してるんだと思う
389 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 00:34:37 ] >>388 なるほど。 んじゃ1、2を踏まえて for(〜) printf("%d", *pa); pa++; ってのもありかな
390 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 09:35:48 ] [1] 授業単元:文字列操作、配列 [2] 問題文(含コード&リンク): 不規則な文字列が延々と続いてるファイルを読み込み、main関数から区切る文字または文字列を取得し 区切り毎に2次元配列に格納して格納した回数を戻り値として返す関数を作成せよ。 文字列中に \n があった場合は削除し、 区切りの文字・文字列が連続した場合は配列には \0 を返すものとする。 配列の行数または列数のどちらかを512とする。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: VC 6.0 [3.3] 言語: C [4] 期限: 本日午前中 [5] その他制限: strtokを使わないこと まったくわからんです、お願いします・・・
391 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 11:44:53 ] もうすぐ午後やで・・・
392 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 11:49:43 ] r、ノVV^ー八 、^':::::::::::::::::::::::^vィ 、ヽ l / , l..:.::::::::::::::::::::::::::::イ = = |.:::::::::::::::::::::::::::::: | ニ= 元 そ -= |:r¬‐--─勹:::::| ニ= 生 れ =ニ |:} __ 、._ `}f'〉n_ =- 徒. で -= 、、 l | /, , ,ヘ}´`'`` `´` |ノ:::|.| ヽ ニ .な. も ニ .ヽ ´´, ,ゝ|、 、, l|ヽ:ヽヽ } ´r ら ヽ` .ヽ し き 元 ニ. /|{/ :ヽ -=- ./| |.|:::::| | | ´/小ヽ` = て っ 生 =ニ /:.:.::ヽ、 \二/ :| |.|:::::| | / ニ く. と 徒 -= ヽ、:.:::::::ヽ、._、 _,ノ/.:::::| | /| = れ.何 な -= ヽ、:::::::::\、__/::.z先.:| |' :| ニ る と ら =ニ | |:::::::::::::::::::::::::::::::::::.|'夂.:Y′ト、 /, : か ヽ、 | |::::::::::::::::::::::::::::::::::::_土_::| '゙, .\ / ヽ、 | |:::::::::::::::::::::::::::::::::::.|:半:|.ト、 \ / / 小 \ r¬|ノ::::::::::::::::::::::::::::::::::::::::::::::::| \
393 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 11:50:52 ] >>392 粘着うぜーw どうせなら元生徒じゃなくて、教授に頼めよw
394 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 12:00:07 ] [1] 授業単元:プログラミング1 [2] 問題文 整数3つを入力して2番目に大きい値を出力せよ [3] 環境 [3.1] OS: Windowsxp [3.2] コンパイラ名とバージョン:VC 6.0 [3.3] 言語: C [4] 期限: 本日2時まで [5] その他の制限: どうかお願いします
395 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 12:00:07 ] あぁ〜〜、作り始めたが間に合わなかったか・・・もう午後だから無理ぽ?
396 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 13:13:11 ] >>394 きみとほとんど同じくらいの初心者が作ったものでよければ kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6319.txt
397 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 13:32:24 ] >>396 ありがとうございます 間に合いました
398 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 13:35:17 ] [1] 授業単元:C++概論 [2] 問題文 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6321.txt このヘッダに記載された内容を把握し、ヘッダを使用したプログラムを作成せよ [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: わかりません [3.3] 言語:C++ [4] 期限: 2008/04/27 [5] その他の制限: 特に制限はありません。C++初心者なのですが、いきなりヘッダファイルのみ渡されて まず何をすればよいのかすらわからない状況です。よろしくお願いします。
399 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 13:51:36 ] >>398 こんなの宣言しかないのじゃ誰もできないだろ 他に条件とかファイルとか指定されて無いのか? それとも各クラスを適当に実装して動作確認しろってことか?
400 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 14:00:21 ] >>399 恐らくこれを利用して座標、ベクトル、行列の演算を一通り出来るようにしろと言うことだと思います。 課題の出され方が漠然としすぎていて手付かずの状態なので、方針だけでもご教授いただけたら幸です。
401 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 15:30:09 ] >>395 居残り確定っぽいんですが、参考にしたいので お時間があったらお願いします。
402 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 15:38:42 ] >>401 俺のきしょいクソースを見たいとな?ならば見せて進ぜよう、後ほど。
403 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 16:24:33 ] うわっ、なんかあれこれやってたらきんもぉ〜ソースってレヴェルじゃねーぞっ になったんで、期待せんでくれ・・・
404 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 17:06:00 ] いちいちそんなこと書かなくていいから。 ほんとレス乞食はうぜーな。
405 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 17:08:27 ] >>390 >>401 うわぁ〜〜〜〜 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6323.c
406 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 17:08:56 ] >>404 んじゃあーげないっと、お前も見たけりゃ余計なことを言わなきゃ良いのになw
407 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 17:17:31 ] >>406 お前のうんこ見なくてすむかと思うとほっとしたよ。 あと、かまって欲しいのわかるけど、いいかげんコテつけてくんない? 速攻NGにするから。
408 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 17:18:44 ] 自作自演って、あーた・・・そうやって煽って、本当は見たいんだろぉ〜? 必死だなw
409 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 17:20:03 ] >>407 =>> 249 名前:デフォルトの名無しさん 投稿日:2008/04/22(火) 06:09:41 >>248 おまえが考えてる入力の意味ってなに? ↑こいつうぜー
410 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 17:30:52 ] それが同一人物に見えるのはお前だけだからw
411 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 17:31:22 ] >>409 反論できてねーだろwwwww顔真っ赤すぎて超うけるwwwww
412 名前:390 mailto:sage [2008/04/24(木) 17:33:08 ] 一応自分でこんな感じに作ったのはいいんですが、 キャストと配列への格納がうまくいかずお手上げ状態です ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6324.txt
413 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 17:43:10 ] >>412 もうちょっと速ければ見せてもらえたのに。 元生徒もうへそ曲げちゃったから。。。
414 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 17:50:20 ] >>404 そいつにレスしているお前も同じだろ・・・お前が 言 う な
415 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 17:52:58 ] >>83-88 のコピペに反応しているお前が言うなレス乞食の >>404 が痛すぎ・・・ >>413 しつけぇ。所詮お前みたいなカスは妬むだけだろ。 失せろ、答えないくせに粘着する無能
416 名前:デフォルトの名無しさん mailto:age [2008/04/24(木) 17:57:52 ] 414 :デフォルトの名無しさん [sage] :2008/04/24(木) 17:50:20 >>404 そいつにレスしているお前も同じだろ・・・お前が 言 う な 415 :デフォルトの名無しさん [sage] :2008/04/24(木) 17:52:58 >>83-88 のコピペに反応しているお前が言うなレス乞食の >>404 が痛すぎ・・・ >>413 しつけぇ。所詮お前みたいなカスは妬むだけだろ。 失せろ、答えないくせに粘着する無能 顔真っ赤wwwww
417 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 18:06:47 ] >>390 >>401 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6325.c
418 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 18:07:51 ] >>416 お前を通報しておく。用がないなら来るな、見るな、書くな、鬱陶しい
419 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 18:13:07 ] >>417 設問ちゃんと読んだら?
420 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 18:53:23 ] >>390 >>401 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6326.c
421 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 18:58:32 ] >>390 >>401 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6327.c
422 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 19:55:47 ] >>412 21:00 まで待てますでしょうか?
423 名前:422 mailto:sage [2008/04/24(木) 20:57:17 ] >>412 当方で確認した環境は WindowsXP, 処理系は cygwin(gcc 3.4.4) です。 提示されたソースをもとに、考え直してみました。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6328.txt
424 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 20:59:53 ] >>423 ソースコード見てないけど納期を守るお前がすばらしい うちの会社来ないか?
425 名前:デフォルトの名無しさん [2008/04/24(木) 21:24:38 ] [1] 授業単元:プログラミング実習 [2] 問題文:一覧ファイル(infile.csv)に「グループ名,学籍番号,名前」の順でデータが入っています。学籍番号のみをDATAに格納せよ。 [3] 環境 [3.1] OS: Windows 2000 [3.2] コンパイラ名とバージョン: わかりません [3.3] 言語:C [4] 期限: 本日中(4/24) [5] その他の制限: 特に制限はありません。C初心者で全く分かりません。時間があまりないですがよろしくお願いします。
426 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 21:31:07 ] >>425 > DATAに格納せよ。 の意味をおしえてください。DATA という名前のファイルに順に記録していけばいいのでしょうか?
427 名前:デフォルトの名無しさん [2008/04/24(木) 21:42:23 ] [1] 授業単元:CプログラミングU [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6329.txt [3] 環境 [3.1] Windows [3.2] Visual C++ 6.0 [3.3] C [4] 期限:2008年4月26日まで [5] その他の制限: 関数と再帰法を使って完成させるそうです,関数辺りが全く分からないので,よろしくお願いします.
428 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 21:48:11 ] >>427 倫理的によくないと思います。
429 名前:デフォルトの名無しさん [2008/04/24(木) 21:56:58 ] >>428 ・・・・・・課題なので仕方ないんですよ.
430 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 22:05:19 ] #include <stdio.h> int num_of_pairs(int year) { int y, num; if(year < 1) return 0; else if(year == 1) return 1; else { num = 0; for(y = 1; y < year; y ++) num += num_of_pairs(y); return num; } } int main() { int y, num = 0, num_last; for(y = 1; y <= 10; y ++) { num_last = num; num = num_of_pairs(y); printf("\n%d年目のつがい数は%d", y, num); if(num_last) printf("で、前年の%f倍、", (double)num / num_last); } printf("\nかな?\n"); return 0; }
431 名前:143 mailto:sage [2008/04/24(木) 22:08:28 ] >>144 ありがとうございましたっ・・・と言いたいのですが、またクレームがきてしまいました; >>149 いえいえ、わざわざ作っていただいたので、参考にさせていただきます。 >>150 ,152,155 ありがとうございましたっ、なんとか解決できそうです。
432 名前:デフォルトの名無しさん [2008/04/24(木) 22:15:19 ] >>430 回答ありがとうございました,しかし実行したら 1年目のつがい数は1 2年目のつがい数は1で、前年の1.000000倍、 3年目のつがい数は2で、前年の2.000000倍、 4年目のつがい数は4で、前年の2.000000倍、 5年目のつがい数は8で、前年の2.000000倍、 6年目のつがい数は16で、前年の2.000000倍、 7年目のつがい数は32で、前年の2.000000倍、 8年目のつがい数は64で、前年の2.000000倍、 9年目のつがい数は128で、前年の2.000000倍、 10年目のつがい数は256で、前年の2.000000倍、 かな? と表示されました,10年目のつがいの数は55になるはずなので ちょっと違っているみたいです.つがいの数はフィボナッチ数になる らしく 1,1,2,3,5,8,13・・・と続くみたいなんです,すみません.
433 名前:425 [2008/04/24(木) 22:16:02 ] プログラム機能仕様に、 「一覧ファイル(infile.csv)を開き、char型配のDATAに学籍番号を読み込む。」とありました。 説明不足で申し訳ないです。
434 名前:425 [2008/04/24(木) 22:18:30 ] >>426 アンカーつけ忘れました。すいません
435 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 22:24:13 ] >>432 そっか、各世代がまた産むからと思って、足しすぎた。 num_of_pairs(year - 2)が生まれる全数だね。 int num_of_pairs(int year) { if(year < 1) return 0; else if(year == 1) return 1; else return num_of_pairs(year - 2) + num_of_pairs(year - 1); }
436 名前:デフォルトの名無しさん [2008/04/24(木) 22:26:45 ] >>435 これで何とか間に合いそうです.完璧な回答ありがとうございました!
437 名前:426 mailto:sage [2008/04/24(木) 22:32:59 ] >>434 今ひとつ、はっきりしません。 問題を全部さらしていただくとありがたいのですが。
438 名前:デフォルトの名無しさん mailto:age [2008/04/24(木) 22:36:17 ] [1] 授業単元:Cプログラミング言語 [2] 問題文(含コード&リンク): @kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6330.txt Akansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6331.txt [3] 環境 [3.1] OS: (Windows) [3.2] コンパイラ名とバージョン:CPad for Borland [3.3] 言語: (C) [4] 期限:明日まで [5] その他の制限:txt参照 連投ですいません。前回質問させていただいたのですが、また質問させてもらいます。 @で有効範囲外に数字以外が入ると、エラーを起こしてしまい 数字以外を無視するということができなかったのですが、どうすればいいでしょうか? @プログラムとして見づらいとこのことで、少し修正もできればよろしくお願いします。 そしてAの方なのですが、nを使用してとのことで>>144 さんのやり方をしたのですが、 どうもa自体を使うなとのことだったので、少しいじってみたのですが、 警告 W8008 wa_prc19.c 30: 条件が常に真(関数 main ) 警告 W8008 wa_prc19.c 30: 条件が常に真(関数 main ) 警告 W8066 wa_prc19.c 31: 実行されないコード(関数 main ) と出てしまい、書き方が悪かったせいで、反転作業が常に0に; そして、先ほどの@とは逆に、 例)255asdと書くとそのまま255で処理してしまい、不正入力として扱わない。 256はエラーだが、2550は255の処理をする。 といった感じになってしまってます。 今日中で申し訳ないのですが、よろしければよろしくお願いします。
439 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 23:13:22 ] >>438 @ kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6332.txt
440 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 23:20:36 ] >>425 当方で確認した環境は WindowsXP, 処理系は cygwin(gcc 3.4.4) です。 とりあえず、「char 型配列 である DATA に順に格納する」ことにして作成しました。 プログラムの最後で、char DATA[] の中身を画面に出力させています。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6333.txt
441 名前:425 [2008/04/24(木) 23:27:06 ] >>437 えっと、作業をチームで分担していて自分は学籍番号検索処理を任されています。 全体的なプログラム内容は、一覧ファイル(infile.csv)に生徒の情報(グループ名、学籍番号、名前など)を登録していくことです。 その際、学籍番号は入力必須で、検索機能を使うことで重複していないか確認するというものです。 現在、手元にプログラム設計書のプログラム機能仕様書しかないのでとりあえずこれを書き出します。(機能仕様書は講師の方に一応okをもらいました) 概要:学籍番号欄に入力されたデータ(char型配列)が学生の一覧ファイルに入っているかの判定処理。 関数名:int GKS(char *value) //学籍番号のみをMAIN関数から受け取って使う。 戻り値:int error_no //初期値0のエラー判定フラグ 引数:*value //ブラウザから学籍番号欄に入力されたchar型配列データ。 詳細:@MAIN関数からvalueを受け取る。 A一覧ファイル(infile.csv)を開き、char型配列のDATAに読み込む。 A-1 temp.csvを開く。 Binfile.csvの学籍番号とvalueを比較する。 B-1 valueと一致するデータがある場合、該当する全データ(グループ名、学籍番号、名前等)をtemp.csvに書き込む。 B-2 valueと一致するデータがない場合、int型error_noに”1”を格納する。 C一覧ファイル、temp.csvを閉じる。 DMAIN関数に、error_noを渡す。 プログラミング初心者で説明できることもこのくらいしかなく申し訳ないです。 分からなければそれはそれで結構ですので分かった場合のみ解答お願いします。 今日中と書きましたが2時頃まで待ちます。もしくは明日の朝に確認します。
442 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 23:28:10 ] >>439 横から口出してもうしわけないけど 欲を言えばinputIntの戻り値はenumにするともっとまとまると思うよ。 キレイなコードごちそうさまでした。
443 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 23:33:31 ] ケツから押し込むようで申し込みたいんだけど 欲を言えばisdigitでも使っておk
444 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 23:34:42 ] >>438 んー、これの一部は、私が書いたものですね。 @では、cnt が 0〜7 の間のときに数字以外のものが入力されたら err = 1 とすればいいのではないでしょうか。 Aでは cnt は使わなくてもいいと思います。 またまた同じことを言うのはもうしわけありませんが、 同じような処理(二進数を表示する)は、サブの関数にするのがわかりやすいと思うのですが、いかが? 「n を左にシフトさせる -> 表示する -> また右にシフトして元に戻す。」 とするくらいならば、 「n を左にシフトさせた結果をサブの関数に渡す。サブの関数は渡された値を表示する。」と考えるのです。 メインでは n の値自身は変化しないので、「元に戻すためにシフトする」必要がなくなると思います。 全ビットを反転させる演算子は ^ ではなくて ~ です。 当方で確認した環境は WindowsXP, 処理系は cygwin(gcc 3.4.4) です。 @ kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6335.txt A kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6336.txt
445 名前:439 mailto:sage [2008/04/24(木) 23:37:31 ] >>438 A 問題点を挙げるので、それぞれ理解してください。 ・入力処理でunsigned charに入れると、256以上が入らないので、エラーチェックができない。 ・不正文字のチェックがif(cnt<3)の中に入っているので、4文字目以降をチェックしていない。 ・unsigned charの上限は255なので、if(n>255)の条件は絶対に成立しない。(警告の原因) ・nを直接左シフトすると、右シフトしても左端のビットは戻ってこない(必ずビットは0)。 ・n^=n は、n=n^nと等価。n^nは必ず0になる。^は排他的論理和。 ・printfの引数にnは3つもいらない(実害無し) ということで、はいデバッグ済みのソース kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6334.txt >>442 それは思ったが、当人のレベルを考えて控えた・・・。
446 名前:425 [2008/04/24(木) 23:37:32 ] >>440 ありがとうございます!明日これでやってみます。 説明不足でほんとすいませんでした。
447 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 00:00:56 ] >>441 では、GKS() 自体については私はくわからないので、すみませんが考えていただくことにして、 「GKS() を動作させる準備として、配列 DATA[][] に infile.csv の学籍番号データを読み込んでおく」プログラムを up します。 DATA は、DATA[i][1024]にして、 一人目の学籍番号は DATA[1][0]〜DATA[1][学籍番号の桁数 - 1] に記録、 二人目の学籍番号は DATA[2][0]〜DATA[2][学籍番号の桁数 - 1] に記録、 ... i 人目の学籍番号は DATA[i][0]〜DATA[i][学籍番号の桁数 - 1] に記録, としました。 確認した環境は WindowsXP, 処理系は cygwin(3.4.4) です。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6337.txt
448 名前:TT mailto:s_040095@hotmail.co.jp [2008/04/25(金) 01:46:08 ] 「Continue文」を使った宿題が出ました 内容が「60点以上を合格とし、合格者の平均点を出力する」です 誰かソースを教えて下さいm(_ _)m
449 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 01:49:20 ] >>1 を読んで書き直し
450 名前:デフォルトの名無しさん [2008/04/25(金) 02:07:32 ] >>436 内部はやっぱり頭悪いなw
451 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 05:00:29 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6339.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2008年4月25日22:00まで [5] その他の制限:先生が言ってたヒントでは問1は二重ループを、 問2はメモリの動的確保を使えばいいということです。 自分でもかなり考えたのですが結局どうやればいいのか分かりませんでした…。 よろしくお願いします。
452 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 05:41:34 ] >>451 #include <stdio.h> #include <string.h> #include <stdlib.h> int myStrstr(char *strA, char *strB){ int i, j, pos; pos = -1; for(i=0; strA[i] != '\0'; ++i){ if(strA[i] == strB[0]){ for(j=1; strB[j] != '\0' && strA[i+j] == strB[j]; ++j); if(strB[j] == '\0'){ pos = i; break; } } } return pos; } char* strDouble(char *strA){ char *p; int i; p = (char*)malloc(sizeof(char) * (strlen(strA) * 2 + 1)); if(p == NULL) return NULL; for(i=0; strA[i] != '\0'; ++i){ p[i*2] = strA[i]; p[i*2+1] = strA[i]; } p[i*2] = '\0'; return p; }