- 1 名前:デフォルトの名無しさん [2007/06/23(土) 23:03:25 BE:255611693-2BP(12)]
- あなたが解けない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++の宿題を片付けます 90代目 pc11.2ch.net/test/read.cgi/tech/1181802185/
- 285 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 16:30:42 ]
- w+ → r+
- 286 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 16:32:01 ]
- >>279
こんなモンでいいと思うよ #include <stdio.h> int main(int argc, char **argv) { char *tmp; /* 引数の制限 */ if (argc != 3) { printf("使用法:<プログラム名> <ファイル名1> <ファイル名2>\n"); return 1; } tmp = tmpnam(0); if (!rename(argv[1], tmp)) if (!rename(argv[2], argv[1])) if (!rename(tmp, argv[2])) return 0; perror("rename"); return 1; }
- 287 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 16:45:04 ]
- >>286
名前じゃなくて中身を交換するようにしたいんです できれば>>279の間違ってる部分を修正してもらえるとありがたいです
- 288 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 16:56:08 ]
- 修正は面倒臭いんだよな
一から作った方がよほど早い
- 289 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 16:59:28 ]
- そこをなんとか・・・
- 290 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 17:11:27 ]
- 名前の交換も中身の交換も結果としては同じなんだから、簡単なほうがいいと思うけど。
- 291 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 17:16:30 ]
- [1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):キーボードから2つのファイル名を指定し、1つめのファイルの末尾に2つめのファイルの内容を追加するプログラムを作成せよ. ファイル名は最大15文字とする. ファイルの1行の最大文字数は31文字とする. [3] 環境 [3.1] OS: (Windows/Linux/等々) XP [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)gcc [3.3] 言語: (C/C++/どちらでも可 のいずれか) C [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 無期限 [5] その他の制限:
- 292 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 17:23:14 ]
- >>279 ほれ
#include <stdio.h> int copy(char *from, char *to) { FILE *fi, *fo; int c; if ((fi = fopen(from, "rb")) == NULL) return perror(from), 0; if ((fo = fopen(to, "wb")) == NULL) return perror(to), fclose(fi), 0; while ((c = getc(fi)) != EOF) putc(c, fo); return fclose(fi), fclose(fo), 1; } int main(int argc, char **argv) { char *tmp; int result; /* 引数の制限 */ if (argc != 3) { printf("使用法:<プログラム名> <ファイル名1> <ファイル名2>\n"); return 1; } tmp = tmpnam(0); result = (copy(argv[1], tmp) && copy(argv[2], argv[1]) && copy(tmp, argv[2])); remove(tmp); return !result; }
- 293 名前:286=292 mailto:sage [2007/06/26(火) 17:34:21 ]
- >>279
モード"r+"で2つのファイル開いて一時ファイルを使わずに内容を交換しようという 志自体は面白いが、読み書きのたびにftell()/fseek()の類で読み書き位置を 移動する必要があるし、ファイルサイズが異なるファイルを交換する場合、 最後にファイルサイズを変更する(切り詰める)手段が必要だ。 大抵のシステムにはそうした手段が用意されているが、C標準には存在しない。 まあおとなしく>>286か>>292のコードを使っとけ。
- 294 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 17:34:42 ]
- >>291
ほれ。 制約の意味がわからんのだが、ファイル名の最大長とか1行の最大長とかはなんかの縛りなのか? #include <stdio.h> #ifndef EOF #define EOF -1 #endif int main(int argc, char **argv){ char c; FILE *fp1 = NULL, *fp2 = NULL; if( (fp1 = fopen(argv[1], "ab")) == NULL || (fp2 = fopen(argv[2], "rb")) == NULL) return -1; fseek(fp1, 0, SEEK_END); while((c = fgetc(fp2)) != EOF){ fputc(c, fp1); } fclose(fp1); fclose(fp2); return 0; }
- 295 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 17:37:02 ]
- >>293
デカい方のファイルに合わせてバッファ確保して中身入れ替えりゃいいんじゃねぇの
- 296 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 17:39:36 ]
- >>295
ファイルを計4回開く気があるのならそれでいいね。 最初に"rb"で開いて一気読みして次に"wb"ね。 質問者の意図とは異なると思うが。
- 297 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 17:44:28 ]
- なんで4回も開く必要がある
r+とfseek()使え
- 298 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 17:46:35 ]
- >>297
だから、それだとファイルを切り詰められないでしょ
- 299 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 18:14:18 ]
- freopenってのがあったような
- 300 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 18:23:30 ]
- >>291
copy /B file1+file2
- 301 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 18:25:29 ]
- >>294さん
テストの過去問題なんで、テストの問題のうちなんだと思います。
- 302 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 18:54:38 ]
- >>301
なるほど、指定のテキストファイル読めとかそーゆう縛りね んじゃ要求通りだとこんな感じかね? #include <stdio.h> #ifndef EOF #define EOF -1 #endif #define LINE_MAX 32 #define FILENAME_MAXLENGTH 15 int main(int argc, char** argv){ char buf[LINE_MAX]; FILE *fp1 = NULL, *fp2 = NULL; if( strlen(argv[1]) > FILENAME_MAXLENGTH || strlen(argv[2]) > FILENAME_MAXLENGTH) return -2; if( (fp2 = fopen(argv[2], "rb")) == NULL || (fp1 = fopen(argv[1], "ab")) == NULL) return -1; while(fgets(buf, LINE_MAX, fp2) != NULL) // 1行が32文字を超えると切り捨てられるけど fputs(buf, fp1); fclose(fp1); fclose(fp2); return 0; }
- 303 名前:デフォルトの名無しさん [2007/06/26(火) 19:39:19 ]
- [1] 授業単元: プロC
[2] 問題文(含コード&リンク): 1.まず、 pwd を実行し、成功すれば、 ls を実行する。 ただし、コマンドライン引数はすべてls にそのまま渡すものとする。 2.オプション -c があれば、 date を実行し、その後、 cal を実行する。 オプションを指定しなければ、 date だけを実行する。 ただし、オプション -z timezone があれば、 環境変数TZの値をtimezoneに設定して、各コマンドを実行する。 3.findコマンドを呼び出して、指定されたディレクトリ (複数可。指定がない場合は、カレントディレクトリ) 以下にあるディレクトリ(指定されたディレクトリ自身も含む)を表示する。 [3] 環境 [3.1] OS:Vine Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:来週まで [5] その他の制限:よろしくお願いします。
- 304 名前:デフォルトの名無しさん [2007/06/26(火) 19:43:44 ]
- ↑
<サンプルプログラム1> www.cc.kyoto-su.ac.jp/~wd/jissen-programming-c/prog/voyager1.c <サンプルプログラム2> www.cc.kyoto-su.ac.jp/~wd/jissen-programming-c/prog/voyager2.c
- 305 名前:デフォルトの名無しさん [2007/06/26(火) 19:45:37 ]
- ↑
書き忘れです(汗) pwdを実行し、成功すれば、その後、ls -lを実行するプログラムです
- 306 名前:デフォルトの名無しさん [2007/06/26(火) 19:56:11 ]
- >>303-305
日本語でおk
- 307 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 20:19:36 ]
- [1] 授業単元: プログラミング実習
[2] 問題文(含コード&リンク): 学生のデータベースを作成する。 まずは学生の名前と大学名、学科、生年月日(年はintで月日はshortで定義する)、趣味で構成される構造体を作る。 これらは全て実際には存在するような名前にしないこと。 初めに学生5人が与えられている。->kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4408.txt プログラムは、0から3のうちいずれかを入力し0が入力されるまでプログラムを繰り返す。 0を入力したときプログラムを終了する。 1を入力したときすべての学生をバイナリモードでテキストファイルに出力し、画面上にも出力する。 2を入力したとき何番目かの学生(1と入力したら1番目という風に)を画面上に出力する。 3を入力したとき新しい学生を追加する(名前,大学名,生年月日,趣味)。 またメモリーはでいつでも1人分の学生のデータしか保持しない。 [3] 環境 [3.1] OS: WindowsXP [3.2] gcc [3.3] 言語: C [4] 期限: 6/27 [5] その他の制限: 特になし よろしくお願いします。
- 308 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 20:36:36 ]
- [1] 授業単元:プログラム技術
[2] 問題文(含コード&リンク): 1.正整数n を入力し,2 〜 n の範囲にある素数およびその個数を求めるプログラムを作成 しなさい. 2.年(西暦),月,日を入力したとき,入力した年月日の曜日を出力するプログラムを作成 しなさい. 3.下の表のような時間を入力したとき,その総時間を求めるプログラムを作成しなさ い.なお,表のデータは例なので,汎用的に扱えるように,数と 時間は実行時に任意の数を入力すること. 例 1 動画50 分08 秒 2 動画29 分38 秒 3 動画15 分49 秒 4 動画22 分50 秒 5 動画11 分02 秒 [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限 来週の火曜辺りまで [5] その他の制限 なし よろしくお願いします
- 309 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 20:57:36 ]
- >>302さんありがとうございました。テストできるようにがんばります。
- 310 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 20:59:31 ]
- >>308
3は総時間をどう表示すればいい? 合計○○時間△△分□□秒でおk?
- 311 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 21:03:40 ]
- あと3の時間は
どう入力させればいいんだ? >>310における○○、△△、□□をそれぞれ入力してもらう形? それとも、「* 動画** 分** 秒」を全部入力させる形?
- 312 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 21:24:41 ]
- [1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): 2つのベクトル要素の値をキーボードから読み込み、その内積を計算するプログラムを 作りなさい。要素の値はdouble型であるものとする。 ・ベクトルの要素数の指定はオブジェクト形式マクロ(#define指令)で行う(値は6とする) ・ベクトルの要素の値はキーボードから読み込む ・データの読み込みや内積の計算などの繰返し部分はfor文で行う ・結果は、読み込んだ各ベクトルの値を横ベクトルとして表示した後、その次の行に出力する [3] 環境 [3.1] OS: Windows [3.3] 言語: C言語 [4] 期限: 6月27日まで 全くわかりません 誰か助けてください
- 313 名前:308 mailto:sage [2007/06/26(火) 22:01:13 ]
- >>311
○○、△△、□□をそれぞれ入力してもらう形です。 総時間は△△分□□秒でお願いします。 ○○時間△△分□□秒でも問題はないとは思いますが・・・・
- 314 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 22:14:13 ]
- >>312
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4409.txt
- 315 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 22:16:32 ]
- あー
できてから気づいたけど、 ELEMENTを可変にするならprintfでベクトルを出力してるところは もっとちゃんと書けばよかったな カッコとかが汚いと思ったからこんな風に書いたけど
- 316 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 22:20:48 ]
- >>313
まあ時間あるみたいやし ゆっくりやらせてもらうわ 他の人でやったるって人が出てきたら俺にかまわずやってください
- 317 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 22:29:24 ]
- >>314
ありがとうございました ついでに多次元配列をつかったらどんなプログラムができるんですか?
- 318 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 22:31:20 ]
- 見た目がちょっとよくなるだけで
プログラム自体はほとんど変化しないからあんまり気にしない方がいい
- 319 名前:デフォルトの名無しさん [2007/06/26(火) 22:34:25 ]
- [1] 授業単元: C言語
[2] 問題文(含コード&リンク): same.cをファイル入出力対応版に変更しなさい。 same.c →kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4410.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 27日正午まで [5] その他の制限: 特にナシ 実行例 [home@***~/home]% cat filesame.in ABC ABC [home@***~/home]% ./filesame filename: filesame.in [home@***~/home]% cat filesame.out yes [home@***~/home]% よろしくお願いします。
- 320 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 22:55:27 ]
- [1] 授業単元: C言語
[2] 問題文:ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4412.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:bcc32 [3.3] 言語: C [4] 期限: 27日まで [5] その他の制限:再帰法まで習った よろしくお願いします。
- 321 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:22:46 ]
- [1] 授業単元: C言語
[2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4413.txt [3] 環境 [3.1] OS:Windows [3.3] 言語: C [4] 期限: 27日まで よろしくお願いします
- 322 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:45:03 ]
- >>306
おいっ、日本語が読めない在日が何こんなところで日本人の相手をしてんだ? とっとと祖国へ帰れよ。お前みたいな役立たずはここには必要はない。
- 323 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:47:07 ]
- このスレから役立たずを取り除いたら、何が残るんだっていうんだ
- 324 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:48:55 ]
- >>321
キーボードから読み込む方法? それって代入に含まれるんじゃないか? とりあえず ・初期化 int array[] = {0, 1, 2, 3, 4, 5}; 要素数を指定しなくても初期化子の数で勝手に合わせてくれる。 固定的なデータを保持する用途とかが一般的なんじゃないかな。 ・代入 array[0] = 0; 変動的で、同じような系統のデータをまとめて保持するのに使うのが一般的。 ランダムアクセスには強いが、データの追加と削除に弱い。 まぁconstでもつけなきゃ初期化した配列も普通に代入できるから結局あんま差はない希ガス。 こんなんでいいの?
- 325 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:49:38 ]
- >>320
目に付いた(2)だけ #include <stdio.h> double pow_f(double x, int p) { double f; if(p==0) return 1; f = pow_f(x, p-1) * (x-p+1); return f; } int main(void) { double x; int p; scanf("%lf %d",&x ,&p); printf("%.1f",pow_f(x, p)); return 0; }
- 326 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:50:35 ]
- >>323
宿題にスマートに答える役立つ人材
- 327 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:52:59 ]
- 役立たずがいなくなるということは宿題丸投げ自体が無くなるということだから・・・
人がいるのかいないのか分からないままでdat落ちしてしまうね
- 328 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:54:30 ]
- >>327
出題者はスレの維持に役立っていますので 役立たずではありません
- 329 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 23:55:57 ]
- もともとそういう趣旨のスレだしな
- 330 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:02:10 ]
- >>320
全部再起なんか使わなくてもできる 非常に悪い再起の例 再起は必要以上にスタック喰い潰すから使わないで済むなら極力使わないほうがいい って、なんの答えにもなっとらんな
- 331 名前:デフォルトの名無しさん [2007/06/27(水) 00:03:30 ]
- 綺麗なソースを作ろうと思い、セオリーを守ってる(グローバル変数を極力使わないようにしてる・・・etc)が
実に汚いソースになる。 汚いと分かっていながらどこをどの様に修正すれば良いのか皆目検討つかないから困る。 助けて・・・。
- 332 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:08:28 ]
- >>324
ありがとう できればもう少し詳しく説明して欲しいです
- 333 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:17:42 ]
- >>331
広域変数は悪じゃない staticで外部モジュールから参照できないようにするとか きっちり管理さえすれば忌み嫌うものではない むしろ広域変数を無理に避けようとして余計マズい設計になることの方が、本来避けるべき >>332 これ以上詳しく説明しろといわれてもな Cで使ってる以上は、constにさえ気をつければ初期化も代入もそんな大層な差はない C++だとまた話が変わってくるんだけど 具体例見るのが一番手っ取り早いから、いろいろ調べてみ
- 334 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:18:49 ]
- >>308 1と2をとりあえず先に
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4414.c kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4415.c
- 335 名前:332 mailto:sage [2007/06/27(水) 00:26:28 ]
- >>333
わかりました 色々ありがとうございました!
- 336 名前:331 [2007/06/27(水) 00:28:34 ]
- >>333
うん。 今日、指摘された。 staticのスコープは定義された箇所のみが有効範囲だよね? でもアドレス渡ししたらスコープ外の場所でも値を書き換えたり出来る? 多分、出来たとしてもやっちゃ駄目なんだろうけど・・・。
- 337 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:38:00 ]
- どうでもよいが>>331よ。それは宿題の話なのか。
C言語に関する一般的な相談事ならスレ違いだぞよ。
- 338 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:41:11 ]
- >>336
そう、staticは参照の範囲を同一のファイル内だけに限定できる。 そして、指摘の通り int g_data = 0; // 広域変数 int *getGlobal(void) { return &g_data; } みたいなのも、手法としてはある。 利点は、広域変数をモジュールの中に置ける事で、Cでオブジェクト指向もどきな設計ができること。 反面、C++のgetterと違ってポインタを取得できてしまうから、それを通じて外から値を書き換えてしまうこともできる。 でもgotoと一緒で使いどころさえ間違えなければ大丈夫。
- 339 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:52:26 ]
- >>320
再帰で(3) int arr_max_pos(int arr[], int n){return n?arr[n-1]>arr[arr_max_pos(arr,n-1)]?n-1:arr_max_pos(arr,n-1):0;}
- 340 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:57:16 ]
- >>320 (1)
int div_pow(int n,int p){return n%p?0:div_pow(n/p,p)+1;} int div_quo(int n,int p){return n%p?n:div_quo(n/p,p);}
- 341 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 00:59:12 ]
- >>308
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4414.c kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4415.c kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4416.c
- 342 名前:デフォルトの名無しさん [2007/06/27(水) 06:44:44 ]
- 関数内で宣言したstatic変数(下の例ではa__)を自在にいじりたいなら…
下品だけどねw static int a; int hoge(){ static int a__ = 123; a = a__; return(0); } int getglobal(){ a+=10; return(a); } int main(){ hoge(); printf("%d", getglobal()); return(0); }
- 343 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 06:50:26 ]
- 意味分らん
- 344 名前:デフォルトの名無しさん [2007/06/27(水) 07:25:54 ]
- [1] 授業単元:数値計算
[2] 問題文(含コード&リンク): 以下の式のおいて、刻み幅が0.2のときの解析解をオイラー法で求めよ。 y(0)=0 y'(0)=0 y'=z z'=-z-2y+cosx [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc-2.95 [3.3] 言語: C、C++どちらでも良い [4] 期限:6/27 [5] その他の制限: お手上げ状態です。よろしくお願いします。
- 345 名前:デフォルトの名無しさん [2007/06/27(水) 08:43:25 ]
- [1] 授業単元: C言語
[2] 問題文(含コード&リンク): 多次元配列 次の表は今年の全日本大学野球選手権における 早稲田大学の試合結果である。 2回戦 1 2 3 4 5 6 7 8 9 早稲田大 0 0 1 0 1 0 0 0 0 九州国際大 0 0 0 0 0 0 0 0 1 準々決勝 早稲田大 0 5 4 0 0 0 0 0 7 関西国際大 0 0 0 0 3 0 0 0 0 準決勝 創価大 1 0 0 0 0 0 0 0 0 早稲田大 6 0 0 1 0 1 0 2 0 決勝 早稲田大 1 0 0 2 0 0 1 0 0 東海大 0 0 0 0 0 1 0 0 0 それぞれの試合について各回の得点と失点(表裏ではないので注意)を 2×9の2次元配列に格納するものとする。 試合分のデータがあるので、4×2×9の3次元配列scoreを用意して、得失点を配列の宣言と同時に初期値として格納しなさい。 また以下の内容を計算して出力しなさい。 4試合の平均得点と平均失点 各回ごと(1から9回)の4試合の平均得点と平均失点 多次元配列の要素を参照するには‥多重ループを使う [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: visual studio 2005 [3.3] 言語: C [4] 期限:来週まで [5] その他の制限: 特になし お願いします
- 346 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 09:11:52 ]
- クソ簡単やないか
なめとんか
- 347 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 09:15:34 ]
- >>344
y' = z とう条件は不要なんじゃないかと思うが #include <stdio.h> #include <math.h> #define N 100 double f(double y, double z) { return -z - 2.0 * y + cos(y); } int main(void) { double y[N], z[N], dx = 0.2; int i; y[0] = z[0] = 0.0; for (i = 0; i < N; i++) { y[i] = y[0] + i * dx; z[i + 1] = z[i] + dx * f(y[i], z[i]); printf("y = %f, z = %f\n", y[i], z[i]); } return 0; }
- 348 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 09:20:12 ]
- >>347
師匠。
- 349 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 09:23:34 ]
- やべえ
double y[N], z[N], dx = 0.2; を double y[N + 1], z[N + 1], dx = 0.2; に直しておいてくれ。 あとf()のcos(y)は題意ではcos(x)になっているが間違いだよな?
- 350 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 09:24:42 ]
- 問題には cosx ってあるが cos y で宜しいんかな?
- 351 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 09:27:55 ]
- cos x だったとしたら解けん。
- 352 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 10:40:57 ]
- >>319
#include <stdio.h> int mycmp(char *m1 ,char *m2) { while (*m1 != '\0') if(*m1++ != *m2++) return 0; if(*m1 == *m2) return 1; } int main(int argc, char *argv[]) { char m1[256], m2[256]; FILE *fp; fp = fopen(argv[1], "r"); fgets(m1,256,fp); fgets(m2,256,fp); fclose(fp); if(mycmp(m1, m2)) puts("yes"); else puts("no"); return 0; } エラー処理はしてないにょ。動かしてもいないけど、これ以上は自分で。 ちゃんと授業を受けるか、さもなくばIT関連の就職先はあきらめろ。
- 353 名前:デフォルトの名無しさん [2007/06/27(水) 11:36:26 ]
- [1] 授業単元:C言語
[2] 問題文(含コード&リンク): 「在庫問題」 ある倉庫を考える。この倉庫は営業開始時において、毎日Sトンの初期在庫量を有する。1日の注文量rが確率的に発生するとき、営業終了時間の最終在庫量(S>rの場合)、不足量(S<rの場合)とする。 注文量rが正規分布N(100,20^2);すなわち平均100、標準偏差20の正規分布に従う乱数と仮定する。 平均100、標準偏差20の正規分布に従う乱数は以下で求められる。 0以上、1以下の一様実数乱数をUiとする。それを次式に代入することによって、標準正規乱数Xとなる。 X=U1+U2+……U12-6 Xを次式に代入することによってY(標準偏差20の正規分布に従う乱数)となる。 Y=20X+100 維持費:1トンにつき120円(最終在庫量に対して) 品切損失:1トンにつき180円(不足量に対して) 補充経費:1回につき15000円(補充量に依存せず) 総経費:維持費+品切損失+補充経費 (1)補充発注に関して、自分の採用した決定方法を述べよ。 これは、 2日目以降の初期在庫量が毎回200トンになるようにする。 例えば、第一日目の初期在庫量が125トンだから、その日の注文量が100だとすると125−100=25で最終在庫量25トンだから、その日の 補充量は200−25=175で175トン発注するというふうにする。 (2)そのような補充を行い、1000日間の、初期在庫量、最終在庫量、補充量、総経費について、1日あたりの平均値を求めよ。 なお、第一日目の初期在庫量を125トンとする。 [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: borland [3.3] 言語: どちらでも可 [4] 期限: 2007年06月28日12:00まで [5] その他の制限: なし 度々すいませんm(__)m
- 354 名前:デフォルトの名無しさん [2007/06/27(水) 13:07:42 ]
- [1] 授業単元:プロC
[2] 問題文(含コード&リンク): 1.まず、 pwd を実行し、成功すれば、 ls を実行する。 ただし、コマンドライン引数はすべてls にそのまま渡すものとする。 2.オプション -c があれば、 date を実行し、その後、 cal を実行する。 オプションを指定しなければ、 date だけを実行する。 ただし、オプション -z timezone があれば、 環境変数TZの値をtimezoneに設定して、各コマンドを実行する。 3.findコマンドを呼び出して、指定されたディレクトリ (複数可。指定がない場合は、カレントディレクトリ) 以下にあるディレクトリ(指定されたディレクトリ自身も含む)を表示する。 ↓サンプルプログラム pwdを実行し、成功すれば、その後、ls -lを実行するプログラム kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4420.c kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4421.c [3] 環境 [3.1] OS:Vine Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:来週まで [5] その他の制限:なし よろしくお願いします。
- 355 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 13:35:02 ]
- [1] 授業単元:アルゴリズム論
[2] 問題文(含コード&リンク): インサートソートに関する問題 左からつめる方式の昇順アルゴリズムである次のソートプログラムを、右からつめる 降順に書き直せ。 ソートプログラム kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4422.txt inp1.datというファイルには、20個の2桁の整数が入っているものとする。 [3] 環境 [3.1] OS:Windows XP [3.3] 言語:C言語 [4] 期限:6月28日(木)まで お願いします
- 356 名前:バケツ mailto:age [2007/06/27(水) 13:50:59 ]
- [1] 授業単元:C言語演習2
[2] 問題文(含コード&リンク): バケツ法-並び替え(詳細は後述) [3] 環境 [3.1] OS:Linux [3.2] コンパイラ:gcc [3.3] 言語:C [4] 期限: できれば早いほうがいいです。 [5] その他の制限: 特にありません
- 357 名前:バケツ mailto:age [2007/06/27(水) 13:53:03 ]
- aka
ao kuro これら三つのデータをアルファベット順に並び替える。 この場合、akaの後ろには半角スペースが1つあり、 aoの場合は2つあると考えて並び替える。 1 2 3 4 ao ao aka ao aka aka ao aka kuro kuro kuro kuro 優先順位としては スペース>アルファベットです。
- 358 名前:バケツ mailto:age [2007/06/27(水) 13:55:07 ]
- 1は語尾の文字列に焦点を合わせ、
2は前から三番目、3は前から二番目、4は頭文字に焦点を合わせて並び替える。 説明すると、1ではaoはスペース、akaはスペース、kuroはoなので 上記のような順になる。 このようにして最終結果(頭文字の並び替え)がでるまでこの作業を繰り返し、 出力する。 説明不足かもしれませんが、よろしくおねがいします katori nakata murata hanada sakata tanaka を配列の要素として作成してください。 scanfを用いて作成してもらってもかまいません。
- 359 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 14:00:26 ]
- [1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): 次のプログラムをユーザー関数を用いて、階層化せよ。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4423.txt [3] 環境 [3.1] OS:WindowsXP [3.3] 言語:c言語 [4] 期限:6月28日(木) リンク先のプログラムは一つ前の問題を自分で書いたものですが、 コンパイルできることを確認しています。 よろしくお願いします。
- 360 名前:TKO48 [2007/06/27(水) 14:20:23 ]
- ゲーミング
今回からあつかう問題は営業時間から翌日の営業時間の間の補充量を 可変とし、補充量決定方法をけんとうする。 もっとも単純な考え方として@営業終了時の最終在庫量A経費の合計 から翌日の初期在庫量(補充量)を決定 ただし、今回は補充発注1回ごと(補充量によらない)に一定の経費を 支払うものとする 発注する経費は以下のとうりである 維持費:1tにつき120円(最終在庫量にたいして) 品切れ損失:1tにつき180円(不足量にたいして) 補充量:1回につき15.000円(補充量によらない) 課題 注文量が正規分布N(100,20^2);すなわち平均100,標準偏差20 の正規分布に従う乱数と仮定し、毎の補充量を入力することで1000日間 の経過を調べる。 (1)補充発注に関して自分の採用した決定方法を述べよ。 (2)そのような補充を行い、初期在庫量、最終在庫量、補 充量、総経費について、1日あたりの平均値を求めよ。なお、第1日の 初期在庫を125tとする。 お願いします。。。(´・ω・`)
- 361 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 15:03:15 ]
- >>353
#include <stdio.h> #include <stdlib.h> #include <time.h> int xrand() { double i, x = 0; for (i = 1; i <= 12; i++) x += (double)rand() / RAND_MAX; return 20 * (x - 6) + 100; } int main(void) { double fstock_sum = 0, estock_sum = 0, supply_sum = 0, cost_sum = 0; int i, stock = 125, supply; srand(time(0)); for (i = 0; i < 1000; i++) { fstock_sum += stock; stock -= xrand(); cost_sum += (stock > 0 ? 120 : 180) * abs(stock) + 15000; if (stock < 0) stock = 0; estock_sum += stock; supply = (stock > 200 ? 0 : 200 - stock); supply_sum += supply; stock += supply; } printf("平均初期在庫: %g\n", fstock_sum / 1000); printf("平均最終在庫: %g\n", estock_sum / 1000); printf("平均補充量 : %g\n", supply_sum / 1000); printf("平均総経費 : %g\n", cost_sum / 1000); return 0; }
- 362 名前:308 mailto:sage [2007/06/27(水) 16:00:14 ]
- >>341
ありがとうございます。危うく最後の動画のコメントの奴そのままで出しそうでした。
- 363 名前:デフォルトの名無しさん [2007/06/27(水) 16:05:52 ]
- >>353
>>361 ありがとうございます!m(__)m 本当に悪いんですが、補充発注を1日置きごとすることは出来ませんか? すいません… 1日目にしたら、次は3日目、次は5日目というふうに
- 364 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 16:07:05 ]
- >>360
>>353と同じ問題だな。 >>353は(1)について、補充方法を自分で書いている。その場合の解が>>361ね。 君はどうしたいのかな。それも回答者に決めて欲しいの?
- 365 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 16:13:15 ]
- >>363
- int i, stock = 125, supply; + int i, stock = 125, supply, f = 0; ----------------------------------------- estock_sum += stock; + if (!f) { supply = (stock > 200 ? 0 : 200 - stock); supply_sum += supply; stock += supply; + } + f = !f; }
- 366 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 16:25:30 ]
- これの戦略を無駄に考えてみたけど、
一切補充しないという、 ずっと品切れ作戦が実装の楽さの割りに結構いい感じという結論が出た。
- 367 名前:デフォルトの名無しさん [2007/06/27(水) 16:43:31 ]
- >>365
早速ありがとうございます! 助かりました
- 368 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 17:03:56 ]
- >>367
すまん。補充しない日も補充費を計上してたので修正。 >>366のレスで気づいたw kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4426.txt
- 369 名前:デフォルトの名無しさん [2007/06/27(水) 17:12:05 ]
- >>368
ありがとうございます! こちらこそスイマセンでした
- 370 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 17:12:47 ]
- さらにすまん。
- cost_sum += 15000; + if (supply > 0) cost_sum += 15000; 吊ってくる。
- 371 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 17:20:38 ]
- 二分木を表示するプログラムについて教えてください。
なんらかの木を作ったあと、その木へのポインタを引数にして 木を表示したいと思っています。単純にデータだけを、行きがけ順などで 表示するのではなくぱっと見で木とわかるようなものがいいです。 よろしくお願いいたします。
- 372 名前:デフォルトの名無しさん [2007/06/27(水) 17:31:29 ]
- >>370
いえいえ、とんでもないです! 頼んでいるのは私の方なんですから
- 373 名前:デフォルトの名無しさん [2007/06/27(水) 18:45:07 ]
- fmod()を使って10進数を2進数に変えたいんです。C++
なかなかうまくいかなくて
- 374 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 18:58:52 ]
- >>371
graphviz用の入力ファイル(ただのテキスト)を作るのが楽かも ↓みたいな感じで でも、宿題だとそれじゃ不可かな #include <stdio.h> typedef struct node { char *label; struct node *left, *right; } node; void tprint(node *n) { if (!n) return; if (n->left) printf("%s -> %s;\n", n->label, n->left->label); if (n->right) printf("%s -> %s;\n", n->label, n->right->label); tprint(n->left); tprint(n->right); } int main() { struct node tree[] = { { "a", &tree[1], &tree[2] }, { "b", &tree[3], &tree[4] }, { "c", &tree[5], &tree[6] }, { "d", &tree[7], 0 }, { "e", 0, &tree[8] }, { "f", 0, 0 }, { "g", 0, 0 }, { "h", 0, 0 }, { "i", 0, 0 } }; printf("digraph test {\n"); tprint(&tree[0]); printf("}\n"); }
- 375 名前:デフォルトの名無しさん [2007/06/27(水) 19:01:31 ]
- あの・・・
>>354 をお願いできますか?
- 376 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 19:05:51 ]
-
ヾヽ'::::::::::::::::::::::::::'', / 時 .あ ま ヽ ヾゝ:::::::::::::::::::::::::::::{ | 間 .わ だ | ヽ::r----―‐;:::::| | じ て | ィ:f_、 、_,..,ヽrリ .| ゃ る | L|` "' ' " ´bノ | な よ | ', 、,.. ,イ ヽ い う / _ト, ‐;:- / トr-、_ \ な / , __. ィイ´ |:|: ヽ-- '.: 〃 `i,r-- 、_  ̄ ̄ 〃/ '" !:! |:| :、 . .: 〃 i // ` ヽヾ / / |:| ヾ,、` ´// ヽ !:! '、` ! |:| // ヾ==' ' i i' |:| ', | ...:// l / __ , |:|::.. | とニとヾ_-‐' ∨ i l ' l |< 天 ヾ,-、_: : : .ヽ と二ヽ` ヽ、_::{:! l l ! |' 夂__ -'_,ド ヽ、_}-、_:ヽ
- 377 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 19:08:37 ]
- >>373
なんでfmod()使わないといけないの?
- 378 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 20:04:00 ]
- >>359
中途半端になってしまった kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4428.txt
- 379 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 20:07:46 ]
- >>362 >>308
>>341 の3つめのreturn 0; の前に free(mvt); を忘れとった・・・もう見てへんよな・・・まぁ良いっか・・・ 知〜らねっ ^^;
- 380 名前:デフォルトの名無しさん [2007/06/27(水) 20:51:20 ]
- fmod()を使うよう指定されました(泣)
- 381 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 21:13:32 ]
- [1] 授業単元: C言語
[2] 問題文(含コード&リンク): 下記のプログラムで a[3][3] = {{2.4, -3, 6.1}, {-1.1, 2, 3.5}, {0.5, 0, 3.2}} b[3][3] = {{1.9, -4.7, 2.5}, {2, 0.9, 5.4}, {2.7, 0.6, 3.5}} c[3][3] = {{-2, -3.5, 0}, {1.4, 7.3, -1}, {2.1, 0.4, 6.2}} に置き換えたとき、この要素で与えられる行列を求め出力するプログラムを作成せよ。 #include <stdio.h> int main(void) { int i, j, n; double b[3][3] = {{3.2, -1.5, 3.9}, {3.8, 4, -1.8}, {1.9, -3, 0}}; double c[3] = {-5, 2.7, 1.5}; double a[3] = {1, 5.1, 6.2}; n = 3; for (i=0; i<n; i++) { for (j=0; j<n; j++) { a[i] +=b[i][j] * c[j]; } printf("y[%d]=%f\n", i, a[i]); } return 0; } [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Borland [3.3] 言語: C [4] 期限: 6月30日16:30まで すみません、よろしくお願いします。
- 382 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 22:50:20 ]
- >>371 どっかの木構造を解説してるサイトにあったのをパクったやつ
typedef struct tagTree{ int no; struct tagTree *left, *right; }Tree; void PrintTree(Bin *root, int depth) { depth++; if (root != NULL) { int i; PrintTree(root->left, depth); for (i = 0; i < depth; i++) printf(" "); printf("%3d\n", root->no); PrintTree(root->right, depth); } } mainで呼ぶときはdepthを0にすればおk
- 383 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 22:53:56 ]
- [1] 授業単元: C言語
[2] 問題文(含コード&リンク): getchar関数を使用し、コマンドラインからの数字を10回入力し、 入力の中でもっとも大きな数字を表示しなさい。 ※入力桁数のエラーについて対処する事 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: CPAD、LSI C-86 Ver 3.30 [3.3] 言語: C [4] 期限: できれば今週中 すみません、どなたか分かる方、よろしくお願いします。
- 384 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 22:57:07 ]
- >>383
実行例くらい書いてくれ。
- 385 名前:382 mailto:sage [2007/06/27(水) 23:00:19 ]
- >>382
しまった…… typedef struct tagBin{ int no; struct tagBin *left, *right; }Bin; に修正plz
|

|