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