1 名前:デフォルトの名無しさん [2010/11/16(火) 22:14:58 ] あなたが解けない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++の宿題片付けます 142代目 hibari.2ch.net/test/read.cgi/tech/1288531658/
408 名前:388 mailto:sage [2010/11/25(木) 18:09:56 ] >>405 変数名を直して一部加筆 short int y; for( ディレイ時間分ループ ) ←*1 enqueue( 0 ); while(入力ファイルから short 一つを data に読み込む) { ←現行のソースに有る enqueue( data ); y = dequeue() data に y を重み付き加算 ← *2 出力ファイルに data を書き込む ←現行のソースに有る } つまり君が書くべきは *1 と *2 だけなんだけどな ディレイ時間は argv[1] で与えられる delay だ、これがどんな単位で与えられるか又、サンプリングレートが幾らか不明なので 必要なループ回数が判らない 例えば delay の単位がmsecでサンプリングレートが20msec なら必要なループ回数はdelay / 20 という事になる 重みは argv[2] で与えられる weight だ、これも%で与えられるのか小数で与えられるのか判らないけど小数で与えられるなら *2 は data += (short int)( (double)y * weight ); となる >>383 が書いた様に、若い芽を摘み取りたくなかったので抽象的な表現を行ったのだけど伝わらないなら仕方がないだろう
409 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 18:25:20 ] [1] 授業単元: プログラミングおよび演習 [2] 問題文(含コード&リンク): 1.解答例のカレンダー(下にリンクはってます)について、dayofweek()を再帰で書き直せ。 ◦ある月の1日の曜日は、前の月の日数と1日の曜日から計算できる ◦ある年の1月1日の曜日は、前の年の日数と前の年の1月1日の曜日から、あるいは、その年の日数と次の年の1月1日の曜日から計算できる ◦2000年1月1日は土曜日である 2.このプログラムについて、任意の年月についてdayofweek() の呼び出し回数が何回になるかを理論的に考察せよ。また、呼び出し回数を計測し、結果が実際に理論と合致しているかを確認せよ。 2.ヒント:呼出し回数を数えるためにグローバル変数を使用する [3] 環境 [3.1] OS: Windows [3.2] gcc [3.3] C [4][2010年12月1日08:45まで] [5]現在再起を習ったばかりで複雑なものは習っていません。 解答例のカレンダー↓ codepad.org/4rnf6hRf
410 名前:389 mailto:sage [2010/11/25(木) 19:02:18 ] >>405 ファイルのオープンなんかより生ポインタのが千倍危ないんだけどね codepad.org/E3nlvpXW
411 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 19:48:02 ] >>410 元データを weight 分減少させる必要は無いと思うよ
412 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 20:46:57 ] >>409 再帰?謎過ぎる問題だな
413 名前: ◆EkRIf9bJPo [2010/11/25(木) 20:47:26 ] >>375 です。 期限直しました。 [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): ------------------- /*hogehoge*/ int main(){/*ggg*/ printf("xxxxxx"); } int a=c; ------------------- 上記のソース総ステップ数5ステップ、実ステップ数3ステップ、 コメント率40%が求められるステップカウンターを作製せよ。 また、以下の条件を提示する。 1.ディレクトリ単位で読み込めるようにする。 2.Cファイルのみのステップ数を求めるようにする。 [3] 環境 [3.1] OS: UNIX [3.2] コンパイラ名とバージョン: gcc 4.3.4 [3.3] 言語: C [4] 期限: 2010年11月27日9:00 [5] その他の制限: なし
414 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 20:49:02 ] >>408 波形データ a[123]={〜〜〜〜〜〜〜〜〜〜〜}; 波形データ b[123]; 今が、1から123の間、くりかえし { b[今] = a[今] ・ 係数今用 + a[1こ過去] ・ 係数過去用1 + a[2こ過去] ・ 係数過去用2 + a[3こ過去] ・ 係数過去用3 + . . . 今++; } ってやると、できあがる波形データ b が、 もんもんした音になったり、キラキラした音になったり、シャリシャリした音になったり、音質が変わっておもしろい。ってことじゃないかしら? ようするに。 はて? すごい単純だけど、たとえば単純に b[今] = a[今] + a[1こ過去] ってやるだけでも、波形が、こもった感じの音に変化したりして、おもしろいですよね。ふしぎ〜♪
415 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 20:52:33 ] >>414 そう。単に過去のデータを足しこむだけで、いろんな特性を持つ回路(フィルタなど)になるのです。 z 変換またはラプラス変換でググッてくだしゃあ。
416 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 20:59:12 ] >>409 何か汚いけど・・まあいいや codepad.org/ldxwLKBl www5a.biglobe.ne.jp/~accent/kazeno/calendar/1873.htm
417 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 21:00:50 ] >>416 表示直した codepad.org/g9j514Dw
418 名前: ◆EkRIf9bJPo [2010/11/25(木) 21:02:30 ] >>380 大変申し訳ないのですが、読んでもロジックがわからなかったので自分で作りました。 codepad.org/JhtCuYqO www.play21.jp/board/formz.cgi?action=res&resno=43608&page=&lognum=136&id=dixq&rln=44494 上記のサイトを参考にしました。 方法3 コメントを削除したファイルを中間ファイルとして保存し、再度読み込み、行数を数える方法を行いました。 残っている課題が二つあります。 ・ディレクトリ指定してCファイルを求める。 ・コメント率を算出する。 大変、勝手なことだと思いますがこのソースをベースに作製お願いします。
419 名前:409 mailto:sage [2010/11/25(木) 21:15:23 ] >>412 なんかしたに張り付けてあるリンクのものを再起を使用して書き直すみたいです。 もうすこしコンパクトになるとか・・・ 課題2はよくわかりません。 >>416 >>417 すみません。 再起はどこでどういう風に使用したらいいのでしょう?
420 名前:409 mailto:sage [2010/11/25(木) 21:18:32 ] >>409 for のところを再起にやればいいとかなんたら・・・・。
421 名前:416 mailto:sage [2010/11/25(木) 21:36:54 ] >>409 自分の定義に自分と同じ構造を持つ構造は再帰的に定義できる さっきの例なら、ある月の一日の曜日は前の月の一日の曜日で求められる 前の月の一日はそのまた前の一日の曜日で そのまた前も・・・ってな感じでずっと続く ある状況で特殊化すればそこで再帰は終了する さっきのなら2000年の1月で特殊化した
422 名前:416 mailto:sage [2010/11/25(木) 21:42:00 ] >>409 ついでにちょっと整理しといた codepad.org/Q7wmR5Wy
423 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 22:04:51 ] カレンダー(カレンダー)C言語のソースが 2ちゃんのスレに書き込まれるぅ〜♪ カレンダー(カレンダー)過ぎ行く時の中で 俺はソースを書いて彷徨うんだろう♪
424 名前:409 mailto:sage [2010/11/25(木) 22:12:19 ] みなさんありがとうございます。 recurse みたいなコード?は使わないのでしょうか? あと漸か式を考えたりなど・・・ よくわからない質問をしてしまってばっかりですみません><
425 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 22:35:14 ] recurse って再び呪うのか?
426 名前:370 ◆1reJfOTbE. [2010/11/25(木) 22:54:27 ] ご解答いただいている方、本当にありがとうございます。 今日学校でレポートをすこしずつ進めていたのですが、 学校のパソコンや携帯では書き込みができなく、自宅のパソコンでは 環境が整っていなく実験ができないので、今のうちにやることを 把握しておいて明日学校に行ったらレポートを一気にやりたいと思って います。なので、残りやるべきことを把握したいと思います。 課題3−1は、FIR_P.cとqueue.cを作っていただいたのでおkですが、 課題3−1(続)に、queue.c, FIR_P.c, FIR_N.c, IIR_P.c, IIR_N.cを実装せよ とのことですが、これは3−1で作ったので終わりではないということですよね。 それに、FIR_N, IIR_P, IIR_Nという名前は初めて出てきたのですが、 これはFIR_P.cを書き換えてそれぞれの名前で保存しろということでしょうか? プラスMakefileの修正ができれば、課題3−2以降はその作ったプログラムを 使って実行→聞いてみて考察〜などでできると思いますので よろしくお願いします。
427 名前:デフォルトの名無しさん [2010/11/25(木) 23:14:03 ] [1] 授業単元:アルゴリズムとデータ構造 [2] 問題文(含コード&リンク):入力された2分木を中央順で走査するプログラムを 再帰を使わずに書け。 自分で書いたプログラム main.c codepad.org/GafORTG4 STACK1.c codepad.org/9JwtZ1J7 STACK2.c codepad.org/jwPHSuzG Item1.h codepad.org/32bgVncE Item2.h codepad.org/rk12GKcF STACK1.h codepad.org/CI43AnzH STACK2.h codepad.org/XJ1fy5MY 上三つをコンパイルして実行します。 コンパイルは通りますが、実行でsegmentation fault がでてしまいます。 main.cの最後のwhile文のところを修正していただけないでしょうか。 お願いします。 [3] 環境 [3.1] OS: macosX [3.2] gcc [3.3] 言語: C [4] 期限: 明日の午後一時まで。 [5] その他の制限:とくになし。
428 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 23:15:49 ] >>426 FIRが遅延時間前の入力信号を加算するのに対し、IIRは遅延時間前の出力信号を加算するものの様だ ならば、FIRの encueue() するタイミングを加算後に移動させれば IIR になるのではと思う PとNはポジとネガの意味かな?ならばNは重み付け加算を重み付け減算にすれば良いのだろうか?
429 名前: ◆QZaw55cn4c mailto:sage [2010/11/25(木) 23:17:17 ] >>357 >>413 とりあえず動くものをあげときます。 codepad.org/o1GYCrrO
430 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 23:29:39 ] >>418 字句解析は作った人以外には理解が極めて困難、という面があります。 >>378 や >>429 も人に理解していただくような努力を微塵もしなかったことは申し訳ない。 本当に正確なものを作るのなら(そして人に理解していただくようにするのなら)、全然別のアプローチ(たとえば状態遷移でとらえるなど)をとらなければならないことは自覚しておりましたが、手が先に動いてしまいました。 (なお、>>429 は >>378 よりもちょっとだけ精度がよくなっております。) というわけで >>418 を追いかける余裕がありません。すみません。
431 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 23:42:02 ] >>427 嫌がらせみたいに汚いコードだな、無意味な typedef とか控えろよ 問題なのは while() 内で1回pop()、3回push() を行っている事にあるんじゃないかな 必然的にスタックは2つづつ増えるから最初に確保した領域をはみ出して segmentation fault となる そもそも push() には確保した領域をはみ出さないかのチェックが必要だが実装されていないし 何をしたいのか不明なコードだけど、毎ループで pop() されるのは head と 1 で head と 1 が3回push() される 当然、無限ループとなり segmentation fault で終わるプログラムだな
432 名前:デフォルトの名無しさん [2010/11/25(木) 23:59:54 ] [1] 授業単元: 情報処理概論T [2] 問題文(含コード&リンク): 大、中、小の3 個のさいころを同時にふった時、出た目の和がm になるような目の出方をすべて求めるプログラムを作りなさい。 ただし、m の値はキーボードから入力するものとする。表示を工夫して見やすい出力にすること。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: [無期限] [5] その他の制限: if、while、for、配列、多重ループ、関数まで既習です。 よろしくお願いします!
433 名前:デフォルトの名無しさん mailto:sage [2010/11/26(金) 00:07:30 ] >>432 さいころは6面でいい? 負数の扱いは?
434 名前:デフォルトの名無しさん mailto:sage [2010/11/26(金) 00:09:08 ] こまけぇこたぁ〜良いんだよ、それなりのものが出来れば
435 名前:デフォルトの名無しさん mailto:sage [2010/11/26(金) 00:16:21 ] >>431 適切なアドバイスどうもありがとうございます。 間違っていいたところも直せ、理解も深まりました。 ほんとうにありがとうございますm(_ _)m
436 名前:デフォルトの名無しさん mailto:sage [2010/11/26(金) 00:18:52 ] >>432 #include<stdio.h> #define MAX(a, b) ((a)>(b)?(a):(b)) #define MIN(a, b) ((a)<(b)?(a):(b)) int main(void) { int i_min, i_max, j_min, j_max, i, j, k; int m=0; printf("m を入力してください : "); scanf("%d", &m); i_min=MAX(1, m-12); i_max=MIN(6, m-2); for(i=i_min;i<=i_max;i++) { j_min=MAX(1, m-i-6); j_max=MIN(6, m-i-1); for(j=j_min;j<=j_max;j++) { k=m-i-j; printf("大:%d 中:%d 小:%d\n", i, j, k); } } return 0; }
437 名前:デフォルトの名無しさん mailto:sage [2010/11/26(金) 01:11:03 ] >>432 >表示を工夫して見やすい出力にすること。 ということで>>436 みたいな効率化は図っていない ideone.com/ojVVa
438 名前:デフォルトの名無しさん mailto:sage [2010/11/26(金) 02:05:41 ] >>432 codepad.org/j6ll07Ay いちまん回さいころふって、なにがでるかしらべてみて、しらべる☆ ためしてガッテンたいぷ♪ たまにまちがえちゃうけど、気にスンナ!