1 名前:デフォルトの名無しさん [2010/01/18(月) 23:25:55 BE:265079647-S★(508111)] あなたが解けない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++の宿題片付けます 133代目 pc12.2ch.net/test/read.cgi/tech/1260532772/
445 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 18:28:27 ] 自分用のメモ >>317
446 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 18:47:37 ] >>420 ,440,441,442,444 簡単、簡単、 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10485.c
447 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 19:25:39 ] >>420 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10486.c tp://www.geocities.co.jp/SiliconValley-Bay/4543/Rubic/Mathematics/Mathematics-2.html
448 名前:434 mailto:sage [2010/02/03(水) 19:33:42 ] DB板で相談したところすんなりとコードを 書いて頂けました。 もちろん許可をとってないのでお見せする わけにはいかないのですが合計250行にも なる立派なコードでした。
449 名前:デフォルトの名無しさん [2010/02/03(水) 19:43:01 ] >>446 ご回答ありがとうございます。 試してみたんですが、コンパイルはうまくいきましたが何も表示されませんでした。 何か打ち込まなくては、いけないのですか? 質問ばっかですいません。。。
450 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 19:54:22 ] >>448 「立派なコード」を「すんなり」ですか
451 名前:yui ◆zuLLaJzEzk mailto:sage [2010/02/03(水) 20:26:20 ] [1] 授業単元:情報処理入門 [2] 問題文(含コード&リンク): rep1.ppmとrep2.ppmの2つの画像を加算するプログラムを作成せよ. プログラム中で加算したデータは,コントラスト強調を行った上で PPM画像ファイル(h12r.ppm)として保存するようにすること. Cのソースファイルh12r.cおよび実行することにより作成 される画像ファイルを提出すること.rep1.ppmとrep2.ppmの サイズはいずれも横124×縦124画素である.h12r.ppmのサイズも同じとする. rep1.ppm kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10487.zip rep2.ppm kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10488.zip [3] 環境 [3.1] OS: (Windows/Linux/等々) Linux [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc 3.4 [3.3] 言語: (C/C++/どちらでも可 のいずれか) Cでおねがいします。 [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 提出期限2010年2月8日 [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) 特にありません。 前回は皆さんに本当にお世話になりました。あらためてお礼を言いたいです。本当にありがとうございました。 今回が最終レポートになるのですがどうか助けていただけないでしょうか? よろしくお願い致します。
452 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 21:15:14 ] >>451 #include <stdio.h> #define W 124 #define H 124 int main(){ double d,cl = -10.0; unsigned char data1[H*W*3],data2[H*W*3],data3[H*W*3]; char buff[128]; FILE *fin1,*fin2,*fout; int i; if((fin1=fopen("rep1.ppm","rb"))==NULL)goto EXIT; if((fin2=fopen("rep2.ppm","rb"))==NULL)goto EXIT; if((fout=fopen("h12r.ppm","wb"))==NULL)goto EXIT; for(i=0;i<3;i++)fgets(buff,128,fin1); for(i=0;i<3;i++)fgets(buff,126,fin2); fread(data1,1,sizeof(data1),fin1); fread(data2,1,sizeof(data2),fin2); for(i=0;i<H*W*3;i++){ d=data1[i]+data2[i]; d=d+cl*(d-127.5); if(d>255)data3[i]=255; else if(d<0)data3[i]=0; else data3[i]=(unsigned char)d; } fprintf(fout,"P6\n124 124\n255\n"); fwrite(data3,1,H*W*3,fout); EXIT: if(fin1)fclose(fin1); if(fin2)fclose(fin2); if(fout)fclose(fout); return 0; }
453 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 21:25:30 ] >>447 ひえーこの場合はこれで正解なのか 偶然だな
454 名前:デフォルトの名無しさん [2010/02/03(水) 22:51:55 ] >>447 ご回答ありがとうございます。 その処理を 00000 00000 11111 00000 00000 でしたいんですが、どうしたらいいですか?
455 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 23:31:12 ] [1] 授業単元: アルゴリズム [2] 問題文(含コード&リンク):課題2−2と2−3です。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: C [4] 期限: [2010年02月07日23:59まで] [5] その他の制限: よろしくお願いします。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10490.zip
456 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 23:59:33 ] [1] 授業単元: データ演習 [2] 問題文(含コード&リンク): [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: C言語 [4] 期限: [2010年02月08日20:00まで] [5] その他の制限: 努力はするも此方も断念 何方か宜しくお願い致す。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10491.zip
457 名前:447 mailto:sage [2010/02/04(木) 01:19:54 ] >>454 // 入力 for(i=0; i<MAX; ++i) for(j=0; j<MAX; ++j) a[i][j] = (i==MAX/2)?1:0;
458 名前:デフォルトの名無しさん [2010/02/04(木) 01:28:05 ] >>457 ありがとうございます。 ちゃんと表示されました。
459 名前:デフォルトの名無しさん [2010/02/04(木) 01:35:10 ] [1] 授業単元:プログラミング実践 [2] 問題文 アフィン変換のプログラムを作成し、下の図の真ん中を座標の中心にして60°回転した結果を出力せよ。 (図)affin.txt 000000000 000010000 000010000 000010000 011111110 000010000 000010000 000010000 000000000 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名: gcc [3.3] 言語:C++ [4] 期限:2010年2月5日まで [5] その他の制限:特にありません 420のものです。 度々申し訳ありませんが、よろしくお願いします。
460 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 02:03:01 ] >>459 ・問題文は、出題されたまま全文を書いてください。 もしそのまま出題されているとするなら糞問題です 添削スレで晒しちゃいましょう
461 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 02:29:39 ] 良問自作テキスト:熱心な先生だ 悪問自作テキスト:着服しただろこいつ
462 名前:447 mailto:sage [2010/02/04(木) 02:45:18 ] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10492.c 数学なら左回転でいいのでした。
463 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 03:51:41 ] >459 アンチエイリアシング
464 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 05:56:57 ] >>460 なぜ糞問題と思ったのでしょうか、そこをひとつ。
465 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 07:29:06 ] [2] CIP法での1次元の移流計算 [3] 環境 [3.1] OS:Vista [3.2] コンパイラ名:Microsoft Visual Studio 2008 [3.3] 言語:C++ 自分で以下のプログラムを作ったところ。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10493.txt tの値を増やすにつれてf[n][t]のnの初期のほうの値がなぜかでかい数字が出てしまいます。 自分の計算ではtの値を増やせば、f[n][t]のnの初期のほうの値は0になると思うんですが、一体どこが悪いのか、ご教授をお願いいたします。
466 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 08:26:07 ] >>459 これでいいのかな? kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10494.c
467 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 08:40:53 ] >>466 オレなら if(x>=-4 && x<=4 && y>=-4 && y<=4) mat2[i][j] = mat1[4 + x][4 + y]; こうするな はみ出たらカット
468 名前:447 mailto:sage [2010/02/04(木) 12:23:47 ] >>462 間違い sqrt(3)/2 だった。 x = i - MAX/2; y = j - MAX/2; m = x/2.0 - y*SQRT3/2; n = x*SQRT3/2 + y/2.0; x = m + MAX/2; y = n + MAX/2; if(x<0 || x>=MAX) continue; if(y<0 || y>=MAX) continue; // 左回転 if(b[x][y]==0) b[x][y] = a[i][j];
469 名前:デフォルトの名無しさん [2010/02/04(木) 20:21:37 ] >>462 >>466 ありがとうございました。 手つかずだったので、ほんと助かりました。。
470 名前:466 mailto:sage [2010/02/05(金) 16:32:53 ] 要素の計算方法が逆だったのかな?と今考えてるけど。 変換先位置から変換元の要素を求めたんだけど、 画像の変換の問題じゃないんだから、逆の方が良かったかな?
471 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 19:17:12 ] >>470 90度回転なら、どちらの方法でも、隙間ができない。 60度回転では、・・・ ってことがポイントになる問題だったのでは? 画像かどうかは関係ないでしょ。
472 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 15:42:11 ] >>455 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10496.c kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10497.c どうぞ。
473 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 16:15:20 ] どなたか406お願い出来ないでしょうか?
474 名前:っっ [2010/02/06(土) 16:26:33 ] このプログラミングの前まではうまくいっているのですが、この部分がうまくいきません。助けてくださいm(_ _)m printf("A/Sの式\n"); for(j=1;j<=12;j++){ a[i][j]/s[j]; printf("%3.1f\n",a[i][j]); }
475 名前:っっ [2010/02/06(土) 16:32:18 ] _. - ._ _ /. -−- \ l `i __ // ヽ } ´ ̄ ´ '´ う |{ /\ ____ j / ( ヽ '.l. ___/ ヽ´ ー-=ニ.¨`7 r ' r──’ `ヽ .ゞ ' ´ '. `丶、 / (´_ ̄ ヽ / | \ \/ ‘ー⊂. \ / , l | |、 ヽ‐-,ヽ  ̄ ̄\ \. / / ! ∧ ||ヽ__| ∨ ` \ \ / / | / ' ||'´ヽ l l. ', オワタ \ \l ' | ,ィ´′ ∨ ハ. | Nヽ. |、 i \ \l. | /|/ / / ', |、ヽ! \ ヽ、. | i ∨ 三三 ハ. ! \ \. /\ | | xィ彡 ・{ l. ∧ / /\ / }'ヽ! "´ ,、_, l |∨ ∨ / / / \ ‘7´ ) .ノ | l { / ',\ 、__,. ' ,/ | / \ / ', ヽ----r ' ´ | | ./ | ー ´ ', ', ヽ | | / 提出期限過ぎてしまった
476 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 19:00:28 ] >474 s/\//\/=/
477 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 20:55:03 ] >>406
478 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 20:56:51 ] >>474 a[i][j]/s[j]; の結果をどうしたいのですか?どこに保存するのですか?
479 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 23:49:03 ] >>475 小学校の国語から始めるべきです C言語はその後で良いでしょう
480 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 01:25:57 ] [2] プログラム 環境 [3.1] OS:Linux [3.2] コンパイラ名:gcc [3.3] 言語:C++ 以下の実行結果はどうなるか #include<stdio.h> #define N10 int main(){ int i,wa=0; for(i=1;i<N;i++){ if((i%2) == 0) continue; wa+=i;} printf("%d\n",wa); return 0;} よろしくお願いします。
481 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 01:31:24 ] >>480 Nが未定義という類のエラーが出るでしょう
482 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 01:40:50 ] >>480 codepad.org/721ieWJG
483 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 03:45:18 ] [1] C言語プログラミング初歩(専門学校) [2] int型の配列変数A[64][32]をB[32][64]に代入する. 次の対応があるようにすること A[0][0] -> A[0][1] -> A[0][31] ->A[1][0] ->....->A[63][31] B[0][0] -> B[0][1]-> B[0][31] -> B[0][32]->....->B[31][63] (上の段と下の段が一致) A[m][n]には値 (m+n) % 31が入っているものとする。 [3] Windows Vista /Visual studio 2008/C言語 [4] 2/15迄 [5] 1月開講です。ポインタはまだ習ってません
484 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 05:03:38 ] >>483 こんな感じ? #include<stdio.h> int main() { static int A[64][32], B[32][64]; int m,n; for(m=0;m<64;m++) for(n=0;n<32;n++) A[m][n]=(m+n)%31; for(m=0;m<32;m++) for(n=0;n<64;n++) B[m][n]=A[2*m+n/32][n%32]; return(0); }
485 名前:冷やかしです mailto:sage [2010/02/07(日) 05:41:31 ] return(0)はかっこ良すぎ(カッコ付け過ぎ) return 0;で十分w てか関数呼び出しと見間違えやすいので付けないほうが吉
486 名前:温めます mailto:sage [2010/02/07(日) 09:35:40 ] int *a = &A[0][0], *b = &B[0][0]; for(m=0;m<32;m++) for(n=0;n<64;n++) *b++ = *a++;
487 名前:前スレ639 mailto:sage [2010/02/07(日) 11:46:40 ] 宿題でなく質問させてもらいます。 pc12.2ch.net/test/read.cgi/tech/1260532772/652 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10348.txt 上のプログラムについて聞きたいのですが このプログラムはfor文を2回まわしているので数列の長さをLとしたとき計算量は2LなのでO(L)と言えるのでしょうか? それと、ソースの下の方にある ? はifの省略記法なのでしょうか? 初心者でよくわからなかったのでお教えください
488 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 12:08:15 ] >>487 O(n^2) 実際に適当な値入れて何回実行されるか考えたらいいと思う。 そういう捉え方もできなくもないが別物。 三項演算子とかでググったらいいと思う。
489 名前:前スレ639 mailto:sage [2010/02/07(日) 12:22:19 ] >>488 このプログラムを作ったくれた作者さんのレスを載せると >数列のn[i]について毎回「n[i]の前後にn[i]よりも大きい数と小さい数があるか」を調べる場合、 >計算量は数列の長さをLとして O(L^2)かかる。 >一方、>>646 のように、n[i]までの最大値と最小値を先に計算してしまうと計算量はO(L)で済む。 と書いてあり、 自分で考えてみてもl-1回計算するfor文が2個あるので2l-2なので、やはりO(L)といえる気もしますが・・・よくわかりません。 ?は条件演算子ですね。分かりました。ありがとうございました。
490 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 12:23:36 ] >>487 >計算量は2LなのでO(L)と言えるのでしょうか? YES。入れ子になってれば積になってO(L^2)だけど、 別々になっているので全体の計算量は多い方(今回は同じ)になる。 ?は "c ? a : b" という三項演算子の一部。詳細はぐぐれば分かる。 基本的にはifとは別物だが、非常に限定された場面では代わりに使うこともできる。
491 名前:488 mailto:sage [2010/02/07(日) 12:30:26 ] 最初の奴はよく見てなかった。
492 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 12:31:17 ] しかも、今度は途中送信スマン
493 名前:前スレ639 mailto:sage [2010/02/07(日) 12:38:12 ] それでは計算量は作者のとおりO(L)ということで正しいのですね? ありがとうございます!勉強になりました!
494 名前:デフォルトの名無しさん [2010/02/07(日) 13:14:34 ] 【質問テンプレ】 [1] 授業単元:C言語入門 [2] 問題文: キーボードから英文を1文字ずつ入力し母音の出現数をカウントする。その数だけアスタリスクを表示する。ただし、入力を終了するときはCtrl+Zを押すものとする。(vowel.c) [3] 環境 [3.1] OS:Windows Vista [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2月8日 [5] その他の制限:特にありません。 よろしくお願いします。
495 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 14:55:13 ] >>494 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10499.c こんな感じでしょうか。
496 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 15:55:53 ] >>495 ありがとうございます! ですがコンパイル出来ませんでした; 制御構造の単元なのですが、While文などを使ってもう少し簡単にしていただくことはできるでしょうか?;
497 名前:495 mailto:sage [2010/02/07(日) 16:46:58 ] >>496 エラーメッセージを全部コピペしてもらえます?
498 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 17:18:05 ] >>497 vowel.c: エラー E2140 vowel.c 31: ここでは宣言はできない(関数 countVowel ) エラー E2141 vowel.c 32: 宣言の構文エラー(関数 countVowel ) エラー E2139 vowel.c 70: 宣言に ; がない(関数 countVowel ) エラー E2134 vowel.c 70: 複合文に } がない(関数 countVowel ) *** 4 errors in Compile *** です。
499 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 17:24:13 ] >>497 すみません。 こちら側のミスでエラではなく警告のみでした。 vowel.c: 警告 W8057 vowel.c 68: パラメータ 'argc' は一度も使用されない(関数 main ) 警告 W8057 vowel.c 68: パラメータ 'argv' は一度も使用されない(関数 main )
500 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 17:35:10 ] >>499 int main (int argc, char* argv[]) を int main () もしくは int main(void) に書き換えてみてください。
501 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 17:58:32 ] >>500 int main()に書き換えたらコンパイル出来ました! for文苦手なので本当に助かりました。 ありがとうございました!!
502 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 18:16:02 ] [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): 入力された2つの文字列str1,str2を比較し、str1にstr2の文字列が含まれている場合に1を、含まれていない場合に-1を返す関数、strcmpを作成せよ。 int strcmp( char *str1, char *str2); ex. str1=”abaabab” , str2=”aab” 1 ex. str1=”abaabab” , str2=”abb” -1 [3] 環境 [3.1] OS:XP [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 出来れば今日中に。急ぎで申し訳ありません。 #include<stdio.h> #include<string.h> #define LENGTH 10 int strcmp(char *sp1,char *sp2); int main(){ char str1[LENGTH+1]; char str2[LENGTH+1]; printf("aとbを使って10文字入力してください。\n"); scanf("%s",str1); printf("aとbを使って2文字入力してください。\n"); scanf("%s",str2); printf(結果) strcmp(&str1[0],&str2[0]); ここまで作ったのですが(中途半端ですみません)関数に行き詰まり、ネットで調べたところ本来のstrcmpの使い方とこの課題で求められているstrcmpの使い方が異なることが分かりどうすればいいのか混乱してしまいました。 この後、関数strcmpを使い、str1とstr2を比較して・・・をどうのようにすれば良いでしょうか?
503 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 19:23:30 ] >>502 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10500.c これでいいかな。 「strcmp」という名前で関数を定義できなかたので、別名をつけています。 > ネットで調べたところ本来のstrcmpの使い方とこの課題で求められている > strcmpの使い方が異なることが分かりどうすればいいのか混乱してしまいました。 その通り。 標準関数のstrcmpは、二つの文字列が一致しているか判定する関数。 課題の出し方が悪いと思う。 (あるいは学生をあえて混乱させようとしているのか・・・)
504 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 19:47:32 ] strstrだよね
505 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 20:54:35 ] strstrでググったら実装がすぐ見つかっちゃうからじゃないの strcmpと被せたのは<string.h>使わせないためとか
506 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 21:00:09 ] それ以前に今日中という期限設定は常識を疑いたいもの
507 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 21:02:59 ] #include<string.h>をはずして関数名strcmpにしてなんとか形になりました。 >>503 さん、本当にありがとうございました。 またこのスレにお世話になってしまうかもしれませんが宜しくお願いします。
508 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 21:20:25 ] 1] 授業単元:プログラミング演習 [2] 問題文:次のプログラムを改造し、定積分の面積を求めるプログラムにせよ [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:無期限 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10501.txt お願いします
509 名前: ◆QZaw55cn4c mailto:sage [2010/02/07(日) 21:49:54 ] >>456 ちょっと皆さんにご意見をお聞きしたいところです。 二分木で番兵(sentinel) をおく意義がわからない、どんなsentinel をおけばいいかわからないのですが、 どうすればいいのでしょうか。 sentinel をおくことで if 文が減らなければならない、と考えているのですが。
510 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 21:50:58 ] ameblo.jp/ruhuraro/image-10357111023-10267569832.html ここで解説出てるよ
511 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 22:02:39 ] >>510 真に受けた俺が悪うございました。
512 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 23:32:58 ] >>509 [1] 授業単元:プログラミングコミュニケーション演習 [2] 問題文:>>456 の正解を皆さんに”必ず”知らせてください。 [3] 環境 [3.1] OS:2ch [3.2] コンパイラ名とバージョン:jd等 [3.3] 言語:無制限 [4] 期限:無期限
513 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 01:34:32 ] >>508 単純な台形則による定積分で、関数F(X)のXY座標を、X座標の小さい順に V[][0], v[][1] に入力と解釈するなら #include <stdio.h> double daikei(double xa, double ya, double xb, double yb){ return(ya+yb)*(xb-xa)/2; } int main(void){ int n; int i; double V[1000][2]; double S,D; scanf("%d",&n); for(i=0;i<n;i++){ scanf("%lf",&V[i][0]); scanf("%lf",&V[i][1]); } S=0.0; for(i=0;i<n-1;i++) S+=daikei(V[i][0],V[i][1],V[i+1][0],V[i+1][1]); printf("\n面積:%f\n",S); return 0; } とか?
514 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 03:11:53 ] >>509 NODE sentinel; NODE *root = &sentinel; 以降、全ての NULL を &sentinel に置き換える。 (malloc の戻り値チェックの NULL はそのまま) 元々 NULL が番兵の役割を果たしていたので、簡単な変更で済む。 NULL が番兵ではないと誤認識させる糞問題でした。
515 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 04:49:23 ] 【質問テンプレ】 [1] 授業単元:C言語 [2] 問題文: input.ppm というPPMフォーマットのファイルを読み込み, ヘッダをつけて縦横をそれぞれ 1/2(面積にして1/4) にして出力するプログラムを書きなさい. input.ppm のサイズは 410x307 である. [3] 環境 [3.1] OS:Windows Vista [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2/8 よろしくお願いします。
516 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 07:56:54 ] >515 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10502.zip
517 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 09:07:12 ] >>516 丁寧にありがとうございます ですが難しくてよく分からないです たぶんもっとシンプルで(いい加減で)良い課題なので、それを参考にもう少し頑張ります
518 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 12:09:37 ] >517 論理ミスしていた diff main.c main.c.bk 75,76c75,76 < rl.x = (x == 0 ? 1 : x*2); < rl.y = (y == 0 ? 1 : y*2); --- > rl.x = x*2; > rl.y = y*2; 縦横1/2の間引きだから、単純に縮小先の画素から見た縮小元の2x2の画素の平均値を新しい画素値にすればいいけど、 1/2の線形補間はになるためあまりきれいに縮小できない 以下疑似コード x, yは、整数, imageは元画像, new_imageは縮小画像を表す array(u, v)は、imageの縦u, 横vの値を表す height, widthは、それぞれ元画像の縦幅と横幅を表す for y in 0 <= y < height/2 for x in 0 <= x < width/2 new_value <- image(y*2, x*2) + image(y*2, x*2+1) + image(y*2+1, x*2) + image(y*2+1, x*2+1) new_value <- new_value / 4 new_image(y, x) <- new_value end end 実際のコードでは、RGBの値をそれぞれ計算しないといけないけど
519 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 12:15:31 ] >518 diff恥ずかしいなぁ、寝不足はいかんね
520 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 14:01:32 ] >>515-517 mkr_allocate_3d_array()で行のポインタがheightを一つ越えて 初期化されてしまってますね。バグバグバグ。
521 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 17:59:07 ] >>513 台形規則のプログラムではなくて 画像の関数の始点Aから終点Bで囲まれた赤色の面積を求めるような プログラムが欲しいです・・・ www1.axfc.net/uploader/Sc/so/80859 文章の記述不足すみません
522 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 18:02:02 ] 台形近似でも面積を求めることに変わりはないと思うんだが・・・
523 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 18:25:02 ] >>521 それを求める公式の一つが台形則。 希望があるならそれを明記しないと伝わらんぞ。
524 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 18:45:13 ] すみません;; 教科書読んだら台刑則のプログラムで面積を求めることが出来ると書いてありました… あとプログラムについて質問なのですが S+=daikei(V[i][0],V[i][1],V[i+1][0],V[i+1][1]); の部分の+=という演算子はどのような働きがあるのかと コンパイルしたあとは始点(xa,ya)終点(xb,yb)だけを打ち込めばいいのかわかりません そこについてもよろしくお願いします
525 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 18:50:14 ] a+=bはa=a+bと同義
526 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 19:43:34 ] >>524 (1)最初に関数F(x)上の点の数nを入力 (2)F(x)上の点(x,y)を、x座標の小さい順にn回入力。 下図を良〜く見れば、そのうち分かってくるはず upload.wikimedia.org/wikipedia/commons/thumb/4/42/Composite_trapezoidal_rule_illustration.png/180px-Composite_trapezoidal_rule_illustration.png
527 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 23:35:10 ] >520 ありがとうございます 潜在的なバグの原因になり兼ねますね 有効なアドレスを参照しているからメモリチェッカでは検出できていませんでした 修正は簡単だけど、エレガントなコードが浮かばない もう、ppm.c自体の完成度が低すぎて笑える、即席の使いまわしの接ぎ木
528 名前:至急お願いします。 [2010/02/09(火) 03:50:53 ] [1] 授業単元:C言語 [2] 問題文: ガウス分布における数値積分 I=∫f(x)dx,←xmin〜xmax f(x)=1/√(2*π*σ)*exp(a) a=-(x-μ)*(x-μ)/(2*σ*σ) 積分区間は[xmin,xmax]=[myuu-2siguma,myuu+2siguma]として計算すること。なおμ=0,σ=1とした場合、I=0.95449と なるので確認すること。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2/9 正午まで 出来ればすぐにお願いします。
529 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 03:59:06 ] >>528 確認しました。 で提出すりゃいいよ。
530 名前:至急お願いします。 [2010/02/09(火) 04:09:11 ] 追記 528>>関数を使ってください。
531 名前:至急お願いします。 [2010/02/09(火) 04:10:07 ] 529>>どういうことですか?
532 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 04:26:05 ] 計算すること 確認すること 参考書のページ数稼ぎによくあるパターンだな
533 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 05:39:00 ] >>528 多少誤差があるけど #include <stdio.h> #include <math.h> double f(double sigma, double mu, double x) { return 1/sqrt(2*M_PI*sigma) * exp(-(x-mu)*(x-mu)/(2*sigma*sigma)); } int main(int argc, char *argv[]) { int i, n = 10000000; double sigma=1, mu=0; double xmin = mu-2*sigma, xmax=mu+2*sigma; double a = f(sigma, mu, xmin), b; double sum = 0.0; for(i = 0; i < n; i++){ b = f(sigma, mu, xmin+(xmax-xmin)/n*i); sum += (a+b)*(xmax-xmin)/n/2; a = b; } printf("%f\n", sum); return 0; }
534 名前:デフォルトの名無しさん [2010/02/09(火) 07:18:38 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 配列に Institute of Technology という文字列を代入し、ポインタを利用して ・各文字が格納されているアドレス ・そのアドレスに格納されている文字 を表示するプログラムを作成せよ。 [3] 環境 [3.1] OS:windows XP [3.2] コンパイラ名とバージョン:visual studio2008 [3.3] 言語:C [4] 期限:[2010年2月9日まで] [5] その他の制限: お願いします。
535 名前:デフォルトの名無しさん [2010/02/09(火) 07:33:03 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): まず次の内容のテキストファイルを準備せよ。 (メモ帳で作成し、test02.txtという名前で保存すること) abc 123 def 456 ghi 789 jkl 000 次に、作成したテキストファイルから内容を読み出し、 各行の先頭に 01 02 03 というように番号を付加して 画面に出力するプログラムを作成せよ。 [3] 環境 [3.1] OS:windows XP [3.2] コンパイラ名とバージョン:visual studio2008 [3.3] 言語:C [4] 期限:[2010年2月10日まで] [5] その他の制限:
536 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 09:23:35 ] >>534 #include <stdio.h> int main(void) { char *pstr,str[30]="Institute of Technology"; pstr = str; for(;*pstr!='\0';++pstr) printf("%08x: %c\n",&*pstr,*pstr); }
537 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 09:26:13 ] >>535 #include <stdio.h> int main(void){ int i=0; char text[200]; FILE *ifp; ifp = fopen("test02.txt", "r"); if(!ifp) return 1; while(fgets(text,200,ifp) != NULL) printf("%02d %s", ++i, text); fclose(ifp); }
538 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 11:34:00 ] >>535 #include <stdio.h> int main(void){ FILE *f; f=fopen("test02.txt","r"); if(f==NULL) return 0; fclose(f); printf("01abc¥n02123¥n03def¥n04456¥n05ghi¥n06789¥n07jkl¥n08000¥n"); return 0; } センセーが期待した解答とは異なるだろうがよ
539 名前:至急お願いします。 [2010/02/09(火) 14:07:26 ] 534>>ありがとうございます。argvの後はなんてかいてあるのですか?
540 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 14:37:13 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): codepad.org/9ra3PWuv 上のコードが正しく動かないんです・・・ input.txtとして 1 2 3 4 5 の内容を保存して実行ファイルから読み込ませる ./a input.txt [3] 環境 [3.1] OS:ubuntu [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:[出来れば今日中で] [5] その他の制限:
541 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 15:17:43 ] >>540 自分が作ったプログラムを理解出来ていないようだ。(笑) input.txtとして↓を与える。 5 1 2 3 4 5
542 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 15:32:17 ] うわ、そんな安易な間違いでしたか・・・ ずっとプログラム睨んでました。 ありがとうございます。
543 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 16:07:04 ] バカもん。 > ずっとプログラム睨んでました。 プログラム睨んでたら普通気が付くだろ。
544 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 16:32:55 ] コードは鏡、自分自身が見えます。
545 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 16:36:53 ] 自分で書いてないのがバレバレだなw