- 1 名前:デフォルトの名無しさん [2008/02/04(月) 23:32:19 ]
- あなたが解けない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++の宿題を片付けます 103代目 pc11.2ch.net/test/read.cgi/tech/1200318925/
- 369 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 19:32:04 ]
- ここのスレはソースをはってどこがおかしいか
おしえてくれるスレですか? かなりながいソースなんですが。
- 370 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 19:45:43 ]
- >>369
そりゃもう手取り足取り どれだけ長いソースでも宿題であれば片付けるよ それが2ちゃんクロリティ
- 371 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 19:50:06 ]
- ただちょっと専門的な話だから
流れをかいたファイルといろいろこみの tar.gz形式のファイルでうpします あとで。
- 372 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 19:53:24 ]
- >>371
教授から出されたような難解で困難な宿題?
- 373 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 23:14:14 ]
- [1] 授業単元: 認識
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6076.txt [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:月曜日までといいたいところですが [5] その他の制限: おねがいします。わからないことがあれば聞きます。
- 374 名前:373 mailto:sage [2008/02/22(金) 23:20:53 ]
- www12.axfc.net/uploader/18/so/Ne_12654.gz.html
こちらです すいません。
- 375 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 23:24:36 ]
- >>373
件のファイルが既にありません。 しかも、「実行ファイルを実行せよ」というのはかなり怪しいです。 ウィルスなら誰も手を出しません。
- 376 名前:373 mailto:sage [2008/02/22(金) 23:35:20 ]
- //としてるとこは全部消してもらってもかまいません。
あとでみたらログチェックしたままのファイルでした
- 377 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 23:47:07 ]
- 誰もがDVIファイル読める環境にあると思うなよw
せめてPDFくらいは・・・ あと実行ファイルは誰も実行せんがな(´・ω・`)
- 378 名前:373 mailto:sage [2008/02/22(金) 23:50:28 ]
- kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6077.txt
すいません。
- 379 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 23:53:25 ]
- DVIを読むためにいろいろと導入するのが理系の学生だと思うけどなぁ……
でも俺の周りでdvioutとかGhost Scriptとかまで入れてるのは二三人しかいないなぁ…… そもそもTeXすら入れてないってやつが多いし…… Linuxのパッケージ?にはUNIX派生のいろいろが入っているからいいんだろうけど……
- 380 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 00:55:59 ]
- このスレって理系の学生が答えるスレだったっけ?
- 381 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 00:58:44 ]
- >>378
そのファイル読んだけど、やってる処理に関する知識を持ってないから全く分からん その点も説明して貰わんと、分かる人間しか答えられんぞ
- 382 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 01:19:49 ]
- 余計な文消して文消して
コメントをいれるようにしてもう一度うpします。 そっちのほうがわかるとおもうので。
- 383 名前:373 mailto:sage [2008/02/23(土) 13:37:46 ]
- gaiyou.txtと図をいれてみました。pngもしくはjpg形式です。
お願いします。 www12.axfc.net/uploader/18/so/Ne_12711.gz.html
- 384 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 16:16:36 ]
- チェックしてみようかと思ったが、
コンパイルすら通らずにエラーや警告出まくりなんで止めた。
- 385 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 16:21:04 ]
- コンパイルはとおるけど
- 386 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 17:21:51 ]
- >>384
ヘッダファイルをチェックしてみては? Windowsには無くてLinuxにはある、っていうヘッダがたくさん含まれている可能性もある
- 387 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 19:14:26 ]
- tarファイルって書いてあるのにgzなのが気になって仕方が無い
- 388 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 19:27:17 ]
- uploader側で末尾のピリオド以降を拡張子と自動認識されてるんじゃないの
- 389 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 19:52:27 ]
- それにしてもtar.gzファイルとかtgzファイルとか書き方があると思った
- 390 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:02:52 ]
- 宿題がこないね
- 391 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:08:25 ]
- #include <stdio.h>
void main(void) { FILE *kadaip; char buff[256]; int n; printf("文字を入力してください!\n"); printf("(Enterを入力すると終了)\n"); scanf("%c",&n); kadaip = fopen("C:\\kadai.txt","w"); if(kadaip != NULL) { gets(buff); while(buff[0] !='\0') { buff [256]= fprintf(kadaip,"%c\n",n); printf("文字を入力してください!\n"); printf("(Enterを入力すると終了)\n"); scanf("%c",&n); gets(buff); } if(buff < 0) printf("出力エラー!\n"); fclose(kadaip); } else printf("openエラー入力エラー!\n"); } 全然わからなくて、とりあえず作ってみたのがこれです。間違いだらけだと思いますが教えていただけたら嬉しいです。 あと、プログラムの終了条件は文字データの入力がないときです。よろしくお願いいたします。
- 392 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:09:55 ]
- [1] 授業単元:プログラミング
[2] 問題文:キーボードから入力した内容をファイルに保存して表示するプログラムを作りなさい。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: visual stdio [3.3] 言語: C [4] 期限:2月25日まで [5]上のものです。間違って先にプログラムの方を投稿してしまいました。 環境等はこちらです。すみませんでした。
- 393 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:22:40 ]
- >>392
#include <stdio.h> int main(void) { FILE *kadaip; char buff[256]; int n; kadaip = fopen("C:\\kadai.txt","w"); if(kadaip != NULL) { printf("openエラー入力エラー!\n"); return 1; } while(1) { printf("文字を入力してください!"); printf("(Enterのみを入力すると終了)\n"); gets(buff); if(buff[0] =='\0') break; n=fprintf(kadaip,"%s\n",buff); if(n<=0) { printf("出力エラー!\n"); break; } } fclose(kadaip); return 0; }
- 394 名前:393 mailto:sage [2008/02/24(日) 00:01:01 ]
- >>393 が間違ってたので訂正
if(kadaip != NULL) ↓ if(kadaip == NULL)
- 395 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:04:26 ]
- 373ですけど
どうですかね? バグはみつかりましたか?
- 396 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:58:57 ]
- >>394
訂正のとおりに実行してみたら無事にできました。お早い返答ありがとうございました。
- 397 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:54:24 ]
- www.nicovideo.jp/watch/sm2417405
これか
- 398 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 02:00:08 ]
- >>397
どれだよw
- 399 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 02:09:19 ]
- www.akibablog.net/archives/2008/02/hardcore-080221.html
こちらか
- 400 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 13:10:21 ]
- [1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): 巡回セールスマン問題の厳密解を求めるプログラムを作成せよ [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VC 2008 Exp [3.3] 言語: どちらでも可 [4] 期限: 2/25 12:00 ごろ 動的計画法で求めようとしているのですが、最小コストは求まったものの そのルートを求める方法がいまいちわかりません。 dist[a][b] には a -> b の距離が入っています (a->b = b->a) n は巡回頂点数です kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6084.txt
- 401 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 15:13:14 ]
- >>400
ちょっと質問 ソースとか全然みてないでいうんだが、問題文は「厳密解」になってるけど 動的計画法って「近似解」を求める方法じゃない?
- 402 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 15:19:46 ]
- >>401
すまn 漏れの勘違いだったorz
- 403 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 02:00:32 ]
- >>400
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6086.c ・cost のサイズがでかすぎで手元でコンパイル通らなかったので減らした ・n や dist や CITY_NUM の定義が分からなかったので適当に補間した 以後ソースを挙げるなら定義の部分も含めてくれ 実行可能であることが最も望ましい
- 404 名前:403 mailto:sage [2008/02/25(月) 02:01:47 ]
- >>403
>コンパイル通らなかったので減らした これは間違いで、コンパイルは通ったが実行時エラーが出たので減らした
- 405 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 17:53:48 ]
- [1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6089.txt [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2月29日正午ごろまで(できれば28日中) [5] その他の制限: 問題文の例の図がずれて見づらくなっちゃってます。すみません。 ←valueの行で‖と‖の間が空白の場所は数値が入っておらず、演算子に対応してる位置だと思ってください。 また、大分長くなってしまってもいいので、なるべく簡単なプログラムでお願いします。 可能であればでいいので、何を目的とした部分なのか程度の注釈をいくつかつけてくださると助かります。
- 406 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 20:57:34 ]
- [1] プログラミング
[2] 問題文長くなるので下に書くごめんなさい [3] 環境 [3.1] OS: Windows2000 [3.2] すいませんわかりません [3.3]C 言語 [4] 期限: ([2008年2月26日まで] できるだけ早くお願いしたいです。 [5] 制限は特になし 機動及びmain関数(kin_main.c) このプログラミングの実行ファイルの名称は(kintai)のする。起動時に因数として勤怠情報ファイルを引数を与える。 >kintai kin0004 引数なしで機動した場合には、ファイル名を入力するようにメッセージを表示させる。 >kintai >勤怠情報ファイルパスを指定してください。 > このプログラミングのmain関数。初期化処理(kin_init()),勤怠情報記録ファイル読み込み処理(kin_file_read()), 入力情報論理チェック機能(kin_logic_chk()),勤怠計算機能(kin_calc()),標準出力機能(kin_display),CSVファイル生成機能(kin_create_csv()), を順次に呼び出し。各関数の戻り値がエラーの場合にはその時点でmain関数に戻る。プログラムを終了にするにはmain関数 出なければならない。エラー情報はいかに示す。 エラーディファイン 出力情報 意味 ERR_INIT 初期化エラー 初期化関数内でエラー ERR_FILE_ACCESS ファイルアクセスエラー ファイルアクセスに失敗した場合 ERR_LINE_NUM_OVER 勤怠情報ファイル文字数オーバー 勤怠情報ふぁいるの1行分文字数が所定の値を超える場合 ERR_PARSE 勤怠ファイル構文エラー 勤怠情報記録の構文が誤ってる場合 ERR_TIME_LOGIC 論理チェックエラー 入力された勤怠情報に誤りがある場合 NG 内部処理エラー 上記のエラーに該当しない場合。 丸なげでごめん
- 407 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:04:29 ]
- >>406
勤怠情報ファイルのフォーマットもなしどうしろと? 丸なげどころか、情報がたりなすぎる
- 408 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:19:28 ]
- >>407
すまんまだはじめたばっかで フォーマットを検索してもわからん でもこんな感じになるはずなんだ yutori.2ch.net/test/read.cgi/news4vip/1203862807/ の>>4と>>5
- 409 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:24:18 ]
- >>408
見えない なんで検索しないといけないのかも分からんよ
- 410 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:26:18 ]
- >>406
とりあえずツッコミどころが満載だな…… ・CSVファイル生成機能(kin_create_csv())でのエラーは捕まえないの? ・エラーを出すのなら、その逆として「●●の処理は成功しました」と順次表示していくと親切じゃない? ・NG→ERR_internal の方がかっこよくない? ・ERR_TIME_LOGICで、「一ヶ月の勤務日数が32日です」とか 「終業時刻+残業時間が、退勤時刻を超えてる」とかも出したほうが親切じゃない?
- 411 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:32:10 ]
- int main(int argc,char **argv){
int Result=0; if(argc<2){ puts("勤怠情報ファイルのパスを指定してください"); }else{ FILE *pFile=fopen(argv[1],"rb"); if(pFile==NULL){ printf("%s はオープンできないよ\n",argv[1]); }else{ printf("%s をオープンしたよ\n",argv[1]); puts("閉じるよ"); Result=kin_init(); if(Result<0)printf("kin_init()が %d だと言ってる\n",Result); すまんこんな感じになると思うんだ
- 412 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:34:46 ]
- >>410
すごい親切だと思うけどどうやるかさっぱりわからん
- 413 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:36:34 ]
- 最初のif else 文からしてあやしい。
fopenを二回やることになるぞ ・引数ありで起動した場合 ・引数なしで、ファイルパスを指定(入力?)する場合
- 414 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:47:15 ]
- >>411のは昨日やってもらったやつなんだ
引数与えないと起動しないようにするらしい kintai kin0004.txtをつけるなければきどうしないようにする 0004は日付が入るyymmでyyが西暦の下二桁mmが該当月 .txt入らないと起動しないようにするみたいなです
- 415 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:53:12 ]
- >>414
「ファイル構文」という用語を持ち出すほどだから、 勤怠情報のファイルフォーマットはxmlくらいのものだと思った CSV出力があるのなら、最初からCSV形式で勤怠情報のファイルフォーマットを策定すればいいんじゃない? 古い諺だが データ構造+アルゴリズム=プログラミング と言うし。
- 416 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:58:06 ]
- >>415
ありがと でも初心者の俺にはさっぱり意味がわからん
- 417 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 22:15:29 ]
- もしかして勤怠情報ファイルのフォーマットは決まってないのか?
- 418 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 22:32:40 ]
- 正直フォーマットって言葉がでてこないから決まってないです。
問題文にkintai kin0004.txtだった 。.txtぬけてたすまん
- 419 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 23:22:08 ]
- 週末、勢い込んでカレー作った。
たまねぎ炒めるところから始めて、 かなり気合入れて作った。 たまねぎの量、土日あわせて6玉。 うまかった。 でも今日の屁が死ぬほどくさい。
- 420 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 23:27:19 ]
- 余ったタマネギは犬猫に食べさせちゃだめだよ!!!
でも実験という名目ならいいのかな??
- 421 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 23:33:19 ]
- だるいから嫌
- 422 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 23:33:53 ]
- だるいから嫌
- 423 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 23:35:56 ]
- だるいから嫌
- 424 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 00:03:54 ]
- だるいから嫌
- 425 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 02:25:49 ]
- >>405
多少問題文とやり方が違うし、あんま自信ないけど、一応できたのでうp kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6091.txt
- 426 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 04:07:54 ]
- だるいから嫌
- 427 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 07:14:34 ]
- >>425
乙です ありがとう
- 428 名前:デフォルトの名無しさん [2008/02/26(火) 11:45:04 ]
- [1] 授業単元: C
[2] 問題文(含コード&リンク): 3次元配列を用いたカレンダー生成プログラム 任意の西暦年数nを与えて、n年のカレンダーを下記の仕様により、作成せよ。 1)3次元配列day[12][6][7]を使用する。 2)出力形式は 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 とする。 3)うるう年にも対応させる。 [3] 環境 [3.1] OS:MacOSX 10.5 [3.2] コンパイラ名とバージョン:gcc 4.0.1 [3.3] 言語:Cでお願いします。 [4] 期限:2/27に提出です。 [5] その他の制限:特にありません。できれば、配列に組み込む部分と出力部分には関数を使ってほしいです。 日を配列に組み込むところで、つまってしまい、どうにもならなくなってしまいました。 最終的には理解できるようにしたいので、簡単なコメントなどつけてくれると嬉しいです。 急ぎで申し訳ありませんが、よろしくお願いしますm(_ _)m
- 429 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 12:11:46 ]
- わざわざ配列に入れる必要なんてないと思うけど
- 430 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 12:32:22 ]
- [1] 授業単元: C++
[2] 問題文(含コード&リンク): 個人課題 )IDカードを読み込んだら、その番号を"IDList.txt"に出力せよ。 buf[]にはそれぞれ二桁の16進数が入ってるのですが、それを繋げて、 strとしました。このstrに入った値を"IDList.txt"に書き込んでいきたいのです。 略) sprintf(str, "%02x%02x%02x%02x%02x\n", buf[0], buf[1], buf[2], buf[3], buf[4]); これ以降をよろしくお願いします。 ※カードを読み込むたびにstrは変わります。 [3] 環境 [3.1] OS:XP [3.2] コンパイラ名とバージョン:VS2005pro [3.3] 言語:C++ [4] 期限:特になし [5] その他の制限:特になし ド素人な課題で申し訳ないのですがよろしくお願いします。
- 431 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 13:21:29 ]
- >>430
それ本当にC++の授業なのか? C++の特色のひとつは、Cから格段に進化した文字列操作だぞ
- 432 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 13:31:08 ]
- >>430
つーかそれ、FILE * fp = fopen("IDList.txt", "w")してsprintf(str, ...)をfprintf(fp, ...)にすればいいだけじゃん。
- 433 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 13:55:13 ]
- >>431
C++の授業ではないのですが、C言語の授業の延長の授業で、 環境がC++だったんでそのように書きました、申し訳ありません。 確かにやっていることは++は含んで無いのだと思います。 >>432 ありがとうございます。 "a"にしたら望んでいた物になりました。
- 434 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 16:43:10 ]
- [1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6092.txt [3] 環境 [3.1] OS: Linux /Windows [3.2] コンパイラ名とバージョン: (Linux)gcc /(Windows)コマンドプロンプト上でコンパイル [3.3] 言語: C [4] 期限: 2月28日中 [5] その他の制限:長いプログラムになっても構いませんので簡単めなプログラムでお願いします。 設問1と設問3は自分で考えて辿り着いた答を書いてます。違っていたら指摘お願いします。 問2のコメント以下は実際に実行時間を計測して考察しろ的なものだと思うのですが、 どうやればいいのかいまいち分からないため簡単にでいいのでどうやればいいのか教えてください。
- 435 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 18:53:38 ]
- >>434
これ問題文そのまま「コピペ」してるか?
- 436 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 18:59:02 ]
- >>434
設問2 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6093.c 設問3 NULL: 「これ以上前の文字が存在しない」はOK、「次の文字に移る」は、違う DEL: 「これ以上後の文字が存在しない」はOK、「全文字の並べ替え終了」は、違う s1 スタックには下→上に、文字が小→大で積まれる s2 スタックには下→上に、文字が大→小で積まれる ので、s1,s2のスタックに有効な文字データが無い状態をチェックするために使用している(番兵) つまり、2.aの処理の場合にNULL文字がなければ、 s1スタックにデータが無いという状態をチェックする文( if (s1が空) { ... } のような文 ) が必要になるが、 番兵(NULL文字)を用いることにより、その必要がなくなる (番兵については、wikiでもみてね)
- 437 名前:400 mailto:sage [2008/02/26(火) 20:51:48 ]
- >>403
ありがとうございます。 説明不足で余計なお手数をおかけしてしまい申し訳ありません。 確かに、double では静的確保に成功する配列サイズなのに、 int で同じ添え字の配列を確保しようとすると確かにクラッシュするようです。不思議ですね。 その点は malloc で動的確保することで無事に動作しました。
- 438 名前:438 mailto:sage [2008/02/26(火) 21:23:50 ]
- >>428 行数制限のため入出力は関数にしなかったが。
#include<stdio.h> int day[12][6][7]; int z(int y,int m,int d){ if(m<3)y--,m+=12; return(y+y/4-y/100+y/400+(m*13+8)/5+d)%7; } int main(void){ int y,s,m,w,d; while(1){ printf("y="); scanf("%d",&y); //格納 for(m=0;m<12;m++) for(w=0;w<6;w++) for(d=0;d<7;d++){ day[m][w][d]=w*7+d+1-z(y,m+1,1); if(day[m][w][d]<1||day[m][w][d]>(z(y,m+2,1)-z(y,m+1,1)+7)%7+28) day[m][w][d]=0; } //表示 for(s=0;s<3;s++) for(w=0;w<6;w++,printf("\n")) for(m=0;m<4;m++,printf(" ")) for(d=0;d<7;d++) if(day[s*4+m][w][d]>0) printf("%2d",day[s*4+m][w][d]); else printf(" "); } return 0; }
- 439 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 00:11:44 ]
- [1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): 文字頻度と文字の連接頻度をカウントするプログラムを作成せよ。 尚、入力ファイルにhamlet3-1をWebからダウンロードして使い、tsv形式で結果を出力せよ。($./a.out hamlet3-1.txt > hamlet.tsv としてプログラムを実行) ‐処理 ・入力ファイルを「読み込みモード」でオープンする ・ファイルの銭湯から1文字ずつ読み込みながら小文字にそろえて、'a'〜'z'の範囲にある場合は以下の処理を行う。 @'a'〜'z'の各文字g亜出現する頻度を計数する。 A連続する2文字の連接頻度をa-a,a-b,...z-zまで計数する。 途中にスペース、改行などアルファベットが入った場合は連接していないとする。 ・計数結果を標準出力に出力 hamlet3-1 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6095.txt [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限: 2008/02/27 23;59迄 [5] その他の制限:特にありません。 よろしくお願いします。
- 440 名前:デフォルトの名無しさん [2008/02/27(水) 00:17:52 ]
- [1] 授業単元:プログラミング演習
[2] 問題文: 空気中でつるされている銅球の温度変化は以下の式で求まる。 Cp・ρ((πd^3)/6)dT/dt=-πd^2((λ/d)Nu)(T-Tair) 周辺空気の温度Tair=300K、流速3m/sのときの銅球の温度変化を計算しなさい。 なお、t=0sで銅球の初期温度はT0=700K、銅球の温度分布は無視し、各物性値は500Kで計算のこと。 (Cp=1.03kJ/kgK、ρ=8813kg/m^3、λ=39.71×10^3W/mK、Nu=11.04) [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: [3.3] 言語:C++ [4] 期限: 2008年2月27日15:00 [5] その他の制限:使用したアルゴリズムは全て関数化する。 ルンゲクッタ法を使用 どうしてもわからないのですみませんがお願いします。
- 441 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 00:26:00 ]
- >>440
微分方程式を解くのか?
- 442 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 00:32:01 ]
- >>441
そうなんだと思います。
- 443 名前:デフォルトの名無しさん [2008/02/27(水) 01:23:12 ]
- [1] 授業単元:情報処理
[2] 問題文(含コード&リンク): [3] 環境 [3.1] OS: Windows [3.2]コンパイラ名とバージョン: [3.3] 言語: C [4] 期限: 2008年2月27日 12:00 2つの文字列A,Bに入力し、、 それぞれの文字列の先頭から順に一文字づつ抜き出し、 交互に出力するプログラムを作成しなさい。 Str関数を使用しない 例: 文字列Aにabcd 文字列Bに123456 と入力すると 出力結果 a1b2c3d456 が出力されるようにする。 よろしくおねがいします
- 444 名前:デフォルトの名無しさん [2008/02/27(水) 01:29:42 ]
- >>439
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6096.txt
- 445 名前:デフォルトの名無しさん [2008/02/27(水) 01:31:44 ]
- >>444は間違い。
- 446 名前:デフォルトの名無しさん [2008/02/27(水) 01:38:15 ]
- >>439
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6097.txt こっちが正しい。
- 447 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 01:44:13 ]
- >>443
#include <stdio.h> int main(void) { char bufA[32], bufB[32]; int i=0; printf("文字列Aの入力:"); fgets(bufA, sizeof(bufA), stdin); printf("文字列Bの入力:"); fgets(bufB, sizeof(bufB), stdin); while(bufA[i] != '\n' && bufB[i] != '\n') { putchar(bufA[i]); putchar(bufB[i]); i++; } if(bufA[i] != '\n') puts(bufA+i); if(bufB[i] != '\n') puts(bufB+i); return 0; }
- 448 名前:デフォルトの名無しさん [2008/02/27(水) 01:46:34 ]
- Str関数ってなんだろう。Str関数を作れって意味ではなさそうだし。
str〜関数を使えってことかな?
- 449 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 02:15:44 ]
- >>439
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6098.c >>444-446 連接の解釈が違うきがする
- 450 名前:デフォルトの名無しさん [2008/02/27(水) 02:22:55 ]
- >>449
ああああああ!!! そうか、そういうことか。
- 451 名前:443 [2008/02/27(水) 02:27:24 ]
- >>447
すみません、書き忘れてましたorz 配列でなくポインタででした・・ >>448 strのとこはstrcpyとか使わないでということです。
- 452 名前:!= 447 [2008/02/27(水) 02:48:15 ]
- >>451
bufA[i]←こういうのがあってはいけないってことかな? ならば、 #include <stdio.h> #include <stdlib.h> int main(void) { char *bufA, *bufB; int i=0; bufA=malloc(32); bufB=malloc(32); printf("文字列Aの入力:"); fgets(bufA, 32, stdin); printf("文字列Bの入力:"); fgets(bufB, 32, stdin); while(*(bufA+i) != '\n' && *(bufB+i) != '\n') { putchar(*(bufA+i)); putchar(*(bufB+i)); i++; } if(*(bufA+i) != '\n') puts(bufA+i); if(*(bufB+i) != '\n') puts(bufB+i); free(bufA); free(bufB); return 0; }
- 453 名前:440 [2008/02/27(水) 04:50:45 ]
- 微分方程式は手計算で解いてみたんですがソースを作ってみても解が出てきません…
どうすればいいかもまったくわからないです… どのような解法でもいいのでどなたか本当にお願いします。
- 454 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 10:02:02 ]
- >>440
この温度変化の微分方程式の本質は dT(t)/dt = a * T(t) + b という形になるはず。 この解は、微分しても同じ形の関数T(t)が出てくるので、 T(t) = c * e^t のように、指数関数になる、っていうのまではいいのか?
- 455 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 10:15:33 ]
- >>454
それはよくないんじゃないか?
- 456 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 10:18:02 ]
- >>453 ルンゲクッタ法を調べる
- 457 名前:440 [2008/02/27(水) 10:58:22 ]
- >>454
そこまではわかったんですが…どのようにソースを作ればいいのかがわからないです。 ルンゲクッタ法を用いてやってみているんですが解が求まりません…
- 458 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 11:01:17 ]
- >>446,449
ありがとうございます!
- 459 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 11:02:55 ]
- >>457
ある程度できてるならソース張って添削してもらった方が早いと思うぞ。
- 460 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 11:45:16 ]
- >>440
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6100.cpp
- 461 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 11:47:16 ]
- >>454
T(t) = c e^t だったら温度が指数関数的に吹っ飛ぶことになるが
- 462 名前:440 [2008/02/27(水) 12:43:05 ]
- 以下が自分で作成したソースです。
曖昧なところが多々あってすいません。 double Onndo(double t0, double T0, double h,double k) { int i; int x,y,k1,k2,k3,k4,h2; double K ; /* 解法で得られた値を格納する変数 */ x=t0;y=T0; h2=h/2.; for(i=0;i<=y;i++){ k1=f(x,y,k); k2=f(x+h2,y+h2*k1,k); k3=f(x+h2,y+h2*k2,k); k4=f(x+h,y+h*k3,k); x=t0+(double)i*h; y+=(k1+2.*k2+2.*k3+k4)*h/6.; } K=x; return K; }
- 463 名前:440 [2008/02/27(水) 12:44:34 ]
- >>462
*---- 関数f(x,y)の設定 ----*/ double f(double x, double y,double k) { double f; f=k*(y-300)*x; return f; } /*----- 解の設定 -----*/ double Ans_f(double y,double x,double k) { return exp(-k*x); } k=(-6*ramu*Nu)/(Cp*ro*d*d);として計算しています。
- 464 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 14:31:19 ]
- [1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6101.txt [3] 環境 [3.1] OS: (Windows/Linux/等々) Linux [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc [3.3] 言語: (C/C++/どちらでも可 のいずれか) C [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 28日24:00まで [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) まだ講義ではそこまで深くプログラミングを学んでいないため、if文for文など簡単な文を多めに使う感じにしてください。 プログラムでなく考察を要求してるところを横棒で区切りました。 そちらの方にも軽くヒントなどいただきたいです。
- 465 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 15:53:39 ]
- >>440
Cp……銅の比熱(500K) ρ……銅の密度(500K) d……??? λ……熱伝達係数 Nu……ヌッセルト数 流速3m/s はどこで使うの? d は何? πd^2((λ/d)Nu) の部分は πdλNu と約分できそうだけど、ホントにこのままでいいの? それともd^2ってのは二階微分を表してるの?
- 466 名前:465 mailto:sage [2008/02/27(水) 16:39:07 ]
- >>440
そもそも、その銅球の半径は? それがd?
- 467 名前:デフォルトの名無しさん [2008/02/27(水) 22:56:46 ]
- [1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): コマンド ライン引数に指定されたファイルすべてに対して、 改行文字以外の各行を、 逆さまにして表示するプログラムを書いてください。 なお、対象のファイルには英数字などの半角文字のデータのみが入っているものとし、 漢字などの全角文字は含まれていないものとします。 [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン: [3.3] 言語:C [4] 期限: 2008年2月28日 11:00 [5] その他の制限: 1.文字列の最後の文字から先頭に向かって、順に 1 文字ずつ表示 (ただし、文字列の最後の文字が改行文字の場合、その次から始める) 2. 1 で改行文字があったならば、改行文字を表示 だれかよろしくお願いします
- 468 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 00:26:20 ]
- // >>467
#include <stdio.h> #include <string.h> static void flip(char * str) { char * tail = strchr(str, '\n'); if (tail == NULL) tail = strchr(str, '\0'); for (--tail; str < tail; ++str, --tail) { char foo = * str; * str = * tail; * tail = foo; } } static void flipCat(const char * fileName) { FILE * fp = fopen(fileName, "r"); char buf[1000]; while (fgets(buf, sizeof(buf), fp) != NULL) { flip(buf); fputs(buf, stdout); } fclose(fp); } int main(int argc, char ** argv) { for (int ic = 1; ic < argc; ++ic) { flipCat(argv[ic]); } return 0; }
- 469 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 00:43:38 ]
- >>464
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6103.txt こんな感じかな? 再帰関数を使っているのであんまりサイズが大きい配列だとプログラムが異常終了するかも あと時間の計測方法は知らん 適当にmain関数を使っていじってみて
|

|