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/
299 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:03:45 ] >>296 少なくとも変数 ch は int 型でないといけない
300 名前:デフォルトの名無しさん [2008/04/22(火) 17:07:05 ] >>294 どうもありがとうございます!!
301 名前:249 mailto:sage [2008/04/22(火) 17:07:17 ] >>293 Cの規格書JISX3010ちらっと見てみたけど、7.19.1にこう書いてありました。 「EOFは、ファイルの終わり(end-of-file)、すなわちストリームからもうそれ以上の入力 がないことを示すために、幾つかの関数から返される、」
302 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:07:28 ] 良いか、ボケ共、入力は何も 文字データ だけじゃねーんだよ。 標準入力で人間がキーボードから行う入力と言えば文字データが思い浮かぶが プログラムへのデータの入力は、文字だろうと所詮デジタルデータ、 数値データに過ぎんのだよ。それが使用している環境の 文字コード体系で印字可能な文字は視覚的に見えるんであって バイナリーデータのような数値データの塊でも、入力できるんだよ。 そしてEOFも。なんでEOFが入力できないのか、もう説明しなくて良い。 とっくの昔からEOFの入力なんてされてたんだよ、当たり前のように。 でなきゃ、プログラムはどうやってファイルの終わりを認識してたのだね?ん? 怒らないから、そんな秘密の情報があるなら、おいちゃんの耳元でそぉ〜っと言ってごらん?
303 名前:デフォルトの名無しさん [2008/04/22(火) 17:07:35 ] >>298 0点。 規格書読め。
304 名前:デフォルトの名無しさん [2008/04/22(火) 17:09:57 ] >>301 アフォか。 エラーを示すために-1を返す関数が一つ以上あれば、-1はエラーか。 ドザはほんとに駄目だな。
305 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:10:27 ] >>299 はぁ?なんで?1バイトずつ読み込まないでどうすんだ??? お前、もしかして・・・変数の型を誤解してないか?wwww
306 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:12:01 ] >>303 −100点。お前が説明しろ、ボケ低レベルへたれプログラマーwwwwww 東大、京大卒の教授の元で指導を受けた俺と、それ未満の講師に コードの入力だけ教わったお前とは格が違いすぎ。 説明と言う説明がお前は出来てないだろ、目の前にあるものの 来本部部は同じだと言うのにw
307 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:14:16 ] >>305 EOF != 0xFF おk?
308 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:15:36 ] 299 名前:デフォルトの名無しさん 投稿日:2008/04/22(火) 17:03:45 >>296 少なくとも変数 ch は int 型でないといけない ↑このアフォーの思い違いを説明せよ 配点-100点wwww では >>296 のコードを int ch; に変更して実行してみましょう。あららっ!?結果は同じ -1 が検出されましたwwwww だから何について説明しているか分からない低レベルは黙ってろって。 お前らとは使用していた施設のレベルからして違うんだよ! 大学にあった施設は企業レベル、いやそれ以上。だからお前らとは 見てきたものが違い過ぎるんだよwwwww
309 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:18:30 ] ぷぷっ、こいつ、EOFが int 型だと思ってるよwwwwwwwwwwwwwwwwwww -1なんて1bitでも表現できんだよ!char型は1バイト、すなわち標準的な環境では 8bitなので、十分EOFの検出は可能です、ありがとうございましたwwww そもそも、ACSIIコードとShift-JISの仕組みが分かっていれば、下らない突っ込みなんてしねーよ。 全角で2バイト必要な文字は、それに応じた文字コードが割り振られてんだがw お前、Shift-JISで日本語の全角文字をすべて表示するコードを書いてみろや! 結局、そんなものは基本の拡張に過ぎないと気づくからw んで、EOFが入力できない説明をしてくれよ。俺はそれを求めてんだが?
310 名前:デフォルトの名無しさん [2008/04/22(火) 17:18:31 ] kusakabe先生の教えを守って書き込みしたらスレが伸びる伸びる
311 名前:デフォルトの名無しさん [2008/04/22(火) 17:19:35 ] >>309 > ぷぷっ、こいつ、EOFが int 型だと 規格書読めよ。
312 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:21:21 ] >>305 Cには、データベースなんかで見かけるNull値ありの型がないから、 getcharなどはNull値相当をEOFに割り当てて、 Null値ありcharをただのintで代用しているという考え方が近いと思う。
313 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:23:21 ] お前さぁ、負の値が2進数、デジタルデータの世界でどのように表現されているか知らんのぉ? まぁ、これは大学でやった実験では普通に扱いましたよ、論理回路も含めて。 なんで変数の型に、敢えて unsigned があると思ってんの? 8bitで扱える値の幅、パターンの数、負の値がどのように記録されているかも C言語でもコードを書いて調べることが出来るんだがねぇ。 んで、EOFが入力できない説明を求む。それ以外の御託はいらねー
314 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:27:12 ] >>309 -1単体は1ビットでも区別可能だけど、 ここでは、(unsigned) charの値と区別できないといけないから、 charよりビット数の多い(はずの)intなんだろ。
315 名前:デフォルトの名無しさん [2008/04/22(火) 17:28:43 ] >>313 先生の教えに背いて教えてやってもいいんだが、完全にお前の理屈を否定することになるぞ。 どうやらここにはドザしかいないようだから、味方してやってもいいんだが?
316 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:32:37 ] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6305.txt 困っています。よろしくお願いします。 Windows gcc C です。
317 名前:デフォルトの名無しさん [2008/04/22(火) 17:37:29 ] さて、ドザかまっててもしょうがないから宿題やるか。
318 名前:249 mailto:sage [2008/04/22(火) 17:48:49 ] >>296 >>298 これ実行すると、ファイルの終了に達していなくても、ファイルの途中にたまたま0xFFが現れたら そこでwhileループ抜けるよね。 > ほれ、やっぱりEOF、ファイルの終わりを検出して終了し、 whileループを抜けたのはファイルの終わりを検出したわけではないです。
319 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:50:15 ] 騒いでる奴らはそろそろ専用スレ立てろや
320 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:54:41 ] ビット演算子の意味も分かってなさそうだな。こりゃダメだ・・・ 所詮、文字コードでしかプログラムの意味が分からんのだろ。 高度でもない、当たり前なことを知っている人は、”汎用”電子計算機に対して 制御を行うコードを書いているという、当たり前な頭はあるんだよ。 そんなの大学に通わなくても、それ関連の仕事をしている人は 当たり前に見ている。人間なんて、所詮見た目が良かろうが DNAによって動物細胞の塊が人それぞれ違った形に形成されていると 医療関係に属する人が知っているように。萌え〜なんていっている奴は、 2次元にしろ3次元にしろ、そういう人達から見ると不思議に思えるんだろうね。 だって、所詮動物細胞、0と1の組み合わせのデジタルデータなんだもの、みつを。
321 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:54:52 ] >>296 jpegファイルはいきなり0xFFで始まるんですが、読み込めないということですか?わかりません><
322 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 18:01:55 ] >>320 最後おちゃらけて見せて、興奮を隠そうとしなくてもいいよ わかるわかる
323 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 18:10:28 ] >>296 はcharがunsignedの環境なら無限ループだな
324 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 18:11:11 ] ビット演算なんて、もはや遺伝子組み換えレベルの操作なのさ〜♪
325 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 18:33:29 ] もうね、鸚鵡返しのように 規格書 とか言うだけで、具体的に該当する 事項を示さないアホは何?w 自分が言いたいこと、思ったことを 相手に理解してもらえないって言っているだけじゃん。お前が言いたいことがあるなら 具体的に示せよ、低レベル講師め。お前んとこの学校はどこだ? 通報しておいてやるよ、EOFが入力できないなんていい加減なことを、 ありもしない規格書を持ち出して事実を捻じ曲げているとw 頼むから大学レベル未満のお前、EOFが入力されないという 話が拗れた根本の説明をしてみろや?どうやってEOFを検出して 終了するコードが実行されたのか、摩訶不思議アドベンチャーで ゴクウも界王拳をスーパーサイヤ人になってからお前にお見舞いするだろうよw
326 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 18:38:44 ] ttp://www.st.rim.or.jp/~phinloda/cqa/cqa9.html 面白い記事が見つかりましたよ、ほらw お前が勘違いしていたEOFが特殊な文字コードってやつ、 所詮は人間が勝手に 定義 した数値に過ぎないということがはっきりしただろ? 俺はEOFがファイルの終わりを示すとは一言も言っていないんだよw 何度も言っただろ?文字を入力したとしても所詮は 数値データ に過ぎないと。 プログラムが、コンピュータがそれを認識するために 人間が定義した に過ぎないと。 人間が好き勝手にルールを決めてしまうと、世界で共通ではなくなり インターネットの世界でも混乱が起こるんだよ。ウェブページだって 規格が違ってブラウザが国ごとによって違ってたら面倒だろ? 規格書とか言うお前、お前はISOの内容は知っているようだが 標準化の意味は理解していなかったようだな。所詮それも 人間が定義 したに過ぎないということを。
327 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 18:45:33 ] さてと、int型がなぜ2^32 すなわち 2^8^4 の値として扱われているか? 結局は4バイト分のデータを1つの変数として取得して扱っているからだよ。 誰だよ、EOF != 0xFF なんて話をしたのは?俺はそんなこと一言もいってないよw EOF にはしっかりと -1 と定義されているとは言ったが。なんで8ビットのみで話が進んでるの??? だから俺は、人間が勝手に数値の前にマイナス - という符号を付けて 表現したものではなく、2進数において 負の値をどのように表現しているか について問い正したんだが? 悪いがこれについては 実験で その詳細を知ることが出来たんでね。 コンピュータを構成している基本部分なんて、単純なもんだよw
328 名前:249 mailto:sage [2008/04/22(火) 18:57:07 ] >>326 > 俺は と言われてもお前がどれを書き込んでいて、どれにレスしてるのかわからない。 Ctrl-DやCtrl-Zは単にユーザーが入力の終了を示すだけです。 アプリがgetchar()を発行したとき、ライブラリ側にアプリに渡せる文字がなければEOFを返します。 入力ファイル中に0xFFが含まれていて、それをchar型変数で受ければ ファイルの途中であっても同じくEOFとして判定されます。 この場合、feof()関数でストリームの終了かどうか判定できると思います。 一応念のため、Cの規格書ならここで見れます。 「www.jisc.go.jp/ 」→「JIS検索」で「X3010」を入力
329 名前:デフォルトの名無しさん [2008/04/22(火) 18:59:20 ] だから相手にしちゃダメなんだって。 半年ぐらい前までしょっちゅう暴れてたキチガイなんだから。
330 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 19:05:40 ] だからよぉ、所詮整数型にしろ文字にしろ、人間が都合よくデジタルデータの塊を 数値や文字として扱うために 変数の型を宣言 したプログラムによって 解釈できるように処理させてんだよぉ。どんなファイル、データにろ ビット すなわち 2進数の1桁 レベルに話を持ち込めば、0と1の組み合わせの 塊に過ぎんと何度も言っておろうにw それはともかく、EOFが入力できないという理由を説明してくれ、規格書でw
331 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 19:07:21 ] >>328 > ユーザーが入力の終了を示すだけ それを326に言わせればEOFの入力となるんだろ。それくらい察してやれ。
332 名前:249 mailto:sage [2008/04/22(火) 19:14:18 ] >>329 そうですか、キチガイですか。 そんな気はちらっとしてたんですけどね。 とりあえずいい暇つぶしになったんで、相手してくれてありがとう>キチガイ 彼がこの後何を言ってくるか楽しみにしてますwww
333 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 21:02:35 ] 多分このスレで一番レベルの高いおれから言わせてもらうと 自演くさい
334 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 21:54:32 ] >>316 とりあえず動く程度のものでしかないけど課題1 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6306.txt
335 名前:デフォルトの名無しさん [2008/04/22(火) 22:17:54 ] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6307.c [1] 授業単元: Cプログラミング [2] 問題文: @任意の2ノード間の最短路を求めるアルゴリズムを実行するプログラムを作成せよ。 A任意の2ノード間の最短最大路を求めるアルゴリズムを実行するプログラムを作成せよ。 [3] 環境 [3.1] OS: Windows [3.3] 言語: C [4] 期限: 無期限 [5] その他の制限:リンク先のソース(経路選択の部分がない)を使用すること。 また、ソース中のdistance.txtの内容は、 0 1 1 0 3 1 1 2 1 1 3 1 2 4 1 2 5 1 3 4 1 3 7 1 4 5 1 4 7 1 5 6 1 5 8 1 6 8 1 7 8 1 7 9 1 8 9 1 です。よろしくお願いします。
336 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 22:33:05 ] getcharの戻り値にEOFがあるだけの話だろ もはや何の話を必死にしたいのかさっぱりだな
337 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 22:54:19 ] 【質問テンプレ】 [1] 授業単元:ネットワークプログラミング [2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6309.txt [3] 環境 [3.1] OS: UNIX [3.2] コンパイラ:gcc [3.3] 言語: C言語 [4] 期限: 4月25日まで [5] その他の制限: 特になし よろしくお願いします。
338 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 23:03:35 ] >>337 stdoutを別のファイルにするだけじゃね?
339 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 23:06:50 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク):自分が今使っている開発環境のコンパイラとリンカのバージョンを調べる [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: CPad for Borland C++Compiler(これでいいのかな?) [3.3] 言語: C言語 [4] 期限: 4月29日まで [5] その他の制限:正直大学一年目の後期にさらっとならっただけで、それもだいぶ忘れてます だから質問の内容がちょっと変かもしれませんが、よろしくお願いします
340 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 23:10:07 ] >>316 続いて課題2 ところでこれって課題4まで終了した後のソースコードを提出しないといけないの? だったら俺が細切れに上げてるのは割と意味が無いな
341 名前:340 mailto:sage [2008/04/22(火) 23:11:07 ] >>316 ミスった kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6310.txt
342 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 23:32:10 ] >>339 >自分が今使っている開発環境のコンパイラとリンカのバージョンを調べる スレ違い。 # まさかと思うが、調べるプログラムを作れとは言わんだろうな。
343 名前:デフォルトの名無しさん [2008/04/22(火) 23:35:06 ] すいません、264お願いします・・・
344 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 23:40:14 ] #include <stdio.h> int main (void) { char c, *pc; int i, *pi; double d, *pd; pc = &c; pi = &i; pd = &d; pc++; pi++; pd++; printf("pc=%dbyte\npi=%dbyte\npd=%dbyte", (unsigned int)pc-(unsigned int)&c, (unsigned int)pi-(unsigned int)&i, (unsigned int)pd-(unsigned int)&d) }
345 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 23:43:14 ] >>264 #include <stdio.h> static int diff(void * lhs, viod * rhs) {return ((char *) lhs) - ((char *) rhs);} int main() { char c, *pc; int i, *pi; double d, *pd; pc = &c; pi = &i; pd = &d; pc++; pi++; pd++; printf("%d, %d, %d\n", diff(pc, & c), diff(pi, & i), diff(pd, & d)); return 0; }
346 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 23:44:01 ] >>316 課題3 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6311.txt 課題2にミスあり 提出するなら、main関数のreturn 0;の前の行に fclose(fp); を追加してくだしあ
347 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 23:44:06 ] [1] 授業単元:ネットワークシステム基礎演習 [2] 問題文(含コード&リンク):( ファイルbdata.txtには1から1000000までの異なる数が999999個入っている。つまり1から1000000までの数字のうち1つだけない。その数字を見つけなさい。 プログラムは #include<stdio.h> #define N 1000000 int main(void){ int min,max,mid; int count1,count2; int data,i; FILE *fp で始まり、これ以外の変数は使用してはいけない。 また、以下の方法でプログラムを書くこと。 方法)簡単のため。1から100までの数のうち、1つがない場合を例として方法を説明する。もちろん最後まで実行しないとわからないことだが、説明の都合上、存在しない数は48だとする。 (1)ファイルを先頭から最後まで読み、1〜50の数と51〜100の数の個数を数える。 (2)1〜50の数が49個しかないので、求めている数は1〜50の数のどれかである。 (3)ファイルを先頭から最後まで読み、1〜25の数と26〜50の数の個数を数える。 (4)26〜50が24個しかないので、求めている数は26〜50までの数のどれかである。 中略 (5)ファイルを先頭から最後まで読み、48〜49の数と50〜50の数の個数を数える。 (6)48〜49の数が1個しかないので、求めている数は48〜49までの数のどれかである。 (7)ファイルを先頭から最後まで読み、48〜48の数と49〜49の数の個数を数える。 (8)48〜48までの数が0個なので、求めている数は48である。 ) [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限: ([2008年04月23日23:00まで] [5] その他の制限:
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; }