- 1 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 02:13:06 ]
- あなたが解けない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++の宿題片付けます 122代目(実質123代目) pc11.2ch.net/test/read.cgi/tech/1232029287/
- 445 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 03:53:53 ]
- こんなプログラムメンテしたくない。というか、プログラミングのセンスないね、チミ。
- 446 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 03:54:54 ]
- >>445
先生のセンスをこのスレの奴らに見せ付けてやってください!
- 447 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 09:22:37 ]
- >>445
うん、ないよ。でも、趣味でしかないし、1人でのんびりやれればいいから 下手の横好きでもいいかなー。
- 448 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 10:03:53 ]
- >>445
メンテじゃなくて、先輩社員が作ったプログラムを触る仕事しかさせてもらえないんだろ?
- 449 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 12:32:16 ]
- >>441
ぱっと見、無限ループの可能性有だな〜 問題10ではOKだけど、脱出条件組み込んだ方が吉 if(begin == end) break;見たいな
- 450 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 12:35:24 ]
- >>449
へーそーなのかーwww
- 451 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 12:44:41 ]
- scanfで値読んでるからマイナス入れれば終了するか・・・
>>450サンクス それより、問題文だとファイルアクセスっぽいがコマンドラインでよいのか?
- 452 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 12:52:55 ]
- 何を言ってるのかわからない
>for(i = 0; begin <= end; i++){ で脱出条件とやらは十分だと思うが
- 453 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 13:02:46 ]
- >>452
いや、外のWhile抜けないでしょそれじゃ。 While抜ける条件が、nのScanf or 値が同じ時のみ。 同値無し && 入力無し時のことを言ってる
- 454 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 13:06:44 ]
- 外のwhile抜けるのになんでbeginとendが出てくるんだよw
- 455 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 13:10:30 ]
- >>454
441のプログラムを見れば分かると思うが、While(1)で無限ループしてんだぞ? んで、beginとendで配列範囲を設定して、2文探索をしてる。 同値無し時にbeginとend判定しなくなるから、同値breakがキャンセルされ、あとはScanf()のbreakだけになる。 何を持ってbegin/endで煽るのか分かりかねる。
- 456 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 13:12:58 ]
- 二分探索で見つからなかった場合に終了なんて、問題文のどこを探しても書いてありませんがw
- 457 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 13:14:22 ]
- 終了しないとも書いてないなw
- 458 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 13:16:39 ]
- もしかして、見つかった場合のbreakで外側のループ抜けるとか思ってないか?
- 459 名前:デフォルトの名無しさん [2009/03/22(日) 13:18:06 ]
- >>417
返事遅くなってすいません。 期限が延びて明日までになりました。 サンプルでは読み込む関数はないので自分で作成せよと本日問題追加されました。
- 460 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 13:30:33 ]
- >>455
begin/endはプログラムの終了と関係ないからだろ。 見つからなかった場合でも、終了するのはプログラムじゃなくて「探索」だぞ。 >探索の範囲がつきてしまった時に探索 >を終了します。
- 461 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 13:32:02 ]
- >>453
> While抜ける条件が、nのScanf or 値が同じ時のみ。 値を見つけた時に抜けているのはforだぞ
- 462 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 13:32:47 ]
- そもそも0を読み込んだら終了なのも理解できてないようだ
- 463 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 13:33:38 ]
- WhileとかScanfとか書いてるからただのアホだろw
- 464 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 15:56:15 ]
- >>441 さん
>>459 % ./a.out <data でファイル入力[Enter] #include <stdio.h> int BinarySearch(void); int main(void) { while(!BinarySearch()); return 0; } int BinarySearch(void) { int n=0, *data, key=0, begin=0, end, mid, i; if(scanf("%d", &n) != 1) return 1; if(n == 0) return 0; if(n < 0) return 2; if((data = (int *)malloc(sizeof(int) * n)) == NULL) return 3; for(i = 0; i < n; i++) if(scanf("%d", &(data[i])) != 1) {free(data); return 1;} if(scanf("%d", &key) != 1) {free(data); return 1;} for(i = 1, end = n-1; begin < end; i++){ mid = (begin + end) / 2; if(data[mid] < key) begin = mid + 1; else end = mid - 1; } printf("%d\n", i); free(data); return 0; }
- 465 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 16:01:02 ]
- n==0のとき0返してどうすんだよw
- 466 名前:465 mailto:sage [2009/03/22(日) 16:12:54 ]
- 0はfalse、while(!false);で次のデータ。
- 467 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 16:42:40 ]
- 問題は0で終了なのに、また関数呼び出してscanf()失敗してからループ抜けるってのがどうなのかって話
- 468 名前:466 mailto:sage [2009/03/22(日) 16:48:42 ]
- 464が俺だ。どうすんだよd どうもしない。
- 469 名前:464 mailto:sage [2009/03/22(日) 18:28:13 ]
- >>464 修正
#include <stdio.h> #define returnVal(n) {free(data); return n;} int BinarySearch(void); int main(void) { while(BinarySearch() == 0); return 0; } int BinarySearch(void) { int n=0, *data, key=0, begin=0, end, mid, i; if(scanf("%d", &n) != 1) return 2; if(n == 0) return 1; if(n < 0) return 0; if((data = (int *)malloc(sizeof(int) * n)) == NULL) return 3; for(i = 0; i < n; i++) { if(scanf("%d", &(data[i])) != 1) returnVal(2) if(data[i] == 0) returnVal(1) } if(scanf("%d", &key) != 1) returnVal(2) if(key == 0) returnVal(1) for(i = 1, end = n-1; begin < end; i++){ mid = (begin + end) / 2; if(data[mid] < key) begin = mid + 1; else end = mid - 1; } printf("%d\n", i); returnVal(0) }
- 470 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 18:56:59 ]
- 気持ち悪いマクロだw
- 471 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 19:09:48 ]
- #define returnVal free(data); return
{returnVal 2;} のほうがよかったかd
- 472 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 22:11:35 ]
- いやそこじゃないだろw
- 473 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 02:02:49 ]
- BinarySearch() で
nの入力 malloc free をやろうとする頭がキモイ
- 474 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 09:38:05 ]
- >>437 負の値と零も検索出来るように。マクロ似のmainも外した。
#include <stdio.h> int main(void) { int n=0, *data, key=0, begin, end, mid, i; while(1) { if(scanf("%d", &n) != 1) break; if(n == 0) break; if(n < 0) continue; // 暫定コンティニュー if((data = (int *)malloc(sizeof(int) * n)) == NULL) break; for(i = 0; i < n; i++) { if(scanf("%d", &(data[i])) != 1) break; } if(i != n) { free(data); break; } if(scanf("%d", &key) != 1) { free(data); break; } for(i = 1, begin = 0, end = n-1; begin < end; i++){ mid = (begin + end) / 2; if(data[mid] < key) begin = mid + 1; else end = mid - 1; } printf("%d\n", i); free(data); } return 0; }
- 475 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 09:46:38 ]
- いつまでも引っ張るようなもんでもない
- 476 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 21:39:26 ]
- char*型を引数にとる関数に
std::string型に格納されてる文字列を渡したいんですが、 c_str()の返す型がconst char *であるためうまく渡せません。 (char *)でキャスト変換するとコンパイルは通るのですが安全とはいえないです。 これを安全に渡すための方法があれば教えてください。 strcpyでコピーする方法はwarningが出てしまいます。 環境はVS2005です。
- 477 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 21:41:26 ]
- >>476
(char *)でキャストで良いと思います。
- 478 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 21:43:38 ]
- キャストを用いることはプログラマーが結果に関して責任を持つということ。
プログラマーが安全だと判断すればそれで良い。
- 479 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 21:50:04 ]
- const_cast使えば?
だがスレ違いだ
- 480 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 21:51:15 ]
- C++なら(char *)じゃなくconst_cast<char *>だろーと議論に資しないことを申し奉りさぶらわんと欲す
- 481 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 21:54:18 ]
- [1] 授業単元:C言語
[2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8997.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:4月2日 [5] その他の制限:ユーザ定義関数を利用する よろしくお願い致します。
- 482 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 22:11:37 ]
- コラッツの問題だw
きっと誰かが剰余演算子を使わず,さらにはアクロバティックに書いてくれると期待w
- 483 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 22:16:06 ]
- >>481
#include <stdio.h> int collatz(int n) { int i; for(i = 0; n > 1; i++){ if(n % 2 == 0) n /= 2; else n = n * 3 + 1; } return i; } int main() { int n; while(1){ scanf("%d", &n); if(n == 0) break; printf("%d\n", collatz(n)); } return 0; }
- 484 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 22:17:47 ]
- >>477-480
本当にありがとう。参考になりました。
- 485 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 22:34:37 ]
- これくらいしか思いつかんかった。
#include <stdio.h> void main(){ int i=0,j; while((!i||printf("%d\n",j))&&scanf("%d",&i)&&i) for(j=0;i!=1;i=((i^1)&1)*(i>>1)+(i&1)*((i<<1)+i+1),++j); }
- 486 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 23:26:57 ]
- >>483 さん
#include <stdio.h> static int n = 0; void collatz(void) { int i; for(i = 0; n > 1; i++) if(n & 1) n *= 3, n++; else n >>= 1; printf("%d\n", i); } int main(void) { while(scanf("%d", &n) != EOF && n) collatz(); return 0; }
- 487 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 00:00:33 ]
- >>483
ありがとうございました 助かりました
- 488 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 09:42:53 ]
- >>476>>484
おいキャストするな。 c_strを元にコピーすることを薦める次第だ。
- 489 名前:デフォルトの名無しさん [2009/03/25(水) 20:07:37 ]
- ほ
- 490 名前:デフォルトの名無しさん [2009/03/27(金) 04:12:17 ]
- 初歩的な問題だと思いますが、勉強し始めでわかりません。どうかよろしくお願いします
。 下記のソースを記述しコンパイルと実行を確認しなさい /** データ型 */ #include<stdio.h> void printDataType1(); main(){ printDataType1(); } /** * データ型の表示 * 単純に表示 */ void printDataType1(){ int intData = 10;
- 491 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 04:21:13 ]
- ごめん、難解すぎる
- 492 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 08:04:15 ]
- printf("dec %d\n", intData);
printf("hex %x\n", intData); printf("oct %o\n", intData); } と、後ろに追加する。コンパイルのしかたは、調べれば分かるので省略する。
- 493 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 08:09:41 ]
- ソースの書き方とコンパイルの仕方を質問しているんじゃないかとエスパーする
どっちにしてもこれ以上のエスパーは無理だが
- 494 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 13:20:00 ]
- 一番下に"}"を付けるだけでいいんじゃね
- 495 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 15:59:32 ]
- [1] 授業単元:
[2] 問題文(含コード&リンク):ファイル出力で二つ以上の関数が同じファイルに続けて出力させるにはどうすればいいですか? 毎回file openさせてやってみたら、途中まで上書きになってしまいました。 [3] 環境 [3.1] OS:Win xp [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:無期限 [5] その他の制限:
- 496 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 16:11:04 ]
- >>495
二回目はアペンドモード"a"で開くしかないよ ただしXPならMS-DOSの系統なのでテキストモードだと EOFが最後に入っているのでこれを1バイト切り詰めてから アペンドしないといけない
- 497 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 16:13:52 ]
- 「途中まで上書き」と言ってるから、俺はfseekで解決と予測。
- 498 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 16:19:26 ]
- >>495
ファイルポインタを関数で使いまわす FILE* fp = fopen("***", "w"); func1(fp); func2(fp); fclose(fp);
- 499 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 16:25:10 ]
- >>498
それあかんよ FILE構造体にはデータも書き込むので func1(&fp); func2(&fp); としておき 受ける側は func1(FILE **fp) func2(FILE **fp) としないといけない 実際に実験してみればわかる
- 500 名前:495 mailto:sage [2009/03/27(金) 16:26:59 ]
- みなさんありがとうございます。
やってみます。
- 501 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 17:40:12 ]
- >>499
どういう実験か書いてみそ
- 502 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 17:56:08 ]
- 実験してないし流れも読めないが、
>>499の主張は間違っている気がする。 だって、FILE* fpなんでしょ? > FILE構造体にはデータも書き込むので FILEへのポインタの値を変えたりするつもりは無いはず。
- 503 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 18:00:09 ]
- C++のifstreamとかofstreamのようなオブジェクトなら
リファレンス渡しまたはアドレス渡しをしなければいけないのは わかるが、CのFILE*ってポインタなんだからそのまま渡していいと思う
- 504 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 18:14:38 ]
- >>499 への容赦ない怒涛のツッコミにワロタww
本人ではないが、func1() や func2() の中で fopen する場合と 勘違いしたんじゃないか、とフォローしてみる。
- 505 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 18:53:06 ]
- void foo(FILE *fp) {
fputs("foo\n", fp); } void bar(FILE *fp) { fputs("bar\n", fp); } int main() { FILE *fp = fopen("124-495.txt", "w"); foo(fp); bar(fp); fclose(fp); return 0; } 出力結果は foo bar
- 506 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 23:31:46 ]
- >>504
>>498にfopenも書いてあるからその勘違いは無いんじゃね?
- 507 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 23:57:18 ]
- 499> それあかんよ
あかんって何が?
- 508 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 02:35:51 ]
- 992 名前:デフォルトの名無しさん 投稿日:2009/03/26(木) 23:10:42
世界的には日本語を使う人よりも英語を使う人の方が多い 前スレのこいつが必死なんだろ。日本語よりと比較したら間違いでもないんだが。
- 509 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 10:52:35 ]
- 誤爆としてもワロた
- 510 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 12:28:32 ]
- >>498
そらあかんわ FILE *fp = fopen("***", "w"); FILE* fp, fl; は同じように見えるが2つの変数は型が違う。 FILE *fp, *fl; と書く。Javaではない。
- 511 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 12:33:19 ]
- だれか>>501を翻訳してくれ
- 512 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 13:38:41 ]
- どういう実験か書いてみてください
- 513 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 14:01:25 ]
- ところでこのゴミ、
どこに捨てたらいい? ∧_∧ (´∀`) /⌒ 丶 / / \_M ( /| |\__E) \/ | / \ ( イ / ウワァァン丶 | /|ハ( `Д)ノ| | / / 丶(>>510) ノ ( 丿丿  ̄ ̄ ̄ ||| ||| / ト、\ /_ノ  ̄
- 514 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 17:50:42 ]
- >>513
pc12.2ch.net/test/read.cgi/tech/1179394713/ pc12.2ch.net/test/read.cgi/tech/1179424842/
- 515 名前:デフォルトの名無しさん [2009/03/29(日) 15:19:16 ]
- 初めまして。
www.pref.fukushima.jp/pc-concours/2009/03/03_reidai.htmlに記載されている2006年の本選問題の 問7のヘビの問題と問8のバス路線の問題をお願いします。 お手数だと思いますが、よろしくお願いします。 単元;c言語 期限なんですがなるべく早めによろしくお願いいたします。 環境;os xp コンパイル名;gcc
- 516 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 15:40:40 ]
- >>515
C/C++の宿題片付けます 122代目 pc11.2ch.net/test/read.cgi/tech/1232029287/449 ヘビもあったな
- 517 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 15:58:17 ]
- ヘビのは正規表現使えたらすごく楽なんだけどな…。
- 518 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 16:09:07 ]
- 問8
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8863.txt どこが仕様を満たしてない!
- 519 名前:デフォルトの名無しさん [2009/03/29(日) 16:19:50 ]
- いろいろ回答ありがとうございます。
問題文通りでお願いします。
- 520 名前:デフォルトの名無しさん [2009/03/29(日) 16:36:39 ]
- すいません。追加なんですけど、2007年度の本選の問9、12をよろしくお願いします。
問題通りの出力、入力でお願いします。 後、先程の問題の回答も引き続きお願いします。 もし、何か質問で至らない点があったらこちらですぐに回答します。
- 521 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 17:19:24 ]
- 問題文どおりか、ありがと、蛇の問題は考えておく。ところで、問題のタイトルは
問題9 円に内接する多角形の面積 問題12 ブラックジャック・ゲーム
- 522 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 18:08:07 ]
- >>520
#include <stdio.h> int getLine(int*a){ int temp = 0;int i=0;int c; while(c = getchar(),c!='\n'){ if(c==' '){ a[i]=temp<10?temp:10;i++;temp = 0; }else{ temp*=10;temp+=c-'0'; } } a[i]=temp<10?temp:10;i++; return i; } int main(){ int a[21];int len; while(len = getLine(a),a[0]!=0){ int sum = 0;int cnt = 0; for(int i=0;i<len;i++){ if(a[i]==1)cnt++; sum+=a[i]; } for(int i=0;i<cnt;i++){ if(sum+10<=21)sum+=10; } if(sum>21)sum=0; printf("%d\n",sum); } return 0; }
- 523 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 18:37:10 ]
- >>515 ヘビ
#include<stdio.h> #include<string.h> int is_typeA(const char *p){ int i, j; if(strncmp(p, ">'", 2)!=0) return 0; for(i=0,p+=2;*p=='=';i++,p++); if(i<1 || *p++!='#') return 0; for(j=0;j<i && *p=='=';j++,p++); return !(j<i || strcmp(p, "~")); } int is_typeB(const char *p){ int i; if(strncmp(p, ">^", 2)!=0) return 0; for(i=0;strncmp(p+=2, "Q=", 2)==0;i++); return !(i<1 || strcmp(p, "~~")); } int main(void){ char buf[100+1]; int n=0, i; scanf("%d\n", &n); for(i=0;i<n && gets(buf);i++){ // gets! if(is_typeA(buf)) printf("A\n"); else if(is_typeB(buf)) printf("B\n"); else printf("NA\n"); } return 0; }
- 524 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 19:21:57 ]
- >>520 あってるかどうか・・・
//09 gcc -std=gnu99 main.c -o main.exe #include <stdio.h> #include <math.h> double s(int n){ double sum = 0; for(int i=0;i<n;i++){ int in=0; scanf("%d",&in); double theta =3.14 * (90-(in/2))/180; sum += sin(theta)*cos(theta)*sin(theta)*cos(theta); } return sum; } int main(){ int n; while(scanf("%d",&n),n!=0){ double sum1 = s(n); scanf("%d",&n); double sum2 = s(n); // if(sum1==sum2){ printf("0\n"); }else if(sum1>sum2){ printf("1\n"); }else{ printf("2\n"); } } return 0; }
- 525 名前:521 mailto:sage [2009/03/29(日) 19:40:11 ]
- >>523
短いコード!しかし、gets() を使うから、100文字を超えても一致してしまう。 バスの再掲 #include <stdio.h> void myfunc(int, int); int main(){ int x, y; scanf("%d %d", &x, &y); myfunc(x, y); } void myfunc(int x, int y){ int t, i; t = 1; i = x; if(i <= 5) t *= (x < y)? 1: -1; putchar(i+'0'); while(i != y){ i += t; if(i == 0) t *= -1; if(i == 10){ i = 5; t *= -1; } putchar(' '); putchar(i+'0'); } putchar('\n'); }
- 526 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 19:43:02 ]
- あみだくじを自動的に生成するプログラムをお願いします。
参加者の人数と当たりの数を入力し、当たり部分には◎ハズレには× となるようにお願いします。
- 527 名前:デフォルトの名無しさん [2009/03/29(日) 19:43:46 ]
- 本当に助かります。ありがとうございます
申し訳ないですけど2007年本選の6と7、2007年予選10番もお願いします
- 528 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 19:54:30 ]
- ってかもう全部の問題をお願いしますね
- 529 名前:デフォルトの名無しさん [2009/03/29(日) 20:02:14 ]
- 527番の者ですが
528番の回答は自分の発言ではありません
- 530 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 20:10:49 ]
- >>529
言ってることは同じ
- 531 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 20:13:45 ]
- 後からちょこちょこ追加されるよりは>>528のほうがマシ
- 532 名前:デフォルトの名無しさん [2009/03/29(日) 20:23:27 ]
- すいませんでした。しかし期限が詰まっているもので527番の回答なんですが、引き続き回答のほう
よろしくお願いします。今回はちょこちょこと付け加えてしまい迷惑をかけました。
- 533 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 20:28:01 ]
- >>532
過去ログくらい読めカス
- 534 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 20:29:02 ]
- 解き方問題文中で丁寧に説明してるのになんで解けないのか理解できない
- 535 名前:527 mailto:sage [2009/03/29(日) 20:30:04 ]
- お前らガタガタ抜かさんととっとと答えんかい!!
- 536 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 20:38:01 ]
- 527さん、偽者が現れ始めているのでfusianasanやった方がいいですよ
- 537 名前:IP address mailto:sage [2009/03/29(日) 20:40:22 ]
- 問題10 マトリョーシカ
問題6 有料道路料金 問題7 おはじき取り >>蛇の模様 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9003.txt
- 538 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 21:21:48 ]
- >>524
theta=3.14*in/180.0; sum+=0.5*sin(theta); じゃないかな?
- 539 名前:IP address mailto:sage [2009/03/29(日) 21:42:56 ]
- #include <stdio.h>
#include <stdlib.h> #include <time.h> int main(void) { int i, r, atari, deta=0, hito, honn; atari = 1; // printf("あたりの本数を入力:%d\n", atari); printf("あみだくじに参加する人数を入力:"); scanf("%d", &hito); printf("あみだくじの本数を入力:"); scanf("%d", &honn); if(honn < atari) { printf("あたりの数が多すぎます\n"); return 2; } if(honn < hito) { printf("くじの本数が足りません\n"); return 2; } srand(time(NULL)); for(i=1; i<=hito; i++) { r = rand(); // printf("%d/%d=%d 残り%d本\n", r, RAND_MAX/honn, r/(RAND_MAX/honn), honn ); if(r/(RAND_MAX/honn) >= 0 && r/(RAND_MAX/honn) <= atari-1) { printf("%d 番の人◎\n", i); atari--; honn--; } else { printf("%d 番の人×\n", i); honn--; } } return 0; }
- 540 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 22:07:53 ]
- >>527 2007年本選の6 有料道路料金
#include<stdio.h> void swap(int *a, int *b){int c;c=*a;*a=*b;*b=c;} int get_distance(int from, int to){ static const int distance[]={0, 6, 13, 18, 23, 43, 58}; if(from>to) swap(&from, &to); return distance[to-1]-distance[from-1]; } int get_normal_price(int from, int to){ static const int price[][6]={ { 300}, { 500, 350}, { 600, 450, 250}, { 700, 600, 400, 250}, {1350,1150,1000, 850, 600}, {1650,1500,1350,1300,1150, 500} }; if(from>to) swap(&from, &to); return price[to-2][from-1]; } int is_special_time(int hour, int min){ return (1730<=(hour*100+min) && (hour*100+min)<=1930); } int get_price(int from_ic, int from_hour, int from_min, int to_ic, int to_hour, int to_min){ int price=get_normal_price(from_ic, to_ic); if(get_distance(from_ic, to_ic)<=40 && (is_special_time(from_hour, from_min) || is_special_time(to_hour, to_min))) price=((price/2)+50-1)/50*50; return price; } int main(void){ int from_ic=0, from_hour, from_min, to_ic, to_hour, to_min; for(;;from_ic=0){ scanf("%d %d %d %d %d %d", &from_ic, &from_hour, &from_min, &to_ic, &to_hour, &to_min); if(from_ic==0) break; printf("%d\n", get_price(from_ic, from_hour, from_min, to_ic, to_hour, to_min)); } return 0; }
- 541 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 22:25:36 ]
- >>527 2007年本選の7 おはじき取り
#include<stdio.h> int main(void){ int strategy_size, strategy[25]; int i, j, rest; for(;;){ strategy_size=0; scanf("%d", &strategy_size); if(strategy_size<1) break; for(i=0;i<strategy_size;i++) scanf("%d", &strategy[i]); for(rest=32,j=0;rest>0;j++) { rest-=(rest-1)%5; printf("%d\n", rest); rest-=strategy[j%strategy_size]; if(rest<0) rest=0; printf("%d\n", rest); } } return 0; }
- 542 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 22:43:14 ]
- int main(void)
{ return 0; }
- 543 名前:デフォルトの名無しさん [2009/03/29(日) 23:01:52 ]
- 回答ありがとうございました。
- 544 名前:IP address mailto:sage [2009/03/30(月) 00:05:18 ]
- >>539 問題文の読み違いがあったので、修正します。
printf("あたりの本数を入力:", atari); scanf("%d", &atari); printf("あみだくじに参加する人数を入力:"); scanf("%d", &hito); honn = hito; // printf("あみだくじの本数を入力:%d\n", honn); if(honn < atari) { : // printf("%d/%d=%d 残り%d本\n", r, RAND_MAX/honn, r/(RAND_MAX/honn), honn ); if(r/(RAND_MAX/honn) <= atari-1) {
- 545 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 19:55:03 ]
- >>526
#include<stdio.h> #include<stdlib.h> #include<time.h> int main(void){ int hito, atari; int i, j; printf("参加者の人数 : "); scanf("%d", &hito); printf("当たりの数 : "); scanf("%d", &atari); srand(time(NULL)); printf("\n"); for(j=0;j<15;j++){ if(j%2) printf("│"); for(i=j%2;i<hito-1;i+=2) printf("%s", (rand()%3)?"├┤":"││"); if(i<hito) printf("│"); printf("\n"); } for(i=0;i<hito;i++){ if((rand()%(hito-i))<atari){ atari--; printf("◎"); }else printf("×"); } printf("\n"); return 0; }
|

|