1 名前:デフォルトの名無しさん [2010/05/26(水) 07:45:28 BE:94671825-S★(522522)] あなたが解けない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++の宿題片付けます 135代目 pc12.2ch.net/test/read.cgi/tech/1269438098/
194 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 16:40:46 ] で、今回の場合はaとbがstaticであり、この場合にpをabで初期化することを咎めるのはありやなしや
195 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 18:26:30 ] >>194 標準のCでは問題ない、ということですね。
196 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 18:32:19 ] >>182 脊髄反射乙 付和雷同乙
197 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 21:28:40 ] 覚えたての格言や四字熟語を並べ立てて越に浸ってるやつなんなの
198 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 21:30:27 ] 「悦に浸る」だった。Google IMEって誤用とかも変換候補にあるから使いづらい。
199 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 21:36:02 ] 書き込み前に確認しなかった過失を棚に上げてGoogleIMEのせいにするやつってなんなの 使いづらいならやめればいいじゃん
200 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 21:53:06 ] これがゆとりの実態です 経験値を得ることでモンペへと進化します
201 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 22:01:05 ] GoogleでもIMEでもとにかく外人の作るソフトはウザイのがおおいな。 テキストボックスの中の文字列に編集を加えようとすると必ず全部選択する。 オレは神経をつかってカレットが狙ったところに来るようにクリックしてるんだがな!
202 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 22:39:35 ] >>201 コピーしたいのに全選択がめんどくさいというゆとりのための仕様だよ っていうか、業務系だと日本でも多々ある、というか、そういう要望がでてくるよ 言われたことない?
203 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 23:39:04 ] #include<stdio.h> int main(void) { int array[5][4]; int i,j; for(i=0;i<4;i++){ for(j=0;j<3;j++){ printf("%d行%d列の要素を入力してください: ", i+1, j+1); scanf("%d", &array[i][j]); array[i][3] += array[i][j]; array[4][j] += array[i][j]; } }
204 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 23:42:10 ] for(i=0; i<5; ++i){ for(j=0; j<4; ++j){ printf( "%5d ", array[i][j] ); while(i==5){ printf( "%5d ", array[i][3] ); i++; while(j==4){ printf( "%5d ", array[4][j]); j++; } } } printf( "\n" ); } 「4行3列の配列をキーボードから読み込み、 各行、各列の和、及び配列全体の総和を求め、表示する プログラムを作成しなさい。」という問題です。 途中まで作りましたが、出力が↓のようになってしまいます。どうすればいいんでしょうか? 1 3 2 -858993454 4 5 6 -858993445 2 4 7 -858993447 11 13 15 -858993421 858993442 -858993435 -858993430 -858993460
205 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 23:47:25 ] 言語はC++ 環境はvisual C++ です。 あさってまでに提出しなければなりません。
206 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 23:48:13 ] 配列範囲外
207 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 23:50:57 ] >>206 配列範囲外とはどういうことでしょうか?
208 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 23:59:35 ] 配列範囲内だが未初期化、というか、過大な領域を作っている
209 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 00:02:17 ] >>208 どこが悪いんですか?修正の仕方を教えてもらえるとありがたいです。
210 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 00:09:59 ] 配列の範囲だっつってんだろ
211 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 00:11:50 ] >>209 int array[5][4]={{0}};
212 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 00:27:30 ] >>211 ありがとうございます。 おかげで総和以外は出力できました。 もう一つ、総和の計算と出力はどうすればいいんでしょうか?
213 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 00:31:09 ] >>209 自分で作ってないからわかんないんだよ 文字列のクセで1個余分に、ってしたのかもしれないけどさ。
214 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 00:33:57 ] あと一息だね ↓これが何してるのか知ってたらピンとくる array[4][j] += array[i][j];
215 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 06:37:13 ] ここって、プログラムができなくて授業についていけてない奴を、さらについていけなくさせるために プログラムを全部作ってあげるスレだと思ってたけど、意外とみんな優しいんだね
216 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 07:01:02 ] >>215 若い芽を摘むかのごとく、 全部教えて上げて、自分たちの食い扶持を維持するためのスレでもある。
217 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 08:40:05 ] [1] 授業単元:Cプログラミング [2] 問題文(含コード&リンク): 下記のアップロードされたファイル(数字の羅列)を読み込み、並び替え方法(昇順/降順)で指定されたファイル(out.txt) へ出力するプログラムを作成せよ www1.axfc.net/uploader/He/so/280605 以下実行結果 並び替え方法をしていしてください(1:昇順、2:降順) 1 並び替えたファイルへ出力しました。 cat out.txt ←catコマンドで中身確認 1 3 3 3 [3] 環境 [3.1] OS:Win Vista [3.2] コンパイラ名とバージョン:GCC [3.3] 言語:C [4] 期限:本日中 急で申し訳ないですがよろしくお願いします。
218 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 09:34:27 ] 授業すらついていけない奴は競争相手にもならんが 死ぬほど足を引っ張ってくれるので成敗しておく
219 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 10:06:58 ] >>217 codepad.org/kpLdySlN ソートはしないけど、入力例に限定的な解法。 入力が、非負でかつ1000未満の整数のみを仮定。 tableでカウントするとき、nのチェックしてなかった。
220 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 10:09:56 ] そもそもからして、C言語記述課題に対して「解答」という 用語が適切か?
221 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 10:11:44 ] >>220 頭を使わなくても解ける問題なら質問には来ない すくなくとも回答ではない
222 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 10:17:20 ] >>220 もとい文法やライブラリなどの制限があるから完全に自由ではない のだがそれでも結果が殆ど同一(例えば数字だけとかキーワードだけ とか)というわけではないんで解答とは言わないほうが良いよな... だから>>221 の言う通り回答というのもおかしい。 強いて言えば模範文例ってところなんだろな
223 名前: ◆/91kCCQXBo mailto:sage [2010/06/04(金) 10:25:56 ] >>203 pastebin.com/qe6bRjdc
224 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 10:43:33 ] >>219 これはひどいw
225 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 10:46:47 ] せっかく上げてくれた模範文例を貶すのはやはりマナー違反
226 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 11:00:03 ] 間違ってても?
227 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 11:22:22 ] コンパイラが文法違反とかはチェックしてくれるんで 「間違っている」という文章があがることはあまりない 文法以外の明示的暗黙的問わず存在する構文制限や 課題の意図に沿った文章になっているかどうかについては 100%そうであるとも言えないのは当然だが
228 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 11:27:21 ] 219を昇順・降順で実行して見てから言えよw >>219 はコンパイルできるけど、「間違った」プログラムだぞ
229 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 12:18:36 ] [1] 授業単元:データベース論 [2] 問題文(含コード&リンク):サンプルデータから情報を取りだしその情報をstudents.txtとして出力するプログラムを組め Students.txtの例は以下の通り 1 tanaka A 2 sano B 3 hori C [3] 環境 [3.1] OS:WindowsVista [3.2] コンパイラ名とバージョン: Visual C++ [3.3] 言語:C++ [4] 期限: 2010年6月6日24:00 [5] その他の制限: サンプルデータの形式はSqlite3、名前はstudents.sqlite3です。studentsテーブルを持ちそのテーブルはID(id)、学生の名前(name)、学生のクラス(class)を持っています。よろしくお願いします。
230 名前: ◆/91kCCQXBo mailto:sage [2010/06/04(金) 13:20:49 ] e-mail >>217 pastebin.com/aPau6gci
231 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 13:28:51 ] SQLite3 DataBase
232 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 16:53:18 ] >>225 模範とならないものなら? 参考文例とでも読み替えておけばよいのかなー
233 名前: ◆QZaw55cn4c mailto:sage [2010/06/04(金) 19:34:51 ] >>217 codepad.org/tSvtrgGL >>225 そんなマナーがあるのですか?本当ですか? 間違っていたら、あるいは、間違っていなくても(>>143 に対する >>179 , 結論は >>188 )ネガティブな反応がありうることは覚悟しておくべきでしょう。 そのようなリスクが怖い弱虫なら回答しなければいいのです。
234 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 19:43:18 ] リスクを気にせず間違えまくるアホはできれば回答しないで欲しいけどな
235 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 19:45:09 ] >>214 返答できなくてすいませんでした。 おかげで完成させることができました。 ありがとうございます。
236 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 19:49:10 ] 間違った回答は叩けということでよろしいか
237 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 19:52:31 ] >>236 いいと思います。 >>234 ほう、どこがまちがっているのですか?
238 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 19:54:16 ] 指摘が具体的ならいいんじゃないか
239 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 19:54:24 ] >>234 あんたは一生解答でけへんくせに、口だけは達者やなあ
240 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 20:23:47 ] >>237 お前は今まで何回間違えたか覚えてないの?
241 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 20:28:20 ] >>235 です。何度もすいません。 ↓のように出力するにはどうすればいいでしょうか 1 4 5 10 4 5 6 15 5 8 7 20 10 10 10 30 20 27 28 75
242 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 20:30:07 ] 歪んでしまったので、文章で書きます。 「行和、列和の前は少し空けるようにせよ」と書いてあります。
243 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 20:33:03 ] >>241 for(i=0; i<5; ++i) { if(i==4) printf("\n"); for(j=0; j<4; ++j) printf("%*d", j==3 ? 10 : 5, array[i][j]); }
244 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 20:36:19 ] ミスった for(i=0; i<5; i++) { if(i==4) printf("\n"); for(j=0; j<4; j++) printf("%*d", j==3 ? 10 : 5, array[i][j]); printf("\n"); }
245 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 20:40:55 ] >>233 一つ聞いていい? もしかして>>44 =>>46 もあなた?
246 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 20:47:20 ] >>240 何回宿題を解答したか覚えていないのと同じくらいに覚えていません。
247 名前: ◆QZaw55cn4c mailto:sage [2010/06/04(金) 20:48:10 ] >>245 違います。
248 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 21:00:56 ] そっか。 あんなバカな読み違いをする人間が他にも回答者面してんのか。
249 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 21:10:47 ] >>244 すいません。早速入力したんですが、↓のようになってしまいます。 5 4 5 14 6 4 3 13 5 6 7 18 6 5 5 16 22 19 20 61
250 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 21:12:29 ] if(i==4) を間違えて if(i=4) にしてない?
251 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 21:15:04 ] >>249 printf("%*d\n",... ってしてない?
252 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 21:16:28 ] >>250 アホか
253 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 21:25:58 ] >>252 ごめん。よく見たら>>251 の方があってそうだね。
254 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 21:26:35 ] >>250-251 そのままコピペしたら出力できるんですが、{ で囲むとできなくなります。
255 名前:250 mailto:sage [2010/06/04(金) 21:29:38 ] あー、そこだったかぁ。。。 for(j=0; j<4; j++) printf("%*d", j==3 ? 10 : 5, array[i][j]); printf("\n"); ? for(j=0; j<4; j++) { printf("%*d", j==3 ? 10 : 5, array[i][j]); printf("\n"); } ○ for(j=0; j<4; j++) { printf("%*d", j==3 ? 10 : 5, array[i][j]); } printf("\n"); エスパーにはなかなかなれないもんだな
256 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 21:34:34 ] >>255 ありがとうございます。 その通りでした。
257 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 22:13:12 ] >>248 で、あなたが回答者になったのはどれですか?恥ずかしがらないで教えてくださいよ。
258 名前:デフォルトの名無しさん [2010/06/04(金) 22:35:02 ] [1] 授業単元:プログラム演習 [2] 問題文(含コード&リンク): 任意の文字列を二つ入力し、一つ目の文字列から二つ目の文字列を「全て」検索するプログラムを実装しなさい。 検索結果は、一つ目の文字列を0文字目から数えて、何文字目にあるかを答えるようにしなさい。以下に実行例を示す。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10648.txt [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2010年6月7日まで [5] その他の制限:特にありません。 よろしくお願いします。
259 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 22:38:42 ] strstr
260 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 22:38:52 ] >>256 >>223 にも作ったのあるよ。この辺で言っとかないと。
261 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 22:47:57 ] >>223 は空白じゃないからお気に召さなかったんじゃないかな
262 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 22:52:31 ] >>257 >>141
263 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 22:58:05 ] >>258 #include<stdio.h> #include<string.h> int main(void) { char buf[256], keyword[256], *p, *q; int start, end; printf("文字列を入力してください。\n"); fgets(buf, sizeof(buf), stdin); if((p=strchr(buf, '\n'))) *p='\0'; printf("検索文字列を入力してください。\n"); fgets(keyword, sizeof(keyword), stdin); if((p=strchr(keyword, '\n'))) *p='\0'; printf("文字列「%s」は", keyword); for(p=buf;(q=strstr(p, keyword));p=q+1) { start=q-buf; end=start+strlen(keyword)-1; printf("%d文字目から%d文字目に存在します。\n", start, end); } if(p==buf) printf("存在しません。\n"); return 0; }
264 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 22:58:55 ] ま、ここの「回答」で期待されるのは 問題文の意味(文法寄りか応用寄りかとかでも区別)を極力 的確に汲み取りその意図に出来るだけ沿った正しいC文を 模範作文として上げること だろなw
265 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 22:59:06 ] >>258 codepad.org/g9L9SCFA
266 名前:265 mailto:sage [2010/06/04(金) 23:00:56 ] ごめん、これ無し。 「全て検索」に対応してない。
267 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 23:03:25 ] >>264 つまり、こういうのは期待してない
268 名前: ◆QZaw55cn4c mailto:sage [2010/06/04(金) 23:04:09 ] >>258 codepad.org/7Eo4s7F6 >>262 がんばって中篇にも挑戦しましょう。
269 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 23:09:32 ] >>268 お前が読みそこなったのを一例に挙げただけだぞw
270 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 23:11:33 ] >>268 forの条件判断部に関数置くとか、最悪w
271 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 23:12:15 ] >>270 へ?なぜ?
272 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 23:14:17 ] なぜならループごとに同じ返り値が帰ってくることを分かってるものを呼び出すのは無駄だから。
273 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 23:17:09 ] >>272 それもそうですねえ。 strlen() をそのまま書いたほうがよみやすくないですか?
274 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 23:18:38 ] こんなバカが他人に >がんばって中篇にも挑戦しましょう。 こんなこと言ってると思うと笑えない
275 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 23:24:32 ] >>274 ま、批判するのは簡単ですから。
276 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 23:28:01 ] >>275 素直に 「for文の前に len_p=strlen(p); len_q=strlen(q); とあらかじめ代入しておけばよかった。」と言えばいいじゃないか。
277 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 23:38:13 ] >>276 その程度の基礎さえできてないアホが逆ギレするからウザいんだよw
278 名前: ◆QZaw55cn4c mailto:sage [2010/06/04(金) 23:39:23 ] 指摘された部分を反映しました。また、空文字列(strlen() == 0) の場合にも対応いたしました。 codepad.org/n5bSwqxj >>276 たしかに。大変失礼いたしました。
279 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 23:43:20 ] 結局、問題の根本を理解してないから言われたところを直せばいいとしか思わないんだろうなw
280 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 23:46:43 ] >>278 いや、それなおさなくていいよ。 他は見てないけど、少なくともそこの部分に関しては修正しなくていい。 心配なら速度を測ればよいよ。もしくはアセンブリを参照。 >>272 は基礎はできてるのかもしれないけど、そこから先の知識をまだ持ってないみたい。
281 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 23:47:41 ] 最近のコンパイラって最適化でstrlen()が消えるの?
282 名前:280 mailto:sage [2010/06/04(金) 23:48:07 ] ごめん、誤解を招くレスをした。 修正するかどうかはその後判断すればいいので、今そこを直すべきじゃないということ。
283 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 23:49:23 ] >>281 横レスすまん。 strlenは消えないが、ループの外に出すことは十分期待していいんじゃないかな
284 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 23:50:29 ] [1] 授業単元:プログラム演習A [2] 問題文:全30件の成績(0〜100点)をキーボードから 読み込み、0〜9点, 10〜19点,・・・, 90〜99点, 100点 の 11通りの区間にそれぞれ何人が入るかを調べなさい。 ただし、各区間に入る人数を溜めておく入れ物として 配列を利用すること。更に調べた人数に従って、各区間を ヒストグラムで表しなさい。 0点:*** 10点:***** 20点:**** ・ ・ 100点:* [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C++ [4] 期限:2010年6月7日まで
285 名前:デフォルトの名無しさん [2010/06/04(金) 23:57:48 ] 訂正 [3.2] コンパイラ名とバージョン: Visual C++
286 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 00:02:48 ] >>284 #include <iostream> void main() { int histogram[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; int score; for (int i = 0; i < 30; ++i) { score = 0; do { std::cout << "成績を入力しろ(0〜100)" << std::endl; std::cin >> score; } while (score < 0 || 100 < score); ++histogram[score / 10]; } for (int i = 0; i < 11; ++i) { std::cout << i * 10 << "点:"; for (int j = 0; j < histogram[i]; ++j) { std::cout << "*"; } std::cout << std::endl; } }
287 名前:デフォルトの名無しさん [2010/06/05(土) 00:11:56 ] >>286 void main() (笑)
288 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 00:15:29 ] int main() でも return 0; は省略できるのにねえ
289 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 00:16:32 ] それなりにC++っぽいコード書いといてそこ落としたら突っ込まれるのしょうがない。
290 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 00:18:52 ] >>280 , 283 もっといいコンパイラなら strlen() を外にだしてくれるかもしれませんが、私の gcc 3.3.4 や bcc 5.5.1 では -O2 にしても アセンブラリストを見る限りは、strlen() はループの中のままのようです。 そこから先の知識をもっていないのは私も一緒でしょう。 とにかく、しばらくこちらで今までのように鍛えていただくことにしました。 フォローありがとうございました。
291 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 00:22:23 ] そう思うんなら>>278 の残りのstrlenもなんとかしろよw
292 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 00:24:27 ] >>291 strlen くらい残しても問題ないだろうに 余計なことするのが好きなんだな
293 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 00:27:08 ] すでにstrlen()で長さを求めて専用の変数に格納してるのに、 その長さをまたstrlen()で求めるのは無意味で無駄。 そんな無駄を許せる人間がプログラムをしてることが驚きだよw
294 名前: ◆QZaw55cn4c mailto:sage [2010/06/05(土) 00:35:35 ] >>258 codepad.org/IiGMyIU6 指摘を受けた部分を改良いたしました。
295 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 01:14:00 ] >>284 0点:*** 10点:***** 20点:**** ・ ・ 100点:*
296 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 03:05:02 ] >>293 なんでメモリリークの可能性は許しちゃうの? 速度よりもそっちの方が大事だろ普通。 メモリリークを許せる人間がプログラムをしてるなんて心配になるよw
297 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 03:21:38 ] どこでメモリリークするのか◆QZaw55cn4cのために懇切丁寧に説明してあげてくれw
298 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 04:43:15 ] >>297 みたいに自分の意見を言わない人は嫌いだが、メモリリークする箇所あるか?
299 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 11:32:53 ] 模範例文として推敲がどの程度行われるべきかは 状況依存としか言いようが無いです 推敲され過ぎてバグも無駄や文書としての矛盾も無い 状態が教育上好ましいかどうかは一概に言い切れま せん ただしその逆が問題になるのは、ネット環境でそれが 容易に複製され大量流布になり得るという観点からの みです。
300 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 11:46:10 ] バカの長文ほど邪魔なものはないな
301 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 11:55:55 ] 短文を書けるのが賢いんだと思い込む人よりかアホやバカかも知れないが ナルシスティは小さいかもな
302 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 12:29:36 ] 宿題丸投げするようなバカへの回答なんて何だって良いだろうが どうせこのスレでいい例を見せたって理解できるはずないだろ
303 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 12:46:11 ] segmentation fault core dumped.
304 名前: ◆QZaw55cn4c mailto:sage [2010/06/05(土) 17:03:20 ] >>298 malloc()/realloc()/free() のラッパを書いて確認してみました。 codepad.org/5lqkATcO ただ、ラッパ自身も malloc() / free() を使っているので、これが正しいかどうかを検証する方法がわからない。 ラッパのラッパを書くしかないのか‥‥‥。
305 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 18:10:54 ] >>302 宿題を丸投げする人は、このスレのお客様。 むしろコード書く人、そのコードを読む人が主人公かなあ。 さらしたコードを叩くな、という人がいますが、むしろコードを読んで叩いてくれる人がいるからこそ、書きがいがあるというものです。
306 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 18:19:29 ] ただで駄目なところ指摘してくれたり、より効率的な方法教えてくれるんだから ありがたいもんだよな。 変にプライドの高い人は逆ギレしちゃうけど。
307 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 18:29:51 ] >>306 コードさらす人は、意識していないかもしれませんが、そのプライドを自分で潰しに来ている、といっていいわけですから、コードをかかない人よりよっぽどましかと。
308 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 18:42:20 ] そうそう。ここでコード晒す側も 所詮、暇つぶしなんで、波風立たない方が嬉しいにこしたことはない。 ここ100レス余りの流れで宿題がこないから、 mixiの宿題コミュまで覗っちゃったじゃないか!
309 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 18:45:23 ] >>258
310 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 18:55:13 ] >>308 mixiのあのコミュはなにかしら投稿するとsock(ryとかいう人に叩かれるw
311 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 18:55:52 ] >>307 いいからお前はトリップを全部の発言につけろw
312 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 19:23:23 ] >>304 ラッパがバグってるっぽい
313 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 19:25:49 ] 最近は嫌がらせ半分のふざけたコードに突っ込む人いなくなったなぁ。 そのまま提出した学生がその後どうなったのか気になるところだが。
314 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 19:28:52 ] >>313 他人をむやみに信用することの愚かさを痛感し、 自分で判断できる力を身につけようと努力し、偉人になったとか。
315 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 19:39:53 ] >>284 ですが、型が違うみたいでエラーがでます。 そこで少し変えたんですが、なんか違うようです。
316 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 19:40:36 ] #include<stdio.h> main(void) { int test[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; int i,j; int score; for (i=0;i<30;i++) { score = 0; do { printf("成績を入力しろ"); scanf("%d",&score); } while (score < 0 || 100 < score); test[score / 10]++; }
317 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 19:42:10 ] for (i=0; i < 11;i++) { printf("点:"); for (j=0; j<test[i];j++) { printf("*"); } } return 0; }
318 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 19:57:10 ] >>315 #pragma warning(disable:4996) // これを追加する #include<stdio.h> main(void) {
319 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 20:05:19 ] 早くお客様こないかなー
320 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 20:07:14 ] >>318 ありがとうございます。
321 名前:デフォルトの名無しさん [2010/06/05(土) 20:17:04 ] すいません>>320 です。 問題文に「0〜9点, ・・・, 90〜99点, 100点」と書いてありました。 大変申し訳ないです。 0〜9点:*** ・ ・ ・ 100点:** とするには、どう手を加えればいいのですか?
322 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 20:19:11 ] [1] 授業単元:プログラミングC [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10649.txt [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 無期限
323 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 20:21:51 ] >>321 for(i=0; i<11; i++) { if(i==10) printf("100点:"); else printf("%d〜%d点:", i * 10 + i * 10 + 9);
324 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 20:25:11 ] >>321 「printf("点:");」→「if (i == 10) { printf("100点:"); } else {printf("%d〜%d", i*10, i*10+9);}」
325 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 20:28:09 ] >>322 2-A:char** 2-B:char[][MAXLENGTH] 2-C:char**day 2-D:char day[][MAXLENGTH]
326 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 20:31:07 ] >>323-324 ありがとうございます。 何度もすいませんでした。
327 名前: ◆QZaw55cn4c mailto:sage [2010/06/05(土) 21:50:30 ] >>312 ご指摘感謝。free() のラッパがバグっていました。最後のひとつを開放するときにリンクをはずせていなかった。 codepad.org/91IVlXJH
328 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 22:26:34 ] >>325 ありがとうございます。
329 名前:デフォルトの名無しさん [2010/06/05(土) 22:33:28 ] 文字と演算子を入力して四則計算するプログラムってどうやります? 例えば 3←入力 +←入力 4←入力 −←入力 ・←入力 ・ ・ = (計算結果)
330 名前:329 [2010/06/05(土) 22:36:29 ] #include<stdio.h> int main(void){ int a,b; char c; while(a != '='){ scanf("%d",&a); scanf("%c",&c); if (c = '+')b += a; else b -= a; } } うまくいきません。
331 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 22:56:11 ] >>329 ideone.com/PMcBO 逆ポーランド 電卓とかでググってみてくれ
332 名前:329 [2010/06/05(土) 22:58:00 ] >>331 そんな難しいのじゃなくていいです・・ とりあえずwhileとか使って 数字入力 演算子入力 数字入力・・・・=答え みたいなのが作りたい。
333 名前:デフォルトの名無しさん [2010/06/05(土) 23:51:35 ] >>258 です。ポインタを用いないバージョンもできないでしょうか。
334 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 23:55:00 ] >>332 こんなんでどう? codepad.org/b68KtrqB
335 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 00:04:36 ] scanf()はエラーも返すんだよね。
336 名前: ◆/91kCCQXBo mailto:sage [2010/06/06(日) 00:14:15 ] #include<stdio.h> int main(void){ int a=0, b=0, plus=1; char buf[80]; while(buf[0] != '='){ // fgets(buf,100,stdin); gets(buf); if(buf[0] == '+'){ plus = 1; b = a; } else if(buf[0] == '-'){ plus = -1; b = a; } else sscanf(buf, "%d", &a); } b = b + plus * a; printf("ans=%d\n", b); } /* 3 - 6 = ans=-3 */
337 名前:デフォルトの名無しさん [2010/06/06(日) 01:34:19 ] こんなソフト作ってください(お代は払います)ってな感じのスレどっかにあったかなぁ? アイデアはあるけどオツムがないからどうしようもなく放置したまま早1年。 発注するから誰か受注して って頼みたいんだけど?
338 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 01:53:31 ] >>337 pc12.2ch.net/test/read.cgi/software/1251624598/l50 なんてどう?
339 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 02:09:42 ] サンクス
340 名前: ◆QZaw55cn4c mailto:sage [2010/06/06(日) 02:37:30 ] >>258 >>333 codepad.org/K6MwzaHX
341 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 10:39:09 ] >>333 #include <stdio.h> int main(void) { char a[256], b[256]; int i, j, flg = 0; printf("文字列を入力してください。"); scanf("%s", a); printf("検索文字列を入力してください。"); scanf("%s", b); printf("文字列「%s」は", b); for(i=0; a[i]; i++) { for(j=0; b[j]; j++) if(a[i+j]!=b[j]) break; if(b[j]=='\0') { if(flg++) printf(","); printf("%d文字目から%d文字目", i, i + j - 1); }} printf("%s\n", flg ? "に存在します" : "は存在しません"); return 0; }
342 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 10:45:21 ] >>333 折角書いたけど>>341 の方がスマートでくやしい #include <stdio.h> int main() { char str[256], search[256]; int strIdx = 0, searchIdx = 0, found = 0; printf("文字列を入力してください。\n"); scanf("%s", str); printf("検索文字列を入力してください。\n"); scanf("%s", search); while(str[strIdx]){ if(str[strIdx] == search[searchIdx]){ found = strIdx + 1; while(search[++searchIdx]){ if(str[++strIdx] != search[searchIdx]){ found = 0; break; } } if(found) break; } ++strIdx; } if(found == 0) printf("文字列「%s」は存在しません。\n",search); else printf("文字列「%s」は%d文字目から%d文字目に存在します。\n",search, (found - 2), (found - 2) + (searchIdx-1)); }
343 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 10:47:15 ] しかもバグ入りという...
344 名前: ◆QZaw55cn4c mailto:sage [2010/06/06(日) 12:03:14 ] >>329 ちゃんとつくると難しいです。たとえばこんな感じになります。 codepad.org/ODg132aP
345 名前:デフォルトの名無しさん [2010/06/06(日) 16:10:45 ] 何故>>330 はダメなのでしょうか? >>344 ちゃんとつくらなくても>>336 のプログラムの中身がすでに 理解できないんですが・・・>>336 より簡単にできないんですか? どんなプログラムも付け足せば何とかなるんですよね。 buf[]とstdin, fgetsなど全く意味がわかりません。 一応プログラム自体実行したら正しくいきます。 ただ宿題なので、今まで習ったことでやるしかないんです。 一応C言語です。
346 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 16:15:25 ] >>345 そういうのは最初に全部テンプレ使って言え
347 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 16:23:51 ] >>345 #include<stdio.h> int main(void){ int a,b = 0; char c=' '; while(c != '='){ scanf("%d",&a); scanf("%c",&c); if (c == '+')b += a; else b -= a; } } これでどうだ
348 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 16:25:40 ] >>345 ちがった #include<stdio.h> int main(void){ int a,b = 0; char c=' '; while(c != '='){ scanf("%d",&a); scanf("%c",&c); if (c == '+')b += a; else if(c == '-')b -= a; } printf("%d\n", b); } こうかな。
349 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 16:41:12 ] >>345 なぜダメかという理由を書くと 1.while(a != '=')となっている点。 aは数字だろ?演算子はcに入れたいんだろ?だからwhile(c!='=')が正しい。 2.if(c='-')となっている点。 =は代入。比較なら==を使う。たまに見かけるバグだな。 3.int a,b;となっていて、bを初期化していない点。 bに結果を入れたいのだろうが、最初に0で初期化していない。 初期化しないと値は不定。何が入ってるか分からないというわけ。 つまりコンパイラとしてはbに最初から0xCDCDCDCDを入れておいても仕様違反ではないというわけだ。 vc++のデバッグビルドならそうなる。 そこにプラスマイナスしても正しくならないよな。 4.else b-=a;となっている点。 これだと'='が来たときも引き算してしまう。だからese if(c=='-')にしないといけない。 5.whileに最初に入った時点でcは不定。 だから万が一cが'='だったらすぐ抜けてしまう。ここでは' 'を入れておけば絶対に問題が起きないのでおk。 現実問題として、滅多に起きないが、社会にでたらこれは立派なバグとして扱われるぞ。
350 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 16:42:02 ] こいつに理解させるのはまず無理だと思うけどな
351 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 16:53:45 ] 俺に聞けスレで諦めた一人ですな
352 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 16:55:49 ] >>348 12+12=0…
353 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 16:58:45 ] だからscanf()で文字を読むときは改行文字に気をつけろって言っただろ
354 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 17:01:25 ] int a=0 ,b=0; char c=0; scanf("%d%*c",&b); while(scanf("%c%*c",&c) && c != '='){ scanf("%d%*c",&a); if (c == '+')b += a; else if(c == '-') b -= a; else ; } printf("%d\n",b); それを修正してとなると↑のようになる(scanf削って縮めたいんだが、俺には限界)
355 名前:349 mailto:sage [2010/06/06(日) 17:03:34 ] ああ、ごめん。 実際に動かしてみたら色々問題がまだあるね scanf("%c", &c);は改行コードを拾ってしまうな。
356 名前:4 [2010/06/06(日) 18:52:56 ] >>350 >>351 ひどすぎワロタww 命かけて頑張ってんだよ、茶化さんで。
357 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 18:56:00 ] >>356 命がけ、というのであれば、それを見せてほしいですね。現状では伝わってこないんです。
358 名前:4 [2010/06/06(日) 18:58:23 ] >>354 優しすぎ、ありす。 まじで感謝してる。プログラミングの単位たぶん落とすと思うけど 2学期には間に合うようにするわ。
359 名前:デフォルトの名無しさん [2010/06/06(日) 19:02:36 ] 熟練のマである>>355 でもエラー出すC言語ってどんだけむずいんだよ。 もっと簡単で寛容なC言語はないんかね。
360 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 19:03:51 ] いろいろと突っ込みどころがあるな
361 名前: ◆QZaw55cn4c mailto:sage [2010/06/06(日) 19:44:23 ] >>359 ちょっと上の方でコテが散々やっつけられていたのを見ましたか? 簡単で寛容な、というのは期待しないほうがいいかと。
362 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 20:20:28 ] 宿題というか、既存のプログラムのバグ消しのお願いです AviUtlという画像編集・エンコソフトを使っているですが、 そのソフト用にNL-Means Filterというものが出ています。 ですがそのフィルターを使うとソフトがフリーズしてしまいます。なんとか解決できませんか? 症状としては、そのフィルターをオンにすると、AviUtlを終了しようとした時にフリーズします。 GPU支援を使う、計算モード3のときのみ起こります。お願い致します kishibe.dyndns.tv/index.php?%E3%83%95%E3%83%AA%E3%83%BC%E3%82%BD%E3%83%95%E3%83%88%2FNL-Means%20filter からダウンロードするとソースらしきものもついてきます
363 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 20:56:36 ] [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10650.txt [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限: 2010年6/8まで [5] その他の制限:なし 2問ありますが、よろしくお願いします。
364 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 21:06:03 ] >>363 <課題2> #include <stdio.h> #include <stdlib.h> int main(void) { int i, j, k, n; double *x, temp; scanf("%d", &n); x = malloc(n * sizeof(double)); for(i=0; i<n; i++) scanf("%lf", x + i); for(i=n-1; i; i=k) { for(j=k=0; j<i; j++) { if(x[j] > x[j+1]) { temp = x[j]; x[j] = x[j+1]; x[j+1] = temp; k = j; }}} for(i=0; i<n; i++) printf("%f\n", x[i]); free(x); return 0; }
365 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 21:30:33 ] >>363 <課題1> codepad.org/i9GSGdcP
366 名前: ◆QZaw55cn4c mailto:sage [2010/06/06(日) 21:36:06 ] >>363 codepad.org/XdsWKbxa codepad.org/qynZDN0h
367 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 21:44:36 ] ぐだぐだ言い訳されるのわかってても突っ込みたくなるなw
368 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 21:45:38 ] >>367 どうぞどうぞ突っ込んでくださいな。楽しみにしています。
369 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 21:48:51 ] 実数と整数の区別もつかないアホ ソート部分がクソ
370 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 21:55:59 ] >>363 です ありがとうございます
371 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 21:56:08 ] >>363 2番目の課題を訂正します。 codepad.org/qgboBPOZ >>369 普通のバブルソートですが、何か問題でも?
372 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 21:57:51 ] だからそれはバブルソートじゃないって言っただろw
373 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:02:21 ] >>372 あれ?私は en.wikipedia.org/wiki/Bubble_sort を参照したんですけれどもね。
374 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:09:35 ] それが言いたくてわざわざ効率の悪いほう使ったのかw
375 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:10:08 ] >>373 バブルソートは for(j=0;j<n-1;j++){ for (i = 0; i < n - 1; i++) { if (x[i] > x[i + 1]) { t = x[i]; x[i] = x[i + 1]; x[i + 1] = t; } } } だろ。わざわざdo{} while()にしても比較回数が減ることはない。
376 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:16:38 ] >>373 だから全部読めって前も言ったよな? Optimizing bubble sortのところで何でn := newn + 1ってなってると思ってるんだ?
377 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:17:08 ] >>375 そうですよね。>>375 であげていただいたやり方もバブルソートといいますよね。 でも >>372 はお気に召さないようなんですよ。 確かに日本語版 wiki やドイツ語 wiki では、幾分効率をあげたものが採用されているようですが、 どうオプティマイズしても計算オーダーはΟ(n^2) で変わらないのですけれども、>>372 は計算オーダーの概念がよくわかっていないらしい。 pc12.2ch.net/test/read.cgi/tech/1269438098/706 のように、ある一種のバブルソートの実装にこだわっているんです。
378 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:18:14 ] >>376 Optimizing のところでは、長さを縮めていますが、そうでない実装も、やっぱり bubble sort でしょう?
379 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:21:35 ] 計算オーダーが同じでも明らかに効率悪い方に拘る意味が分からんw
380 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:24:12 ] こだわっているんではなくて、計算効率がちょびっとよくなるか悪くなるかの差で、バブルソートとよんだりよばなかったりするのはおかしいといっているのです。 英語版 wiki にのっている実装もバブルソート、 >>375 のやりかたもバブルソートなんですよ。無論私のもバブルソート。
381 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:42:15 ] ん、バブルソートですね
382 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:48:20 ] 知識とコードのアンバランスさから見て、どっかの大学講師かな。 実務経験があるようには見えないし、頭堅いのにプライドだけは高いし。
383 名前: ◆QZaw55cn4c mailto:sage [2010/06/06(日) 23:20:44 ] >>382 今は助教というのですよ。現在の大学教員の序列を知らないところから見ると、高校生かな?
384 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:21:28 ] 高校生に負ける助教って・・・
385 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:29:08 ] どうりで高校生なら計算オーダーの話は理解できなくてもしかたありませんね。でも重要ですからよく勉強しておくように。
386 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:29:24 ] 日本語まともに読めないクズの分際で、 なんで自分より下しか想像できないんだろうw
387 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:31:46 ] バブルソートでも色々あるんですよ。ひとつのパターンだけ決め付けてこれはバブルソート、あれは違う、などと見識の狭いことをいってはいけません。 もっと広い感覚で物事を理解することです。
388 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:32:52 ] 実数と整数の区別もつかない盲が何言ってんだw
389 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:35:12 ] というか本当に助教なの?せいぜい院生くらいかと思ってたんだけど。 日本語の読めなさはやばいってレベルじゃねーだろw
390 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:35:43 ] 小さなミスはその都度修正すれば済むこと。でもバブルソートがなにかを理解していなければ、ヒープソート、シェルソート、クィックソート、マージソート その他いろいろなソートでもつまづきますよ。これらの理論では計算オーダーが重要ですからよく勉強しておくことです。
391 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:39:51 ] なんで相手がそれらのソートを知らないことになってんだよw
392 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:40:02 ] >>382 で講師だろうといっていたくせに、 >>389 で院生くらいだとおもっていた、 とは随分とおっしゃることがころころかわるのですね。日本語が読める読めないというより、日本語を使って思考できないのではないですか?
393 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:40:32 ] ちょ、同一人物認定されたw
394 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:40:43 ] >>391 計算オーダーを理解していないようですからね。
395 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:54:27 ] すいません、できたら>>362 お願い致します 流石に無理ですかね・・・
396 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:55:50 ] >>395 スレ違いな上に、金取るぞってレベルの話なんだがw
397 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:57:10 ] >>395 無理に決まってるだろw
398 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:57:21 ] やっぱり無理ですよねw じゃあだめもとで他当たってきます ありがとうございました
399 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:58:06 ] >>395 作者に直接言ってみれば もちろん、単にエラーが出るとだけ。 ttp://twitter.com/_kenkun
400 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:59:34 ] 大体フィルタだろ? フィルタのソースはAviUtilの作者とは違うだろ。
401 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 00:00:30 ] >>399 いや、AviUtlに問題があるわけではなくて このフィルタに問題があるんですよね フィルタの作者はAviUtlの作者ではないんで・・ でももしかしたらAviUtl側でなんとかできるかもしれませんね ありがとうございます。
402 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 00:01:58 ] 関係ないフィルタの不具合を報告されても困るだろw
403 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 00:18:46 ] まぁここはご覧の通り高校生レベルの議論なんで・・
404 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 00:19:12 ] 高校生以下のおじさんもいるけどね
405 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 02:09:08 ] 高校生だったころに戻りたいな
406 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 04:04:49 ] 中学レベルの英語力すらない人が多いみたいだけどね
407 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 06:55:32 ] that's too mad.
408 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 12:38:44 ] >>395 せっかちだなぁ
409 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 19:02:23 ] >>406 んじゃ、そのあんたのレスを英語で頼む
410 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 19:09:19 ] all your base are belong to us
411 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 20:02:34 ] ポインタを使い1〜12までの数字を入力すると英語で月の名前が出力され、 そうでない場合はunknown month と出力されるプログラム作りで困ってます。 入力例 3 5 13 11 出力例 March May unknown month November ヒントでは、 char *month_name(int n)を書き入れる事 month_name(6)はJuneである事 static char *months[] = { "January","February","March", "April","May","June", "July","August","September", "October","November","December"}; を用いる事が書かれてます。 暇な人が居たらお願いします。
412 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 20:16:30 ] >>411 char *month_name(int n) { if (n < 1 || 12 < n) { return "unknown month"; } return months[n-1]; }
413 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 20:20:27 ] staticだから関数内にmonths[]置くんじゃないの?
414 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 20:24:16 ] じゃあそれで
415 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 21:12:44 ] 途中経過を…プログラミングは下手ですがっ #include <stdio.h> static char *months[] = { "January","February","March", "April","May","June", "July","August","September", "October","November","December"}; int main(void) { int n; char *month_name(int n) {if (n < 1 || 12 < n) { return "unknown month"; }return months[n-1]; } scanf("&lf",&n); printf("%s",*months); return(0); } これでやるとどんな数字入れても出力がJanuaryになってしまうのですが、 どこらへんを変えればいいでしょうか?
416 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 21:14:17 ] >>415 &lf ってなんだよ
417 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 21:15:40 ] scanf("%d", &n);
418 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 21:18:19 ] つーか関数内に関数置くな
419 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 21:21:46 ] >>415 なんという残念な使い方w
420 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 21:24:05 ] >>415 ideone.com/kEyhc scanf("&lf",&n); printf("%s",*months); の一連の流れをおかしいと思わなかったのはまずい
421 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 21:31:08 ] 残念な頭なのでmonth_nameの中に *months入れるのは思いつきませんでした…orz
422 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 21:37:19 ] >>421 慣れ、馴れ。数書くうちに体にしみこむ。
423 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 22:08:57 ] ケチ付けるわけではないけどif文はmainの中のほうがunkownのとき 関数を呼ばなくていいんじゃなかろうか。
424 名前:9 [2010/06/07(月) 22:11:27 ] 【質問テンプレ】 [1] 授業単元:C言語課題 [2] 問題文(含コード&リンク):2つの正の整数(aとb)の最大公約数をユークリッドの互除法を用いて表示するプログラムを作成せよ。ただし、0<b≦a≦32767とする。 ≪ユークリッドの互除法≫ ユークリッドの互除法による最大公約数(GREATEST COMMON DIVISOR:GCD)は、次のように求める。 @2数(aとb)の中で大きい値をl、小さい値をmとする。 Alをmで割り、あまりをrとする。 r=0ならば、mが最大公約数となる。 r≠0(0<r<m)ならばl←m、m←r として再びAの処理を行う。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:main.c Visual Studio 2008 [3.3] 言語:C++ [4] 期限:2010年6月18日17:00まで [5] その他の制限:(まだ本当に初心者なので)do文やif文、for文まで習いました。 期限までは時間がありますが…宜しくお願いしますm(_ _)m
425 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 22:29:12 ] #include <iostream> int main() { int a, b, r; std::cin >> a >> b; while(r = a % b) a = b, b = r; std::cout << b; }
426 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:09:24 ] >>423 逆にその関数として、不正な値が渡された時はどういう挙動にしようか
427 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:10:21 ] for(i = 0 ; i < 5 ; i++){ printf("%d,", i ); } これで出力したら 1,2,3,4,5, みたいに最後にもカンマがついちゃうんでfor文の外側に printf("\b\n"); を付け加えたんだけどうまく最後のカンマが消えません その理由とどうすればいいのか教えてください
428 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:21:48 ] \bは書き込む位置が1文字分戻るだけだから スペースで上書きする必要がある printf("\b \n");
429 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:23:30 ] なるほど d
430 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:25:03 ] >>427 端末側がバックスペースをサポートしていない、と思われる。 仕方がないから、 #include <stdio.h> #define N 5 int main() { int i; for (i = 1; i <= N - 1; i++) printf("%d, ", i); printf("%d\n", i); return 0; } でごまかすしかない。
431 名前:430 mailto:sage [2010/06/07(月) 23:29:20 ] >>428 そのような手があったんですね。これでうまくいきました。(cygwin) #include <stdio.h> #define N 5 int main() { int i; for (i = 0; i < N; i++) printf("%d, ", i); printf("\b\b \n"); return 0; }
432 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:32:36 ] >>424 #pragma warning(disable:4996) #include <stdio.h> int main(void){ int a, b, l, m, r; printf("整数 a と b を入力して下さい > "); scanf("%d %d", &a, &b); if(a>b) l=a, m=b; else l=b, m=a; while(r = l % m) l=m, m=r; printf("GCD = %d", m); }
433 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:46:04 ] >>426 #include <stdio.h> char *month_name(int n){ static char *months[]={"January","February","March", "April","May","June","July","August","Septmber", "October","November","December"}; return months[n-1];} int main(void) { int n; scanf("%d",&n); if (n<1||n>12)printf("unkown month\n"); else printf("%s\n",month_name(n)); return 0; } 不正な値が行く場合がわかりませんので教えて下さい。
434 名前:430 mailto:sage [2010/06/07(月) 23:53:41 ] >>433 できている、と思うのですが。
435 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:55:12 ] しっかし無駄なstaticだ
436 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:55:25 ] >>433 関数をライブラリとして提供した場合に、使う側に対して値チェックを強制するべきか、 それとも不正な値を渡された場合にunknown monthを返却する仕様とするのかという話。 で、使用者に対して値チェックを強制した場合、使用者の不手際により 不正な値が渡されることを考慮しなければならない。 その際、メモリアクセス違反で落ちるライブラリでよしとするのか?ということ。 例外機構があれば例外を投げるのも手だけれど、Cではどうするのか。 型をboolにし、out引数を追加するのもありだよね。 でも今回はプロトタイプが指定されている。 その上での考えを教えてほしい。
437 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:57:16 ] NULLを返却するのは? 結局関数の中で範囲チェックすることになるけど。
438 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:58:00 ] >>435 これstatic消したら関数抜けた時に戻り値のアドレスが破棄されるんじゃないの?
439 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 00:00:30 ] >>438 リテラルのアドレスが返るから問題ない
440 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 00:11:50 ] >>438 sizeof(months) == sizeof(char *) * 12
441 名前:デフォルトの名無しさん [2010/06/08(火) 00:16:14 ] [1] 授業単元: 情報数学 [2] 問題文(含コード&リンク): 次の連立一次方程式をガウスザイデル法とSOR法で解け {2 , -1 , 0} {x1} {-1} {-1 , 2 , -1} * {x2} = {2} {0 , -1 , 2} {x3} {1} なお、反復回数を20、x1-3の初期値x1-3^0を0、SOR法の・をそれぞれ1.2と1.5で計算せよ。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 本日中、出来ればお昼までにお願いします。
442 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 00:20:40 ] >>440 要するに、予約語staticをつけなくとも、 monthsはその各々の要素が文字列リテラルの先頭へのポインタであるから 静的領域に確保されると。
443 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 00:27:51 ] それって規格で決まってたっけ? そうでなくても、いちいち呼ばれるたびに確保するような処理系なさそうだけどさ。
444 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 00:35:16 ] >>436 いろいろとありがとうございました。 今回は不正な値を渡された場合にunknown monthを返却する仕様のつもりです。 使用者に対しての値チェックのやり方はどれがいいかまだよくわかりません。 難しいですね。
445 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 00:58:11 ] >>442-443 文字列リテラルがstatic const char[]か?ならYes 6.4.5 文字列リテラル 文字列リテラルを指すポインタ非可変長配列がstaticか?ならchar const * const []であってもNo 6.2.4 オブジェクトの記憶域期間
446 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 01:03:04 ] >442>443 横レスだけど months自体は自動変数だから、スタックに置かれるよ。関数が返しているのは スタック変数を指すポインタではなく、静的領域に置かれている文字列リテラルの ポインタ。
447 名前:443 mailto:sage [2010/06/08(火) 01:34:03 ] >>445 d
448 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 08:57:28 ] [1] 授業単元:プログラミング演習2 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10651.txt [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:6月9日12時まで [5] その他の制限: libstation.aが無いのでやりずらいかもしれませんが、形だけでもお願いします。
449 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 10:20:42 ] >>441 をお願いします。
450 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 10:44:00 ] >>449 とりあえずガウスザイデル法のみ kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10652.txt
451 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 11:08:42 ] >>449 SOR法 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10653.txt
452 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 12:04:27 ] >>451 ありがとうございます。
453 名前:デフォルトの名無しさん [2010/06/08(火) 13:17:45 ] [1] 授業単元: 上級プログラミング [2] 問題文(含コード&リンク): 1、VisualC++2008のWindowsフォームアプリケーションのプロジェクトを作成し、DataGridViewを作成なさい。列は A,B,C の3列とする。 2、列Aに入力された4桁の数値を日付形式に変換し表示する様にしなさい(○月○日)。 3、sample.txtの内容を読み取り、その内容を使って列Bにオートコンプリートを実装しなさい。 sample.txtの内容は あいうえお abcde 12345 と言う様に、1行に1単語とする。 [3] 環境 [3.1] OS: Windows [3.2] VC++2008 [3.3] 言語: C/C++ [4] 期限: 6/12 [5] その他の制限:とくに制限はありません 1はできますが2以降がよくわかりません。 2はプロパティでCellStyleを設定しましたが動いてくれませんでした。 3は調べてみたのですが、C++での実装はのっていなかったので・・・ よろしくお願いします。
454 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 13:21:57 ] C++/CLIの宿題スレってないの?
455 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 13:43:20 ] >>448 適当に見繕ってttp://codepad.org/Hzoa3JtQ
456 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 14:00:14 ] (1) 【main 関数のみ】 int型配列 x[101] を定義し、キーボードから人数 N と N 人分の点数を入力し、平均点と 偏差値を計算し、結果を画面に出力するプログラムを作成せよ。 ◆ 条件 人数 N に負の値や101以上の値が入力されたときには、再入力するものとす る。 点数 x[i] に負の値や100点を超える値が入力されたときには、再入力する ものとする。 ◆ 偏差値 Ti の計算式 10( xi ) Ti 50 ただし N 1 x i N i 1 N 1 (x )2 i N i 1 ここに、N :データの数 xi :個々の点数 μ:平均 σx:標準偏差
457 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 14:01:04 ] 実行例 Input N (0<N<101):0 ← 入力エラー Input N (0<N<101):5 Input x[1] (0<=x<=100):200 ← 入力エラー Input x[1] (0<=x<=100):30 Input x[2] (0<=x<=100):50 Input x[3] (0<=x<=100):-1 ← 入力エラー Input x[3] (0<=x<=100):60 Input x[4] (0<=x<=100):80 Input x[5] (0<=x<=100):90 平均点 62.0 No. 1 点数 30 偏差値 35.0 No. 2 点数 50 偏差値 44.4 No. 3 点数 60 偏差値 49.1 No. 4 点数 80 偏差値 58.4 No. 5 点数 90 偏差値 63.1
458 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 14:02:48 ] (2) 【平均点と偏差値を計算する関数の作成】 (1)のプログラムにおいて、平均点と学力偏差値を計算する部分を関数 seiseki に改 めたプログラムを作成せよ ◆ 条件 データの入力と結果の出力はmain関数で行う。 人数 N に負の値や101以上の値が入力されたときには、再入力するものと する。 点数 x[i] に負の値や100点を超える値が入力されたときには、再入力す るものとする。 main関数から関数seisekiに データの数 N N人分の点数 x[] を渡し、関数seisekiからmain関数に 平均点 μ 偏差値 T[] を受け渡す。 ただし、平均点は戻り値を用いて返す。
459 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 14:06:09 ] 3)【ポインタを用いた平均点と偏差値の計算】 (2)で作成したプログラムの関数 seiseki の中 次のプログラム例を参考にして、 の配列要素をポインタを用いて表すプログラムを作成せよ。 #include <stdio.h> float average( int N, float *h); int main(void){ float ave, height[101]; int i,N; printf("Input N:"); scanf("%d",&N); for(i=1; i<=N; i++){ printf("身長 "); scanf("%f",&height[i]); } ave = average(N,height); printf("平均 %6.1f \n",ave); return 0; } float average( int N, float *h){ int i; float av, total=0.0; for(i=1; i<=N; i++){ total = total + *(h+i); } av = total/N; return av; }
460 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 14:35:27 ] >>456 wakaran
461 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 14:42:29 ] >>459 問題文が日本語になっていない コードも直接貼ってるから読みにくい
462 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 14:51:41 ] >>448 ありがとうございます。 セグメンテーション違反になりましたが、ここからは自分で頑張ってみます。
463 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 15:31:47 ] >>456-458 codepad.org/JjTL3Zwl (1)は input と main_q1関数だけ。 実行するときは、main_q1はmainに関数名を直すのが必要です。 (2)は コピペでも動く。main_q1関数は不要なので、消しても良い。 ・偏差値はわからないから、wikipediaのを参考に。 ・stdevの求め方は、2乗の平均 - 平均の2乗にした。 ・データ入力の際に、avgも求められるが、題意から分けた。
464 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 15:38:36 ] 配列サイズが101だから、iは1からなんじゃね?
465 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 15:50:30 ] >>463 Fortranな先生かな。 ttp://codepad.org/wUR2oqj6
466 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 16:10:08 ] 勝手に例の表記や条件を変えるヤツってなんなの?
467 名前:デフォルトの名無しさん [2010/06/08(火) 17:23:12 ] >>354 すげぇ、てか制御式の中にscanf入れることできるのかー。 >>348 の人は何故だめなのかな。
468 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 17:30:20 ] >>348 は scanf("%c",&c); で改行をよみこんでしまうから 後の条件式を総スルーしちゃう。 よってbは0で初期化されたまま あと実際に動かすと 1 + 1 = 1 となってしまう。 これは 1 + は計算するように書かれているけど 1 = は計算するように書かれてないから。
469 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 17:44:47 ] >>348 を書き直すと #include<stdio.h> int main(void){ int a=0,b = 0; char c=' '; char prevc=' '; while(c != '='){ scanf("%d%*c",&a); scanf("%c",&c); if (c == '+'){b += a; prevc='+';} else if(c == '-'){b -= a; prevc='-';} else if (c == '=') { if(prevc == '+' || prevc == ' ') b+=a; else if(prevc == '-' || prevc == ' ') b-=a; } } printf("%d\n", b); }
470 名前:デフォルトの名無しさん [2010/06/08(火) 18:00:42 ] >>468 頭良すぎワロタww 何故そのような分析ができるんだ。 C言語難しすぎ、どんだけ繊細なんだよ。
471 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 18:18:23 ] お前がバカすぎるだけだってまだわからないのかw
472 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 18:19:08 ] それほどでもないけどね
473 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 18:25:51 ] >>468 はいろいろ間違ってるぞw
474 名前:デフォルトの名無しさん [2010/06/08(火) 18:28:05 ] prevcってなんだ?見たことも聞いたこともない。 苦し紛れの技巧か? あと=''; ''の中は空白だな。
475 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 18:36:20 ] >>454 C#宿題スレに書きこんでみるか?
476 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 18:39:34 ] #include <stdio.h> int main(void) { int sum = 0, temp; char ch = '+'; do { scanf("%d", &temp); if(ch == '+') sum += temp; else if(ch == '-') sum -= temp; scanf(" %c", &ch); }while(ch != '='); printf("%d\n", sum); return 0; }
477 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 18:46:02 ] あげて古いの蒸し返してるのは:4 ◆nNHcoCEvyoだろ こいつに何かを理解させるのは無理だって
478 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 19:03:06 ] >>474 一個前のを取っておきたかったんだと思うよ。技巧ってほどじゃない
479 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 19:03:07 ] [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク):オイラーの定理の仮証明 [3] 環境 [3.1] OS:Windows Vista [3.2] コンパイラ名とバージョン:visual c++ [3.3] 言語:C [4] 期限:無期限 [5] その他の制限:初心者なので。。。 互いに素なnとaについてオイラーの定理が成り立つか確かめる。 とりあえずnは1以上5以下の数とし、aは1以上n以下とする。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10654.txt これを実行すると何故か一部でエラーが出るんですが(プログラミング的な意味ではなく) その理由と解決方法を教えてください
480 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 19:17:35 ] >>479 count = 1;の位置がおかしい
481 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 19:19:22 ] >>480 なにがココまではおkなんだか・・・ ありがとうございます
482 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 19:21:07 ] 関係ないけどそのままだと数が大きくなるとオーバーフローしてしまう。 oira *= a; oira %= n; ってすれば数が大きくなっても対応可能。
483 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 19:23:02 ] >>482 まじでそこを聞こうと思ってたところです ありがとうございます
484 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 19:46:03 ] >>482 度々悪いんですけど なぜそうすればいいのか教えてもらえませんか? 自分で考えてもわかりませんでした わからないのは なぜ数が大きくなっても対応出来るのかではなく なぜこの計算方法でも正しい結果が得られるのかです
485 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 20:00:30 ] めんどくさいからパス
486 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 20:08:13 ] そか(’・ω・`) oiraにnで割った余りを入れちゃったら 次a倍すると意図しない値になっちゃいそうなんだ 少なくとも俺のない頭はそう思っちゃうorz 一回一回a倍とnで割った余りをいれようとした根拠とか考え方とかをご教授願いたかった(’;ω;`)
487 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 20:19:18 ] これって高校数学の範囲じゃねーの?
488 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 20:22:42 ] もしかして俺の勘違いかもしれん >>482 って if(i == a){ printf("n = %2d, a = %2d", n, a); oira = 1; for(j = 0 ; j < count ; j++){ oira *= a; oira %= n; } if((oira - 1) % n == 0){ printf(": verified\n"); } else{ printf(": error\n"); } } みたいに直せって事だよな?
489 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 20:33:16 ] もしかして俺のバカさ加減に呆れてますか?(;ω;`)
490 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 20:55:42 ] 少なくとも処理結果は正しいの?
491 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 20:58:49 ] a = n * b + cの形に変形してかけて見ればわからない? a * a = (n * b + c) * (n * b + c) =(n*b)^2 + 2 * n * b + c^2 (n*b)^2と2*n*bは明らかにnで割り切れるから、 a*aをnで割った余りはc^2をnで割った余りになる
492 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:07:13 ] それがoira-1をnで割ったあまりにどう応用できるのか、俺もわからないので>>489 は一人で泣かなくていい
493 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:09:19 ] >>491 解説ありがとう なんとなく考え方はわかったがまだしっくりこないのでもうちょい粘ってみる >>492 気が楽になった
494 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:09:30 ] oira-1がnで割り切れる=oiraをnで割った余りが1
495 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:35:01 ] #include <stdio.h> #define NUMBER 5 int gcd(int a, int b) { return a % b ? gcd(b, a%b) : b; } int main(void) { int i, j, c, n, a, oira; for(n=1; n<=NUMBER; n++) { for(a=1; a<n; a++) { if(gcd(n, a)==1) { printf("n=%2d,a=%2d:", n, a); for(i=1,c=0; i<n; i++) if(gcd(n, i)==1) c++; for(i=0,oira=1; i<c; i++) { oira *= a; oira %= n; } if(oira == 1) printf("verified\n"); else printf("error\n"); }}} return 0; }
496 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:37:49 ] まだ関数と{? : }は習ってないから使っちゃいけないんだ あくまで標準入出力とfor, while, if だけで
497 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:39:35 ] 使っちゃいけないという思い込み。 本当に使うなといわれた?
498 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:43:13 ] 思い込みだな 使っちゃいけないことは無いだろうが使わないでできるならそれに越したことはないかと
499 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:49:33 ] そんなことしてる間に >>491 >>494 のおかげで理解できました 理解できただけで次似たようなコード書くとき思いつくかどうかは別だけど
500 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:52:52 ] countを求めるのはnとaが互いに素であることがわかってからの方がいい。
501 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:58:04 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): int plot(int x,int y,int c);は座標(x,y)に色cを設定する関数である。 これが与えられているものとして コマンドラインから(x,y)の形で座標値が何個か与えられた時 (0<=x,y<=10000)これらに異なる色(選択は自由)を与える。 0<=x,y<=10000を満たす座標の各点についてその点から 最も近い点の色をその点に設定する(2つ以上の点から等距離 にある場合は、これらの点の中でコマンドラインで最初に指定 された点の色を設定) この処理を行うプログラムを記述する [3] 環境 [3.1] OS:Windows XP(Service pack 3) [3.2] コンパイラ名とバージョン:visual c++.net 2005 [3.3] 言語:C++ [4] 期限:6/11迄 [5] その他の制限: ヘッダファイルは使わない。extern宣言でplot関数を宣言した のちにpaint関数のコードを記述すること。 0<=x,y<=10000と仮定して良い。 plot関数を適当な名前の整数ファイルの1024*y+(x % 1024)番目 のレコードに値を設定する実装としたドライバコードを使って テストするとよい。
502 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:00:43 ] #include<stdio.h> #define NUMBER 5 int main(void) { int n, a, oira, c, i, j, k; for(n=1; n<=NUMBER; n++) { for(a=1; a<n; a++) { for(i=n, j=a; k=i%j; i=j, j=k); if(j!=1) continue; printf("n = %2d a = %2d :", n, a); for(c=oira=1; c<n; c++) { for(i=n, j=c; k=i%j; i=j, j=k); if(j!=1) continue; oira *= a; oira %= n; } if(oira==1) printf("verified\n"); else printf("error\n"); }} return 0; }
503 名前:501 mailto:sage [2010/06/08(火) 22:00:45 ] 問題文がちょっと抜けてました。訂正させてください。 ○この処理を行うプログラムのメイン処理を行う関数 void paint( int argc,char **argv); を記述する ×この処理を行うプログラムを記述する
504 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:01:35 ] >>500 助言d それはその方が無駄にφ(n)(=count)を求めなくて済むからか? だとしたらその通りかもしれないから今後の参考にするわ
505 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:11:30 ] あくまで好みだからそんなの自分の好きにしろとか言われるかもだが プログラム書くときスペースとか改行ってどのタイミングで入れてる? 学校では a = a + 1 って書く奴がいれば a=a+1 って書く奴もいるし for(i=0;i<5;i++)って書く奴がいれば for(i = 0 ; i < 5 ; i++)って書く奴もいるし こうしたほうが効率がいいとか後で見やすいってのがあるなら参考にしたい 今なら癖とかないから変えられるし
506 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:12:55 ] >>504 そう。 できるだけ必要のない無駄な処理はしないってのが大事。
507 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:14:02 ] >>505 どうぞ google-styleguide.googlecode.com/svn/trunk/cppguide.xml
508 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:14:50 ] 何のIDE使ってるか知らないけど vs2008使ってる俺は適当に書いてから「編集→詳細→選択範囲のフォーマット」で整形してる
509 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:20:58 ] www.textdrop.net/google-styleguide-ja/cppguide.xml あえてこっちを載せないことに悪意を感じる
510 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:25:31 ] >>509 知らなかったんだごめんよ
511 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:39:58 ] >>502 が理解できない てか発想が秀逸すぎて手に負えない
512 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:43:14 ] 最大公約数をループで求めてるだけ
513 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:50:13 ] とりあえず褒めとけばいいと思ってない?
514 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:52:00 ] >>501 0<=x,y<=10000を満たす座標の各点についてその点から 最も近い点の色をその点に設定する ってあるけど 各々の座標の色はどう初期化するべきなの? なにかしら初期化しておかないと最も近い点の色もなにもないと思うんだけど。
515 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 23:09:33 ] 引数で与えられた点の色はこっちで好きに決めていいんだろ
516 名前:430 mailto:sage [2010/06/08(火) 23:12:01 ] >>505 K&R にしておけば後ろ指をさされることはないかと。 ただし私は int main() { ... } とかえている。 emacs(xyzzy) ではこのほうが便利だから。
517 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 23:54:47 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10656.txt プログラムと問題文が書いてあります [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C言語 [4] 期限: 2010年6月9日中に提出 [5] その他の制限: 特にありません よろしくお願いします。
518 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 03:13:20 ] [1] 授業単元:プログラミング演習 [2] 問題文:整数nを入力し、以下のようにサイズnの“N型の図形”を、奇数目入力では”*”、偶数目入力では”+”で表示で表示されるプログラムを作成しなさい。なお、処理の終了はnが0以下の時とする。複合条件やスイッチを用いて作製なさい。 実行例 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10658.txt [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: [3.3] 言語: C [4]期限:6/9日PM10:00 [5]その他制限: printf int while scanf float for のみの使用 なお、||、break、return,は使用禁止 プログラム形式はサンプル風にお願いします kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10660.txt
519 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 03:19:59 ] 上の実行例の訂正です kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10661.txt
520 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 03:41:51 ] #include <stdio.h> int main(void) { int i, j, n; while(scanf("%d", &n)==1 && n > 0) { printf("n=%d\n", n); for(i=0; i<n; i++) for(j=0; j<=n; j++) printf("%c", j!=n ? j==0||j==n-1||j==i ? n & 1 ? '*' : '+' : ' ' : '\n'); } return 0; }
521 名前:9 [2010/06/09(水) 10:07:40 ] >>432 すごいです!!…学校で習った感じに少し、 書き直させて頂きました(>_<) こんなに早く出来ると思ってなかったので びっくりしました。 本当に助かりました!有難う御座いました☆
522 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 10:43:14 ] シルエット カーディガン レントゲン サンドイッチ
523 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 11:01:34 ] >>501 ideone.com/EtsT0 作ってみたけどなんか違うから、だれか直してくれ
524 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 16:11:42 ] [1] 授業単元:データ構造 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10662.txt [3] 環境 [3.1] OS:特に指定なし [3.2] gcc 3.2 [3.3] 言語: (C) [4] 期限: ([2010年6月10日15:00まで] ) [5] その他の制限: なし よろしくお願いします。
525 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 16:45:36 ] >>524 おまえ、5つの数字の列の取りうる範囲は0~99999の100,000個だぞ。 だから入れるバケツの大きさは100,000の配列にしてそこへ2000個のデータを 5桁の数字に対応するバケツに次々入れて、終わったら番号の小さいバケツから順番に 数字を取り出すようにしないとダメだぞ。
526 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 16:47:15 ] void sort(char data[][LENGTH+1], int size) { int *p = calloc(100000, sizeof(int)); int i, j, k; for(i=0; i<size; i++) p[atoi(data[i])]++; for(i=j=0; i<100000; i++) for(k=0; k<p[i]; k++) sprintf(data[j++], "%05d", i); free(p); }
527 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 17:46:55 ] void sort(char data[][SLENGTH+1], int size) { int i, j=0, k; char p5[6]; int *p = calloc(100000, sizeof(int)); for(i=0; i<size; i++) p[atoi(data[i])]++; for(i=0; i<100000; i++) { if(p[i]) { sprintf(p5, "%05d", i); for(k=0; k<p[i]; k++) strncpy(data[j++], p5, 5); } } free(p); }
528 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 18:23:29 ] >>522 申し訳ないですが、 ||と条件文の中にさらに条件文は使用禁止なんです。 説明足りなくてスミマセン。 [printf("%c", j!=n ? j==0||j==n-1||j==i ? n & 1 ? '*' : '+' : ' ' : '\n'); ココと] [while(scanf("%d", &n)==1 && n > 0)ココの部分です]
529 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 19:11:45 ] >>528 これなら大丈夫だろw ideone.com/lGet1
530 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 19:27:49 ] 5つの数字が全部0って可能性はないのかな? もし0が入る可能性があるのならallocateされた領域の初期値が0じゃまずいかも。
531 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 19:28:55 ] data[000000]++;
532 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 19:39:49 ] >>530 お前は何をいってるんだ
533 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 20:07:46 ] >>529 何度もすみません さっきの説明が分かりにくかったですね; forの中にscanfとかを入れるのがダメなんです。 1行に付きscanf、forなどは1つです。 printf int while scanf float for のみの使用です。 それ以外は使用禁止です。 return || else if は使用禁止です。
534 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 20:09:59 ] >>528 誰が禁止って言ったの?
535 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 20:21:51 ] >>531-532 わはははは、javaやりながらここ見てたから勘違いだ。笑えwwwww
536 名前:デフォルトの名無しさん [2010/06/09(水) 20:33:58 ] [1] 授業単元:C言語 [2] 問題文(含コード&リンク): 次の仕様を満たすプログラムを作成せよ 「xy 平面内に任意の電荷量の点電荷を複数個配置する.xy 平面内の原点Oを中心とする4 m 四方(±2 m)の領域内において,位置r(x, y)に形成される電界Erや電位Φrを計 算する.」複数個の点電荷で形成される電界Erや電位Φrを,任意の位置r で計算する際は,重ね合わせの原理を用います 電界ベクトルの計算は, x 成分とy 成分に分けて行います [3] 環境 [3.1] OS: unix [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:6月11日 [5] その他の制限: 特になし
537 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 20:54:43 ] 学校でやってないところは使うなと 先生に言われました;;
538 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 21:01:58 ] エスパー無理
539 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 21:03:14 ] >>537 学校と先生を教えてくれるかな?w
540 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 21:04:30 ] >>537 誰だお前は
541 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 21:11:04 ] 学校でやってないこと 使うなと 講師の先生(せんせ)に 言われたよ ――痴楽 綴り方教室
542 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 21:13:19 ] ≫538 例ですと 前回の課題の 問題文:整数nを入力し、以下のようになサイズnの”Z型の図形”を”*”で表示するプログラムを作成しなさい。 ただし、図形を表示するためのnの値は3以上とし、2以下の値が入力された場合は処理を終了する様にしなさい。 [実行例] 3 <-n入力 n=3 *** * *** 4 <-n入力 n=4 **** * * **** 8 <-n入力 n=8 ******** * * * * * * ******** kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10660.txt はこうなりました。
543 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 21:21:14 ] エスパーできないって言ってるんだが
544 名前:537 542 mailto:sage [2010/06/09(水) 21:27:23 ] ≫534 すみません!! 番号うつの忘れてました。 ホントすみません;;
545 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 21:35:42 ] >>536 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10664.txt 詰めは自分でやってくれ
546 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 22:00:30 ] <iostream>とか<studio.h>って何が違うんですか?
547 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 22:03:59 ] >>546 STanDard InputOutput Headerな 定義されてる関数群がちがう。
548 名前:デフォルトの名無しさん [2010/06/10(木) 00:33:37 ] もう本当に挫折しそうです。 関数を二つ pen()とqen()として作って int main()の中に呼びたいんですが この時pen()の実引数をqen()にしたいんですが これがうまくいきません、どうしたらいいですか? レス代行なので長いプログラムは書けません・すいません。 int main(void) a=pen(); qen(a); としてもpen()とqen()が別個に呼び出されるだけで一つの作業と なりません。
549 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 02:48:35 ] >>548 penの引数をqenの引数にしようとしているようには見えないので、いろいろおっちょこちょいな人なのかな。 関数ポインタをキーワードにいろいろ調べてみてください。
550 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 06:07:31 ] pen()の実引数をqen()にするなら pen(qen); だろ。
551 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 06:46:15 ] pen(void (*p)(void)); かなシグネチャは pen()の中で (*p)(); もしくは p(); として呼び出す
552 名前:デフォルトの名無しさん [2010/06/10(木) 07:52:36 ] >>550 double a; qen(a); pen(qen); ですか?普通に無理でしたが・・ pen(qen);だけでもまぁ無理でした。 >>551 pen((*p)(qen(a));ってことですか?これも無理でした。
553 名前:デフォルトの名無しさん [2010/06/10(木) 07:55:25 ] 関数ポインタってのあるんですが、馬鹿でした。で int mainの中で p= pen; qen((*p)pen());とかごちゃごちゃ色々なとこ変えて、 付け足して 90回くらい思考錯誤したけど全部だめした...... ちなみにpen()、qen()自体はそれぞれsin関数とcos関数 です。ポインタ関数理解したいのでこのままの構造でい きたいと思ってます。
554 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 07:59:47 ] 何がしたいのかさっぱり伝わってこない
555 名前:430 mailto:sage [2010/06/10(木) 08:09:29 ] >>553 #include <stdio.h> #include <math.h> double p(double (*f)(double), double a) { return sin((*f)(a)); } double q(double a) { return cos(a); } int main() { double a, b; a = 3.1415926; b = p(q, a); printf("%f\n", b); return 0; } /* end */
556 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:12:37 ] cos()の返り値をsin()の引数にするってw
557 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:21:43 ] 関数を関数の引数にするってことを理解できてないようにみえる
558 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:23:28 ] >>554 関数を2つ呼び出して、一つの関数をもうひとつの関数の 引数にしたいんです。ただそれだけです。
559 名前:デフォルトの名無しさん [2010/06/10(木) 08:23:50 ] >>555 わざわざありがとうございます、doubleじゃなくてfloatでした。 この時も関数ポインタはfですね? あとretrunっているのですか?どういう役割なのかなぁ.... それとa=3.1415926..とは? 色々ややこしいなぁ、簡単なプログラムなのにこんな複雑だとは....
560 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:25:31 ] >>558 もしかして sin(cos(a)); か?この式に何の意味があるのかは不明だが
561 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:27:38 ] >>559 問題を適切に抜き出す能力が足りないだけ 少なくとも俺は>>558 読んでもさっぱりわからん
562 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:28:07 ] >>560 それでオッケーなら>548でもオッケーだろ
563 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:30:26 ] こういう自分の勝手な解釈で嵌ってくアホ見ると、 余計なことしないで教科書のサンプルでも打ち込んでろって思うな
564 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:38:27 ] マゾなんだろ 簡単な事をわざわざ複雑怪奇に書いて苦しみ悶える事に快感を覚えるタイプ
565 名前:デフォルトの名無しさん [2010/06/10(木) 08:39:27 ] >>561 いやめちゃくちゃ単純なんですが・・ 合成関数のプログラムですよ。 sin(cos(a))ですよ。 関数が二つあるんだから、二つの関数呼び出す必要ありますよね。 全然意味不明じゃないですが・・・
566 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:44:22 ] x=cos(a); y=sin(x); 変数と代入から勉強だな。
567 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:47:18 ] >>565 それはcos(a)の返り値をsin()の実引数にするといい、 cos()をsin()の実引数にするとは言わない。 正しく用語を使えてないから、他人に正しく伝わらない。
568 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:47:37 ] >>565 まだわからない。 double sincos(double a) { return sin(cos(a)); } ではどうだめなのか。
569 名前:デフォルトの名無しさん [2010/06/10(木) 08:51:53 ] >>567 すいません。その通りです。返却値をsin()の実引数の実引数にしたいんです。 >>568 あぁ絶対言うかと思いました。 別に合成関数のプログラム作りたいわけじゃなくて、関数の呼び出しという 構造を学びたいだけで。それなら僕も考えてました。複雑なプログラムはそれ じゃ無理です。
570 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:55:31 ] お前に複雑なプログラムの何がわかるってんだよw
571 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:58:56 ] っと、>>569 はなりすましか
572 名前:553 mailto:sage [2010/06/10(木) 09:00:44 ] このスレにいる人は全員低脳ばっかりですね。
573 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 09:01:44 ] ・質問者はなりすましを防ぐため、トリップを使ってください。 名前欄に、「好きな数字#...」に続けて任意の文字列
574 名前:デフォルトの名無しさん [2010/06/10(木) 09:02:36 ] >>567 以後気をつけますんで、お願いします、どうしたらいいでしょう.... >>570 少し複雑になったら関数が必要だから。別にプログラムの何もわからないが。
575 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 09:03:29 ] >>574 日本語でおk
576 名前: ◆mDrzcbRHP2 [2010/06/10(木) 09:04:48 ] >>573 すいません。 >>569 >訂正 実引数の実引数にしたい。→実引数にしたい。
577 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 09:06:22 ] >>576 おまい誰だよ
578 名前:9 [2010/06/10(木) 09:09:20 ] 再び、お願いします(_ ) 【質問テンプレ】 [1] 授業単元:C言語 演習問題4-14 [2] 問題文(含コード&リンク):身長と標準体重を表示するプログラムを作成せよ。 なお、表示する身長の範囲(開始値、終了値、増分)は、整数値として読み込み、 標準体重は小数点以下2桁だけ表示すること。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: main.c Visual Studio 2008 [3.3] 言語: C++ [4] 期限: 22年6月18日17:00まで [5] その他の制限: do文やif文、for文までです file:///C:/Users/aika/Desktop/%E3%83%9E%E3%83%BC%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%E8%A8%80%E8%AA%9E/c.html 一応上記まで作り、実行も出来たのですが 実行時エラーで問題のように上手くいきません。 多分、水色で示したところが間違っているのだと 思うのですが…(p‥`) 手直し(?)という形で宜しくお願いします、
579 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 09:10:47 ] >>578 >file:///C:/Users/aika/Desktop/%E3%83%9E%E3%83%BC%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%E8%A8%80%E8%AA%9E/c.html ふざけてんの?
580 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 09:15:44 ] aikaって名前?
581 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 09:25:42 ] >>580 >file:///C:/Users/aika/Desktop/マークアップ言語/c.html pc12.2ch.net/test/read.cgi/tech/1274827528/424
582 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 09:29:11 ] スーパーハカーでもなきゃ、あんたのPCの中身はわからんよw
583 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 09:33:03 ] >>581 それはわかってんよ 実行時エラーとか水色で示した部分がこちらは知りたいわけ
584 名前:566 ◆/91kCCQXBo mailto:sage [2010/06/10(木) 10:23:24 ] >>548 >>552 >>559 #include <stdio.h> #include <math.h> /* double sin( double x ); */ /* double sin( double x ); */ float r(double (*p)(double), double (*q)(double), float a) { return (*p)((*q)(a)); } int main() { printf("%f\n", r(sin, cos, 1.0)); return 0; }
585 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 10:29:07 ] >578 は、AKBオタ。
586 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 10:34:42 ] 仲間が見つかってよかったねw
587 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 10:53:59 ] >>616 % Prolog (その一) バケツソート(_整列されたならび) :- abolish('$temp'/2), findall(S,(for(1,_,2000),ランダムな文字列の発生(S)),L), バケツソート(L,_整列されたならび),!. バケツソート(L,_整列されたならび) :- バケツに吐き出す(L), findall(X,(鍵候補値を昇順に発生させる(S),バケツから拾い上げる(S,X)),_整列されたならび). 数値文字候補ならび(['0','1','2','3','4','5','6','7','8','9']). 鍵候補値を昇順に発生させる(S) :- 数値文字候補ならび(L), member(A,L),member(B,L),member(C,L),member(D,L),member(E,L), concat_atom([A,B,C,D,E],S). ランダムな文字列の発生(S) :- 数値文字候補ならび(L), findall(A,(for(1,_,5),M is (random mod 10) + 1,list_nth(M,L,A)),L2), concat_atom(L2,S),!.
588 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 11:02:44 ] >>587 なるほど、よくわかりました
589 名前:9 [2010/06/10(木) 11:13:51 ] すみません…どう書いたらいいのか よく分からなかったもので。 #include <stdio.h> int main(void) { int i; int low, high, step; printf( "何cmから:" ); scanf( "%d", &low ); printf( "何cmまで:" ); scanf( "%d", &high); printf( "何cmごと:" ); scanf( "%d", &step); for(i=low; i<=high; i+=step) { printf( "%dcm %.2fkg\n", low, ((low += step <= high) - 100) * 0.9); printf( "%dcm\n", low += step); } return( 0 ); } 上記のfor{文}のところです。。。 本当にすみませんでした、 また宜しくお願いします。
590 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 11:23:54 ] 589 の for 内 printf 1発目 副作用関連で鼻から悪魔コード じゃない? (関数引数での , は副作用完了点じゃないよな?)
591 名前:587 mailto:sage [2010/06/10(木) 11:33:47 ] ごめんなさい。誤爆です。行方不明だと思ったらこんなところに書き込んでいたか。
592 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 11:42:47 ] >>590 本当やね low2 = ((low += step <= high) - 100) * 0.9; printf( "%dcm %.2fkg\n", low, low2); とすればうまくいくはず
593 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 11:44:26 ] あ、だめだ low2 = ((low + step <= high) - 100) * 0.9; printf( "%dcm %.2fkg\n", low, low2); low += step <= high; か?
594 名前:581 ◆/91kCCQXBo mailto:sage [2010/06/10(木) 11:51:26 ] #include <stdio.h> int main(void) { int i; int low, high, step; printf( "何cmから:" ); scanf( "%d", &low ); printf( "何cmまで:" ); scanf( "%d", &high); printf( "何cmごと:" ); scanf( "%d", &step); for(i=low; i<=high; i+=step) { printf( "%dcm 標準体重=%.2fkg BMI(22)=%.2fkg\n", i, (i - 100) * 0.9, 22.0*i/100*i/100); } return 0; }
595 名前:デフォルトの名無しさん [2010/06/10(木) 18:59:06 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 以下のようにmain関数を定義し、mainの引数を合計するプログラムsumを作成せよ。ただし、引数の数は未定であり、実行時に決定されるものとする。 int main(int argc, char *argv[]) [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2010年6月15日まで [5] その他の制限: 端末上で ./sum 3.2 1.9 2.3 と入力すると 7.4000 と出力されるようにする。
596 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 19:27:07 ] #include <stdio.h> int main(int argc, char *argv[]) { int i; float tmp, sum=0; for(i=1; i<argc; i++){ sscanf(argv[i], "%f", &tmp); sum += tmp; } printf("%g\n", sum); }
597 名前:デフォルトの名無しさん [2010/06/10(木) 19:56:13 ] #include <stdio.h> int main(int argc, char *argv[]) { printf(argv[1]) printf(argv[2]) } のようにするとき,コマンドからargv[]にデータを入れないとエラーがでます。 配列argv[]の初期値はどのように設定すればよいのでしょうか?
598 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 20:08:21 ] if(argc<=1) exit(1);
599 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 21:00:42 ] 2つの自然数aとbの最大公約数gcd(a, b)を求め、それを出力するプログラムを作成せよ。 なお、m = a % b としたとき、gcd(a, b) は m≠0 の場合 gcd(b, m) に等しく、 m=0 の場合 b に等しい。 2つの自然数aとbを入力させ、a 人から b 人を選ぶ組み合わせ comb(a, b)を求め、それを出力するプログラムを作成せよ。 なお、comb(a, b) = comb( a-1, b) + comb( a-1, b-1) であり、 b==0 もしくは b==a のとき comb(a, b) = 1 である。 今週は2つありますが。。。よろしくお願いしますorz
600 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 21:16:32 ] >>597 argc == 1 の時はargvを調べないようにする
601 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 22:50:26 ] >>599 なお~~。の部分はプログラムのテストに使うくらいで、実際の問題とはなんの関連もないわな。
602 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 23:41:09 ] 【質問テンプレ】 [1] 授業単元:画像処理 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10665.txt [3] 環境 [3.1] OS: (特になし) [3.2] gcc [3.3] 言語: (C) [4] 期限: ([2010年6月14日00:00まで]) よろしくお願いします。
603 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 23:42:17 ] すいません。書き忘れましたが、・・・・の部分がわからないので教えていただけないでしょうか?
604 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 23:46:28 ] >>501 ,523 ボロノイ図の問題かな? AREA_SIZEを必要に応じて(10000などに)書き換えて下さい。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10666.cpp
605 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 00:22:35 ] >>599 2番目だけ。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10667.c
606 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 12:44:03 ] 統計学で言うモードに相当するプログラムを書いてます まだ途中ですが次のように書いていました ですが書いている途中にエラーがででコンパイルできません Visual C++ でやってます エラーの理由とその解決方法を教えてください #include<stdio.h> int main(void) { int score[101], score, number; printf("input of number is "); scanf("%d", &number); for (int j = 0; j < 101; j++) { score[j] = 0; } for (int i = 0; i < number; i++) { scanf("%d", &score); if (0 <= score && score <= 100) { score[score]++; }else { break; } } return 0; }
607 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 12:52:35 ] score って変数を二つ宣言してるからじゃ?
608 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 12:52:39 ] エラーメッセージ書いておいてくれないと回答面倒だよ
609 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 12:56:24 ] scoreはscore[0]を表すってことを忘れてました すみません
610 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 13:28:28 ] (゚Д゚ )ハァ?
611 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 13:30:46 ] 違うの? 配列名は配列の先頭要素のアドレスを表すってあるけど ポインタを詳しく理解してないからアドレスとはなんぞやって聞かれてもクエスチョンマークだけど
612 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 13:38:11 ] 「配列名は配列の先頭要素のアドレスを表す」を 「配列名は配列の先頭要素を表す」こう解釈したんだろうけど 知らない言葉を無視して前後をくっつけて理解した気になってたら しょっちゅうトラブル起こるよ
613 名前:9 [2010/06/11(金) 13:44:44 ] >>594 そうですね!!ありがとうございます! 理解出来ましたm(_ _)m 本当にありがとうございます!!!
614 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 13:49:40 ] BASIC上がりか
615 名前:デフォルトの名無しさん [2010/06/11(金) 17:02:14 ] [1] 授業単元: scanf [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10668.txt [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限: 6月12日 午後9:00 まで [5] その他の制限:for文まで習ってます。問1、2両方お願いします。 よろしくお願いします。
616 名前:501 mailto:sage [2010/06/11(金) 17:13:24 ] >>604 ,501,523 どうもありがとうございました。参考にさせて頂きます。 ボロノイ図でググってみましたが関連が深そうです。 課題は「データベース構造設計、更新効率性と正規性のバランス」 がテーマの講座で出たものでした。
617 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 17:38:05 ] >>615 #include <stdio.h> 問一 int main(void) { int i,num[3]={0},t,j,k; for(i=0;i<3;i++) scanf("%d", num+i); j=num[0]/num[2]; k=num[1]/num[2]; for(i=j;i<=k;i++){ t=num[2]*i; if(num[0]<=t && t<=num[1] ) printf("%d*%d=%d\n",num[2],i,num[2]*i); } }
618 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 17:46:46 ] >>615 codepad.org/lFW9VvVR
619 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 17:58:02 ] void q1() { int a, b, c, t, i; scanf("%d", &a); scanf("%d", &b); scanf("%d", &c); t = a % c; if (t != 0) a += c - t; for (i = a; i <= b; i += c) { printf("%d, ", i); } } >>617 初期値をループで求めるのはどうなのと思わなくもない
620 名前:619 mailto:sage [2010/06/11(金) 18:00:00 ] ごめん >>618 に対してだった