C/C++の宿題片付けます 143代目at TECH
C/C++の宿題片付けます 143代目 - 暇つぶし2ch412:デフォルトの名無しさん
10/11/25 20:46:57
>>409
再帰?謎過ぎる問題だな

413: ◆EkRIf9bJPo
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/11/25 20:52:33
>>414
そう。単に過去のデータを足しこむだけで、いろんな特性を持つ回路(フィルタなど)になるのです。
z 変換またはラプラス変換でググッてくだしゃあ。

416:デフォルトの名無しさん
10/11/25 20:59:12
>>409
何か汚いけど・・まあいいや
URLリンク(codepad.org)
URLリンク(www5a.biglobe.ne.jp)

417:デフォルトの名無しさん
10/11/25 21:00:50
>>416
表示直した
URLリンク(codepad.org)

418: ◆EkRIf9bJPo
10/11/25 21:02:30
>>380

大変申し訳ないのですが、読んでもロジックがわからなかったので自分で作りました。

URLリンク(codepad.org)


URLリンク(www.play21.jp)

上記のサイトを参考にしました。

方法3 コメントを削除したファイルを中間ファイルとして保存し、再度読み込み、行数を数える方法を行いました。

残っている課題が二つあります。

・ディレクトリ指定してCファイルを求める。
・コメント率を算出する。


大変、勝手なことだと思いますがこのソースをベースに作製お願いします。

419:409
10/11/25 21:15:23
>>412
なんかしたに張り付けてあるリンクのものを再起を使用して書き直すみたいです。
もうすこしコンパクトになるとか・・・
課題2はよくわかりません。

>>416
>>417
すみません。
再起はどこでどういう風に使用したらいいのでしょう?


420:409
10/11/25 21:18:32
>>409
for のところを再起にやればいいとかなんたら・・・・。

421:416
10/11/25 21:36:54
>>409
自分の定義に自分と同じ構造を持つ構造は再帰的に定義できる

さっきの例なら、ある月の一日の曜日は前の月の一日の曜日で求められる
前の月の一日はそのまた前の一日の曜日で
そのまた前も・・・ってな感じでずっと続く
ある状況で特殊化すればそこで再帰は終了する
さっきのなら2000年の1月で特殊化した

422:416
10/11/25 21:42:00
>>409
ついでにちょっと整理しといた
URLリンク(codepad.org)

423:デフォルトの名無しさん
10/11/25 22:04:51
カレンダー(カレンダー)C言語のソースが
2ちゃんのスレに書き込まれるぅ~♪

カレンダー(カレンダー)過ぎ行く時の中で
俺はソースを書いて彷徨うんだろう♪

424:409
10/11/25 22:12:19
みなさんありがとうございます。
recurse
みたいなコード?は使わないのでしょうか?
あと漸か式を考えたりなど・・・
よくわからない質問をしてしまってばっかりですみません><

425:デフォルトの名無しさん
10/11/25 22:35:14
recurse って再び呪うのか?

426:370 ◆1reJfOTbE.
10/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:デフォルトの名無しさん
10/11/25 23:14:03
[1] 授業単元:アルゴリズムとデータ構造
[2] 問題文(含コード&リンク):入力された2分木を中央順で走査するプログラムを
              再帰を使わずに書け。
自分で書いたプログラム
main.c  URLリンク(codepad.org)
STACK1.c URLリンク(codepad.org)
STACK2.c URLリンク(codepad.org)
Item1.h URLリンク(codepad.org)
Item2.h URLリンク(codepad.org)
STACK1.h URLリンク(codepad.org)
STACK2.h URLリンク(codepad.org)   
上三つをコンパイルして実行します。
コンパイルは通りますが、実行でsegmentation fault がでてしまいます。
main.cの最後のwhile文のところを修正していただけないでしょうか。
お願いします。
[3] 環境
 [3.1] OS: macosX
 [3.2] gcc
 [3.3] 言語: C
[4] 期限: 明日の午後一時まで。
[5] その他の制限:とくになし。

428:デフォルトの名無しさん
10/11/25 23:15:49
>>426
FIRが遅延時間前の入力信号を加算するのに対し、IIRは遅延時間前の出力信号を加算するものの様だ
ならば、FIRの encueue() するタイミングを加算後に移動させれば IIR になるのではと思う
PとNはポジとネガの意味かな?ならばNは重み付け加算を重み付け減算にすれば良いのだろうか?

429: ◆QZaw55cn4c
10/11/25 23:17:17
>>357
>>413
とりあえず動くものをあげときます。
URLリンク(codepad.org)

430:デフォルトの名無しさん
10/11/25 23:29:39
>>418
字句解析は作った人以外には理解が極めて困難、という面があります。
>>378>>429 も人に理解していただくような努力を微塵もしなかったことは申し訳ない。
本当に正確なものを作るのなら(そして人に理解していただくようにするのなら)、全然別のアプローチ(たとえば状態遷移でとらえるなど)をとらなければならないことは自覚しておりましたが、手が先に動いてしまいました。
(なお、>>429>>378 よりもちょっとだけ精度がよくなっております。)

というわけで >>418 を追いかける余裕がありません。すみません。



431:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/11/25 23:59:54
[1] 授業単元: 情報処理概論Ⅰ
[2] 問題文(含コード&リンク):
大、中、小の3 個のさいころを同時にふった時、出た目の和がm になるような目の出方をすべて求めるプログラムを作りなさい。
ただし、m の値はキーボードから入力するものとする。表示を工夫して見やすい出力にすること。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: [無期限]
[5] その他の制限: if、while、for、配列、多重ループ、関数まで既習です。

よろしくお願いします!


433:デフォルトの名無しさん
10/11/26 00:07:30
>>432
さいころは6面でいい?
負数の扱いは?

434:デフォルトの名無しさん
10/11/26 00:09:08
こまけぇこたぁ~良いんだよ、それなりのものが出来れば

435:デフォルトの名無しさん
10/11/26 00:16:21
>>431
適切なアドバイスどうもありがとうございます。
間違っていいたところも直せ、理解も深まりました。
ほんとうにありがとうございますm(_ _)m


436:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/11/26 01:11:03
>>432
>表示を工夫して見やすい出力にすること。
ということで>>436みたいな効率化は図っていない
URLリンク(ideone.com)


438:デフォルトの名無しさん
10/11/26 02:05:41
>>432
URLリンク(codepad.org)

いちまん回さいころふって、なにがでるかしらべてみて、しらべる☆ ためしてガッテンたいぷ♪
たまにまちがえちゃうけど、気にスンナ!


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch