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/
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関数を使っていじってみて
470 名前:デフォルトの名無しさん [2008/02/28(木) 07:54:50 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):以下の条件を満たしロトのプログラムを作成しなさい。 1 1〜42の中から6つの数字と1つのボーナス数字を選ぶことができます。ただし同じ数字を選ぶことはできません。 2 7つの数字は1次元配列の中になければなりません。 3 1つ1つの問題に対して関数定義を作り1つのプログラムで完成させなさい(関数を使う) 4 すべての関数はポインタを使いなさい。 問1 6つの数字と1つのボーナス数字を選ぶプログラム(エラー表示を含む) 問2 選らんだ数字とボーナス数字を1次元配列で表示しなさい 問3 選んだ数字とボーナス数字を小さい順に並べなさい 問4 ランダムに抽選されるプログラムを作り選んだ数字と比較し、以下の中の1つを表示させなさい Match 6 Jackpot Match 5 + Bonus Almost - just 1 away Match 5 Holidays paid for Match 4 + Bonus Night out Match 4 Full petrol tank Match 3 + Bonus Grub at local takeaway 問5 何回数字を選んだか表示しなさい (例)1はx回選ばれました [3] 環境 [3.1] OS:windowsXP [3.2] コンパイラ名とバージョン: [3.3] 言語:C言語 [4] 期限:2008年3月3日まで [5] その他の制限:ありません 丸投げです。どなたかよろしくおねがいします。
471 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 09:24:35 ] >>470 久々に書くと酷いな kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6104.txt
472 名前:470 [2008/02/28(木) 09:35:36 ] >>470 ほんとうにありがとうございます。 質問なんですが問4のランダム抽選はどのように表示されますか?
473 名前:470 [2008/02/28(木) 09:56:40 ] ↑アンカーミスです。。 >>471 ほんとうにありがとうございます。
474 名前:デフォルトの名無しさん [2008/02/28(木) 10:20:39 ] >>468 ありがとうございます。さっそくやってみたのですが、 test2.c(26) : error C2143: 構文エラー : ';' が '型' の前にありません。 test2.c(26) : error C2143: 構文エラー : ';' が '型' の前にありません。 test2.c(26) : error C2143: 構文エラー : ')' が '型' の前にありません。 test2.c(26) : error C2143: 構文エラー : ';' が '型' の前にありません。 test2.c(26) : error C2065: 'ic' : 定義されていない識別子です。 test2.c(26) : warning C4552: '<' : 演算子にプログラム上の作用がありません。作用 を伴う演算子を使用してください test2.c(26) : error C2059: 構文エラー : ')' test2.c(26) : error C2065: 'ic' : 定義されていない識別子です。 test2.c(26) : error C2143: 構文エラー : ';' が '{' の前にありません。 test2.c(27) : error C2065: 'ic' : 定義されていない識別子です。 と表示されるのですが…
475 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 10:47:43 ] >>474 int ic; for (ic = 1; ic < argc; ++ic) { に変えたら?
476 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 13:38:15 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):キーボードから整数の入力を4回繰り返し,それらの値を2次元配列 A の各要素に順に代入し,その行列のそれぞれの要素と行列式を表示するプログラムを作成せよ. 結果例 1行1列の要素? 6 1行2列の要素? 5 2行1列の要素? 4 2行2列の要素? 3 行列A = 6 5 4 3 行列式 = 2 [3] 環境 [3.1] OS: WinXP [3.2] コンパイラ名とバージョン: VC [3.3] 言語: C++ [4] 期限: 本日夕方6時まで もしよろしければどなたかお願いします。
477 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 13:50:12 ] >>476 #include <stdio.h> int main(void) { int a[2][2],i,j; for(i=0;i<2;i++){ for(j=0;j<2;j++){ printf("%d行%d列の要素? ",i+1,j+1); scanf("%d",&a[i][j]); } } printf("行列A =\n%d %d\n%d %d\n",a[0][0],a[0][1],a[1][0],a[1][1]); printf("行列式 = %d",a[0][0]*a[1][1]-a[0][1]*a[1][0]); return 0; }
478 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 14:10:59 ] >>477 早すぎるお仕事、ありがとうございました
479 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 21:18:18 ] 宿題マダー?
480 名前:デフォルトの名無しさん [2008/02/28(木) 21:29:27 ] では300Mのテキストファイルを速くブロックソートするプログラム作ってくれよ 昨日から作ってるけど速くならない
481 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 00:31:48 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6106.txt [3] 環境 [3.1] OS:linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限: 2008年3月1日 [5] その他の制限:
482 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 00:56:15 ] >>480 どんな環境でどんなデータに対してどれだけ時間がかかるのが遅いって言うんだ? 基準をplz
483 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 01:06:59 ] >>481 #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdlib.h> #define BSIZE 128 int main(int argc, char **argv){ int rfd, rdnum char buf[BSIZE]; if ((rfd = open(argv[1], O_RDONLY)) == -1) { perror(argv[1]);exit(1); } else { printf("ファイルのオープンに成功しました\n"); } while(1){ if ((rdnum=read(rfd,buf,BSIZE))<1) break; printf(" %d\n",rdnum); } close(rfd); return 0; }
484 名前:デフォルトの名無しさん [2008/02/29(金) 01:11:21 ] >>482 全文字列を展開してソートした場合 #include <iostream> #include <string> #include <set> #include <time.h> using namespace std; class gou{ public: string str; int num; gou(string a, int b){str=a; num=b;} bool operator<(const gou& a)const{return str<a.str;}}; main(){ int sz=20000,n; string a(sz,'\0'); for(n=0;n<sz;n++)a[n]=rand()&255; multiset<gou> s; int cl=clock(); for(n=0;n<sz;n++){ s.insert(gou(a,n)); a=a.substr(1)+a[0];} cl=clock()-cl; cout<<"20kのブロックーソート "<<(cl+0.0)/1000<<"sec \n"; }
485 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 01:15:30 ] >>483 トン
486 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 02:33:11 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): 1) 3つの「点」からなる構造体「三角形」を作成しなさい。1つの「三角形」を構成する3つの頂「点」の座標を読み込み、三角形の重心を求めなさい。 2) 「三角形」の重心を計算する関数を作成しなさい。この関数を用いて問題1を行いなさい。 3) 2つの「三角形」の「頂点」の座標を読み込み、どちらの「三角形」の中心点が原点に近いか求めなさい。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Borland C++Compiler Version 2.31 [3.3] 言語:C++ [4] 期限: 2008年2/29日中 [5] その他の制限: なし 切羽詰って依頼します。よろしくお願いします。
487 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 03:54:35 ] >>486 3)は、「中心点が原点に近いか」じゃなくて「重心が原点に近いか」じゃないの?
488 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 07:58:42 ] 重心の求め方がわからない? 各座標のx,yをそれぞれ足して3で割るだけじゃん。
489 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 15:57:25 ] >>486 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6107.txt
490 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 17:06:38 ] >>484 多少は早いんじゃないかと思う。 20kで動かせないからわからないけど #include<stdio.h> #include<stdlib.h> #include<string.h> #include<sys/time.h> #include<math.h> typedef unsigned char byte_t; int srcsize; int comp(const void *p1, const void *p2){ return memcmp(*(byte_t**)p1, *(byte_t**)p2, srcsize); } int main(void){ int n; byte_t *src, *blockarea, *tmp, **blocklst; struct timeval stv={0}, etv={0}; srcsize=20000; src = (byte_t *)calloc(sizeof(byte_t),srcsize); blockarea = (byte_t *)calloc(sizeof(byte_t),(srcsize*srcsize)); blocklst = (byte_t **)calloc(sizeof(byte_t*),srcsize); if(src == NULL || blockarea == NULL || blocklst == NULL){ return 1; } for(n=0;n<srcsize;n++)src[n]=rand()&255; gettimeofday(&stv, NULL); memcpy(blockarea, src, srcsize); blocklst[0] = blockarea; for(n=1,tmp=blockarea+srcsize; n<srcsize; n++, tmp+=srcsize){ memcpy(tmp, src+n, srcsize-n); memcpy(tmp+srcsize-n, src, n); blocklst[n] = tmp; } qsort(blocklst, srcsize, sizeof(byte_t*), comp); gettimeofday(&etv, NULL); fprintf(stderr, "time %g sec\n", (etv.tv_sec-stv.tv_sec)+abs(etv.tv_usec-stv.tv_usec)/1000000.0); return 0; }
491 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 17:30:14 ] >>490 あっ、インデックス保持してやないや メモリの解放もわすれてるし・・・ どうも、ボケてるな
492 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 18:18:41 ] 486です。レス遅くなってしまったがありがとうございました。
493 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 13:33:08 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): <四則演算機の作成> テキストファイルから数式を読み出し、計算結果を別ファイル名で出力する。 数式には、+−*/()を含む。計算結果は整数とし、小数点以下は切り捨てる。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C++ [4] 期限: 2008年3月3日10:00まで [5] その他の制限:逆ポーランド記法に並び替えて計算するという手順で プログラムを作成しなさいとの説明がありました。逆ポーランド記法に 並び替えるプログラムで詰まってしまい先に進めらなくなってしまいました。 丸投げなのですがよろしくおねがいします。
494 名前:デフォルトの名無しさん [2008/03/02(日) 16:00:36 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): <copying-GCをC言語で作成 > 授業で行ったcopying-GCをC言語でせよ。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C言語 [4] 期限: 2008年3月5日00:00まで [5] その他の制限:なし C言語が大の苦手で、今遅れを取り戻そうとしているのですが。 期限が迫り、自分ではやってみるもののまったくわからないのでお願いします。
495 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 16:09:41 ] これはひどいwwwww
496 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 16:17:11 ] おい、だれかエスパーを呼んでくれ
497 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 16:36:47 ] ぎゃぼー俺には解けそうにない
498 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 17:34:48 ] この中に誰か授業に行った奴はいないのか!
499 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 22:22:58 ] >>494 #include "copying-GC.h" #include <stdio.h> int main(void) { char s1[]="copying-"; char s2[]="GC"; printf("%s\n", copygin-GC(s1, s2)); return 0; }
500 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 23:03:31 ] 個人で作成代行してくれるところってある? 雑誌の後ろらへんとか見てみたんだけどなかった、、、かといって会社に頼むとめちゃくちゃ高いし...
501 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 23:11:24 ] それが宿題ならここで丸投げすればいい。 そうでないならそもそもスレ違い。
502 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 23:23:03 ] 宿題だが、難しいから探してる スレ違いということなので、他で探してくる...orz
503 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 23:53:26 ] いや、宿題ならとりあえずテンプレに沿って書いてみれば? 専門知識が必要だと厳しいかも知れんが、参考になりそうなサイトでの添付してくれれば やさしいお兄さんが答えてくれる可能性はグンと上がると思うよ?
504 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 23:55:16 ] >>502 前方後円墳の容積を求める宿題なら。。
505 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 08:26:08 ] >>493 途中までです。仕事から帰ったら完成させます。すんません。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6112.txt
506 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 09:58:24 ] >>493 泥臭い kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6113.txt
507 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 19:16:16 ] >>484 C言語で書いてみたんだが、まだ必要だったらレスplz 参考までに速度比較(速度調べるために遅いマシンで測定した) >>484 のコードで 20000 の時 8.96 sec 書いてみたコード 20000 の時 0.11 sec 書いてみたコード 200000 の時 1.41 sec
508 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 19:19:39 ] >505,506 493です、ありがとうございました。 直前で見ることができなかったのですが、 なんとか明日まで延ばしてもらえたので ありがたくいただきます。