10/11/25 16:43:08
>>402 が解らないのは
C言語
実験のデジタルフィルタ
の両方なの?
デジタルフィルタは理解できるがC言語は駄目とか?
405: ◆L.eSCJEwZk
10/11/25 16:48:34
>>404
デジタルフィルタは、講義資料を見ていますがまだ理解できていません。
C言語はできるつもりでしたが、>>388の日本語で書いた部分をやろうと
思ったのですがどうすればよいかわかりませんでした。
基礎はできると思うのですが、ファイルのオープンなどでてくると
危ないです。
406: ◆1reJfOTbE.
10/11/25 16:49:17
↑トリップ間違いました、自分で間違いないです。
407:デフォルトの名無しさん
10/11/25 17:28:53
1回目の課題もファイル操作でてるけど
そっちがわかったならこっちもたぶんコードわかると思うんだけど
>>388の日本語で書いてある部分のどこがわからないのかな?
408:388
10/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:デフォルトの名無しさん
10/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]現在再起を習ったばかりで複雑なものは習っていません。
解答例のカレンダー↓
URLリンク(codepad.org)
410:389
10/11/25 19:02:18
>>405
ファイルのオープンなんかより生ポインタのが千倍危ないんだけどね
URLリンク(codepad.org)
411:デフォルトの名無しさん
10/11/25 19:48:02
>>410
元データを weight 分減少させる必要は無いと思うよ
412:デフォルトの名無しさん
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)
いちまん回さいころふって、なにがでるかしらべてみて、しらべる☆ ためしてガッテンたいぷ♪
たまにまちがえちゃうけど、気にスンナ!