1 名前:デフォルトの名無しさん [2008/12/31(水) 08:02:03 BE:378684285-PLT(43140)] あなたが解けない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++の宿題を片付けます 120代目 pc11.2ch.net/test/read.cgi/tech/1229424329/
83 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 12:42:56 ] 弱い犬ほどよく吠える とは言ったものだ。素人以下の基地外が、こんな時期に 寂しく過疎ってるスレで、IDが出ないからって自作自演で擁護してファビョってやがるぜ。
84 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 14:20:40 ] 麻呂の初暴れか 大喜びで揚げ足とったつもりで自分だけが間違うって、何度やっても学習しないな。
85 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 14:57:10 ] >>67 条件判定式が返す「値」で判定するんであって、判定式が必須じゃないんだがw よく無限ループで使われるwhile(1)についてはどう思ってるの?
86 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 20:12:52 ] [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8508.txt [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:Visual C++ 2008 Express Edition [3.3] 言語:C [4] 期限:1月9日 [5] その他の制限:特にないです。
87 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 20:38:19 ] >>86 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8509.txt
88 名前:86 mailto:sage [2009/01/02(金) 21:48:44 ] >>87 ありがとうございました。
89 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 02:39:12 ] >>85 知ったか無知乙。whileの中が条件式ではなく、代入式なんだが?w それから、条件式の真偽でif文にしろ判定していることくらい、周知のこと。 何を指摘されたか分からないなら、黙ってろ。 >>84 =本物の馬鹿麻呂 自分で言ってて恥ずかしくない?お前にとって、指摘する奴=麻呂って何それ?w
90 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 02:41:12 ] さらに、条件式でなくても、while(1)などで分かるように、そこに変数を用いて その変数が0か否かで判定するやり方も知っているが、 >>52 は while(j = 10 - i++) { どーーーー考えても代入式です、ありがとうございますたwwwwwww さてと、自信過剰知ったか無知は以後放置よろ。質問スレでも大ボケかましたよ。 識 別 子 (笑)
91 名前:デフォルトの名無しさん [2009/01/03(土) 02:42:53 ] 眠いね
92 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 02:44:02 ] a = b = 10;
93 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 02:47:44 ] >>90 横槍ですまんが、>>52 の int i = 0, j; while(j = 10 - i++){ これって10回ループしたら抜けないの? 俺の知識がおかしいのか…
94 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 02:50:12 ] while(*dst++=*src++); この有名な文字列コピーの手法はどう見ても代入式ですw
95 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 02:51:57 ] >>93 冬休みなだけだよ
96 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 02:52:46 ] >>95 こいつは年中無休だからw
97 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 02:54:03 ] >>93 jに代入される数が10から0まで減っていくから、問題なくループは終了するよ。
98 名前:デフォルトの名無しさん [2009/01/03(土) 02:54:10 ] [1] 授業単元:cプログラミング [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8510.txt [3] 環境 [3.1] OS: win [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: c [4] 期限: 日曜午後6時 [5] その他の制限:よろしくお願いします。
99 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 02:54:53 ] 明らかにこの辺と呼応してるし。同じヤツだろ。 普段いるやつじゃないよ。 pc11.2ch.net/test/read.cgi/tech/1229255937/503
100 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 02:55:36 ] >>95 >>97 そっか ありがとー
101 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 02:57:01 ] 52はwhileの中に代入式を書くという技巧を見せつけたかったってことでいいじゃないか。 規格上何ら問題なくコンパイルは通るのも事実だし、 それを初心者に見せびらかして自慢すべき事柄ではないのもその通り。
102 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 03:01:17 ] >>99 最近この板に来た人? こいつは何年もC系のスレでファビョりまくってるアホだから。
103 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 03:09:51 ] 俺は52なんだが、まさかこんなことになるとは思わなかった。 単に行数減らしたかったから()内で代入しただけなんだが。 >>92 まさかこの程度のことで技巧とか自慢とか言われるとは思わなかったw
104 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 03:10:21 ] >>92 ってなんだw >>101 の間違いね
105 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 03:15:06 ] while(j = 10 - i++) どう考えても、while文の中は代入式で、条件式ではありません。 コンパイラも、ここの部分に対しては警告を出しているし。 while文の使い方や説明を見直すことを、お勧めします。 何を指摘されたのか分からないなら、今すぐプログラミングなんて お止めになった方が、今後の人生のためですよ。人間、適性なんて やってみなければわからないものですからね。これ以上、自分の 適性に合わないプログラミングは、死ぬまでの人生を無駄にしますよw
106 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 03:19:39 ] while()の括弧内が代入式でもCの規格として何の問題もありません。 代入式でなければいけないと主張するのならば、根拠を示してください。
107 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 03:20:05 ] >>105 別にコンパイラが警告出したっていいんじゃない? 動くし。 FILE *fp; if(!(fp = fopen("hoge.txt", "r"))) return 1; みたいなのと一緒だと認識してる 違うんかな?
108 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 03:22:17 ] while(j = 10 - i++) jが0か否かで判定するのもありだが、これはどう考えても 代入式 だ罠。分からないなんて、どこのクズ講師だよ? 変な自身を持っているのも、迷惑だな、生徒が。 こんな奴にだけは、絶対に習いたくないね。 教える立場だから、間違っては困るにしろ、間違っていても 指摘した人間を陰湿に罵倒して正当化する性格になってしまったんだね。 生徒も低レベルなんだろうけど。
109 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 03:22:56 ] 代入式で警告出るのは==を=にするミスが多すぎたからじゃなかったっけ? 昔は出なかったから、定数を左に書くテクニックとかあったわけだし。
110 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 03:23:40 ] >>108 >>94 についてはどう思う?
111 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 03:28:26 ] 誰も j = 10 - i++ が代入式じゃないとは言ってないのに。 Cの規格として代入式でも全く問題ないって言ってるのが理解できないのか?
112 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 03:31:08 ] いや・・・・どうみてもこいつは・・・・・ つられるなよお前ら・・・・・・・・・
113 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 03:32:20 ] >>111 お前こそ、それが規格上問題ないということに誰も異論を述べていないことに気付け。 推奨される書き方ではないからやめろと言われ続けているだけだ。
114 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 03:33:22 ] まぁ、議論(?)はそのくらいにして みんなで>>98 でもやろうぜ。 fgetsでchar型配列を使わないってなんだろ ポインタ使えってことかな
115 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 03:37:05 ] >>98 #include <stdio.h> int main() { int k, c, l, n, m=0; for (k = 0; k < 3; k ++) { for (n = l = 0; (c = getchar()) != '\n'; l ++) { if (l == 0 && c == '-') { printf("Error!!負の数\n"); return 1; } if (l < 8) { if (c < '0' || c > '9') { printf("Error!!数字文字以外の入力\n"); return 1; } n = n * 10 + c - '0'; } } if (l == 0) { printf("Error!!改行のみの入力\n"); return 1; } m += n; } printf("合計は%d\n", m); return 0; }
116 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 03:37:24 ] fgetcの間違いなんじゃね?
117 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 03:41:17 ] 代入式を使う場合のヒント (FILENAMEはファイル名を示すものとする) if( (fp=fopen(FILENAME , "r")) == NULL ) 何かついているよね?fp=fopen() だけで、果たして通用するかにゃ〜? ( ^ω^) fpの中身で条件判定するにしても、何かあるよにゃ〜♪
118 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 03:43:10 ] 真である事を条件にするならfp=fopen()で通用するだろ。
119 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 03:51:46 ] 真:0以外 偽:0 これが全てじゃね?
120 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 03:53:52 ] コードが多くて申し訳ありません。 [1] 授業単元:画像処理演習 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8511.txt mypgm.hのコード:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8512.txt minutiae.cのコード:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8513.txt labeling.cのコード:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8514.txt 問題に用いる画像サンプル:www.uploda.org/uporg1904100.pgm.html [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:09年1月11日24:00まで [5] その他の制限:説明文が下手ですいません。C言語の基礎的な関数のみでお願いします。
121 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 03:55:58 ] 結局、文法上 while(式) のところを while(代入式) だと勘違いしていただけでしたとさ。
122 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 03:57:06 ] 違った、代入式じゃなくて条件式に訂正。
123 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 04:10:14 ] そもそも、ifだのwhileだのforだの、C言語に限ったことじゃないから プログラミングをお止めになった方がよろしいかと?思われているんだが。
124 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 04:13:15 ] >>56 >>62 >>63 >>64 >>67 >>69 >>75 >>83 >>89 >>90 >>105 >>108 >>113 >>117 >>123 お前が止めろw
125 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 04:13:56 ] != == < > <= >=のことなら比較演算子、それを使った式は比較式というほうが正確だよ。 whileやifの中身の意味で条件という言葉の用法もあるから混同しないで。 >>123 大抵のよその言語はコンパイルエラーになるから親切だ。
126 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 04:17:22 ] どこにC言語以外の話があったのかわからない
127 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 04:20:35 ] 123という書きこみ自体だけだな
128 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 04:21:40 ] だからぁ、議論(?)は止めて>>120 でもやろうぜ。 俺? 眠いからパス
129 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 04:23:23 ] どこの講師か知らんが、まじウザッ。while文も適切に使えない、教えられないで 教師なんてやるなよw
130 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 04:32:39 ] 思い込みの激しい>>129 に適切にwhileを教えることのできる教師なんていないだろうなw
131 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 04:33:55 ] 分かったからそういうスレでやれ
132 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 04:58:14 ] これからは、このスレでは while(代入式) でも良いそうですよ?w
133 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 07:35:14 ] ほっほっほ、麻呂の今朝の食事は、スパゲッティーミートクソースでおじゃるが、何でおじゃる? 麻呂は余計な口出しはしないでおじゃるよ。勝手に議論してたもう。 ただし、このスレのスレタイを読んで、スレ違いだと気づいて、それ相応のスレで 議論するでおじゃるよ。いつまでも譲らない二者で。第三者を巻き込まないでたもう。
134 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 07:50:10 ] >>78 それは括弧がついているんだが?w
135 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 07:53:13 ] >>134 代入式を真偽として扱うのがいやなわけじゃないんだな
136 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 08:54:13 ] >>101 アホか
137 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 08:59:23 ] みんな、落ち着けよ。 代入式が値を持つことを知らないCプログラマなんて、いるワケ無いだろ。
138 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 09:26:55 ] 今北産業
139 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 10:14:52 ] >>134 OKOK、じゃあ if( fp = fopen( 〜 ) ) printf("ファイルオープン成功\n"); にするよw 実用的なところだとassert( fp = fopen( 〜 ) )とかどうよw
140 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 10:25:58 ] j=10-i++ が代入式ではなく、条件式なんだってさー えーーーっ!?
141 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 10:28:48 ] >>140 Cの条件式が論理演算子を必要としないのは最初に習うだろ。
142 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 11:25:42 ] >>120 もっと他に情報ないの?
143 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 11:35:30 ] >139 > 実用的なところだとassert( fp = fopen( 〜 ) )とかどうよw そして NDEBUG を定義するとまともに動作しないプログラムができあがるわけだな。 assert 内で副作用のある式を評価しちゃ駄目。
144 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 11:55:59 ] pc11.2ch.net/test/read.cgi/tech/1230516307/395-399 やっぱり気持ち悪がられてるw
145 名前:139 mailto:sage [2009/01/03(土) 12:42:18 ] ('A`) たしかに、全然実用的じゃなかった いつもは>>78 だからなあ
146 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 12:43:33 ] なんで「文法上問題ない」はスルーなんだよw
147 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 14:08:39 ] >>137 でFAなんだがな みんなわかってるよな?
148 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 14:10:42 ] 暴れてるのがCプログラマじゃないとしたら?
149 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 15:53:58 ] >>120 cis.k.hosei.ac.jp/~wakahara/patrecX_11.pdf まず、「真マニューシャ」「偽マニューシャ」の定義がわからん。 下記では、"true minutiae"はエキスパートが抽出したマニューシャ、 "false minutiae"はアルゴリズムが抽出した点で、"true minutiae"に含まれて居ないもの。つまりハズレ。 books.google.co.jp/books?id=41dm6jorJkwC&pg=PA582&lpg=PA582&dq=%22true+Minutiae%22&source=bl&ots=ElmfGX78vh&sig=ociBxDMdbmnkqe-wO5e79vhcZM4&hl=ja&sa=X&oi=book_result&resnum=3&ct=result 「選別」と言うのは、minutiae.cの結果から、本来の定義のマニューシャだけを残すということのようだが、 pdfの18ページをみると「真マニューシャ」に含まれない端点の基準とかが分からない。
150 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 17:12:38 ] >>147 コンパイラの警告が見えない馬鹿ですね?w
151 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 17:13:45 ] >>150 警告がどうしたんだ?
152 名前:デフォルトの名無しさん [2009/01/03(土) 17:17:39 ] つべこべ言ってないで >>52 を正しく直してみろ!!
153 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 17:17:53 ] 最近は似非プログラマーがC言語を扱っているノカー、時代は変わったもんだな。 while文すらまともに使えないなんて、終わってますね。進路を変えな、今すぐ。 その程度じゃ人生を失敗するぞ。
154 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 17:22:06 ] >>152 正しいから、これ以上、直らないだろ。
155 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 17:28:58 ] >>153 さすが人生失敗してる人が言うと説得力が違うw
156 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 17:41:44 ] >>120 labelsetの処理はなんとかならんもんかね。 >>149 多分、>>120 の講義では指紋照合についてプログラムを書くということをやってるっぽい(ググった)。 ・指紋の線の端点だと確定できる点を真マニューシャ ・指紋の線の端点だと確定できない点を偽マニューシャ と定義してるくさい。 指紋認証だと、スキャナに指を押し付ける力加減により、スキャンする指の画像が変わってくる。 画像の境界線上にできる点を偽マニューシャと呼びたいたいのではないかと思う。 そこで、問題の意図としては、「その境界線をどうやって判断するのか?」を解かせようとしてるのかも (処理思いつかんが)。 つーか、ほとんど推理ゲーだな。
157 名前:156 mailto:sage [2009/01/03(土) 17:56:33 ] >>149 すまん。 境界線ではなく、同じラベル中で距離が近い点を全部消してるのかも。 どの程度の距離かは不明だけど。
158 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 21:57:05 ] >>157 稜線上の距離が基準だとすると、以下の二つの扱いが納得できない。 up2.viploader.net/pic3/src/vl2_090483.jpg up2.viploader.net/pic3/src/vl2_090484.jpg 下の点は、本当に消えるべき点なのだろうか?
159 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 23:08:03 ] 実用とほとんど関係の薄い問題を解かせて何が楽しいんだろ。教授の自己満足か。
160 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 23:10:21 ] >>159 技術ありき 実用にするかどうかはアイディア次第
161 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 23:12:16 ] >>159 パターン認識の実用がどんなか知らないが、これは指紋の照合では基礎なのでは?
162 名前:157 mailto:sage [2009/01/03(土) 23:39:52 ] >>158 申し訳ありません。 距離を基準とすると下の点は消えるべきではないですね。 取り下げさせていただきます。
163 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 00:02:47 ] >>162 依頼にも「同じ隆線上で近接して出現 したマニューシャは」云々と書いてあるし、なにかしてるはずだけど・・・ pdfに載ってる処理結果を見ると、他にも何か処理をしていなくては、辻褄が合わない。 それこそ境界線上の端点の除外とか。 工夫を考えろと言うことなのかな。
164 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 01:57:57 ] >>143 詳説もとめます。
165 名前:120 mailto:sage [2009/01/04(日) 02:03:11 ] 山ほど説明不足でホントにすいませんでした。マニューシャの定義などは、すべて下のファイルに入っています。 ただ、課題でHilditch.cを使うかは分かりません。 www1.axfc.net/uploader/He/link.pl?dr=4660528869&file=He_177945.zip (pass:1) マニューシャについては11のpdf、Hilditch.cをつかって,細分化するコードについては10のpdfに書いてあります。 丸投げでごめんなさい。
166 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 02:05:11 ] 訂正:www1.axfc.net/uploader/He/ の He_177945.zip です。(pass:1) 何度も迷惑かけてすいません・・・
167 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 02:12:06 ] >>164 >>143 ではないが、assert(expr)は、NDEBUGが#defineされているときにはexprが評価されない。 実装によるが、たいていマクロだから副作用がある式を評価させてはならない。 とりあえず、自分の環境のassert() (多分assert.hにでも書いてある)を読んでみるといいよ。
168 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 02:48:09 ] >>166 学校のサイトはもう見つけた。>>149
169 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 02:50:36 ] >167 一応補足。 C言語規格 9899:1999 7.2/1 によれば #include <assert.h> 時に NDEBUG が定義されている場合、assert は以下のように定義される。 #define assert(ignore) ((void)0) ということで、expr 部分(上だと ignore だが)全体が消滅する。 # ちなみに 7.2/2 では関数じゃなくてマクロで実装しろと規定されている。 そもそも assert とはプログラムのバグ(ロジックエラー)を引っかけるものであって、実稼働中に発生するようなエラーに対処するものではない。 ということで例えば VC++ だと Release ビルドでは既定で NDEBUG が定義されたりする。 結果、assert 内に副作用のある式を記述してしまうと、Debug ビルドと Release ビルドで挙動が異なるコードを生み出してしまう。
170 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 02:53:30 ] >169 != >167 で >169 では >164 に対する返答補足のつもり。
171 名前:デフォルトの名無しさん [2009/01/04(日) 03:07:44 ] HTMLテキストデータから数値(浮動小数点)のみを順に抽出して いきたいのですが、どういう風にすればよろしいでしょうか? ご教授ください。
172 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 03:10:41 ] >>1
173 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 03:10:42 ] >>171 HTMLテキストデータのサンプルくらい提示して欲しいもんだ
174 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 03:26:16 ] >>171 後付で条件足すなよ! #include<iostream> #include<iterator> #include<string> #include<cstdlib> #include<cctype> int main(){ std::string src; copy(std::istreambuf_iterator<char>(std::cin),std::istreambuf_iterator<char>(),back_inserter(src)); for(const char*s=src.c_str();;){ if(*s=='\0')break; if(std::isspace(*s))++s; char*next=const_cast<char*>(s); std::strtod(s,&next); if(s == next){++s;continue;} std::cout.write(s,next-s); std::cout << std::endl; s = next; } }
175 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 03:29:27 ] 2箇所訂正 #include<algorithm> が抜けているのでcctypeの下に追加 if(std::isspace(*s))++s; が空白1つにしか対応できていないので 任意個数の空白に対応するためにcontinueするする if(std::isspace(*s)){++s;continue;}
176 名前:デフォルトの名無しさん [2009/01/04(日) 04:54:08 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8516.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限: 無期限 [5] その他の制限:特にはありません。よろしくお願いします。
177 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 05:25:09 ] >>176 一応元のコードをベースにしたけどこんなんでおk? #include <stdio.h> #include <math.h> int main(void) { { int i, n, Limit; n = 0x7FFFFFFF; for(;;--n){ Limit=(int)sqrt(n); for (i=Limit;i>1;i--) if (n%i == 0)break; if (i==1)break; } printf("int型の最大の素数は%dです\n",n); }{ unsigned int i, n, Limit; n = 0xFFFFFFFF; for(;;--n){ Limit=(unsigned int)sqrt(n); for (i=Limit;i>1;i--) if (n%i == 0)break; if (i==1)break; } printf("unsigned int型の最大の素数は%uです\n",n); } return 0; }
178 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 05:32:48 ] INT_MAXとかを使った方がいいと思う
179 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 05:42:11 ] >>178 それを使うか悩んだんだけど、limits.hを授業でやったか分からない。 それとintのサイズが32bitであると問題文でわざわざ定義されている。 そんな感じで、今回はマジックナンバーを決めうちで実装した。
180 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 06:24:02 ] 麻呂のクソースではおじゃるね、まずそれぞれの変数に-1を入れてやんよ? さすれば、何ビットだろうとその変数が扱える最大のFFFF・・・になるでおじゃるし。 え?邪道?それがクソースでおじゃっ!
181 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 06:32:22 ] unsigned int uint=-1; signed int sint=uint>>1 ; printf("uint:%u \nsing:%d\n",uint,sint); きんもぉ〜★なクソースでおじゃっ
182 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 07:06:07 ] >>176 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8517.c
183 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 07:36:40 ] [1] 授業単元:アルゴリズムの基礎および演習 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8518.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2009年1月10日12:00まで [5] その他の制限:特にありません。 よろしくお願いします。