- 締切済み
C言語
C言語でサイン波形を描こうとしています。sinxで角度を入力する場合はできるのですが、sin wtで時間変化で描こうとするとできません…プログラム教えてください。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- R_Earl
- ベストアンサー率55% (473/849)
回答No.2
頭の中でプログラムを動かしてみましたか? あるいは、変数がどのように変化するのかを実際に計算してみましたか? > float t,pi=3.14159,wb=120*pi,Iline; wbがなぜ120πなのでしょうか? > for(t=0;t<=6;t+=0.1) > > { > > Iline=sin(wb*t); 「 for(t=0;t<=6;t+=0.1)」の部分では、0.1刻みに増えています。 つまり「Iline=sin(wb*t);」の行を実行した時、Ilineの値はこのように変化します。 t = 0.0 → sin 0 = 0 t = 0.1 → sin 12π = 0 t = 0.2 → sin 24π = 0 t = 0.3 → sin 36π = 0 先ほど「wbがなぜ120πなのでしょうか?」と書いた理由が分かったでしょうか? 0.1刻みにtを変えるのであれば、120πは大きすぎます。 もう解決策は分かりますよね。
- fifaile
- ベストアンサー率25% (622/2403)
回答No.1
丸投げは禁止ですが、for文でまわせば簡単にできるはずですよ。
補足
#include<stdio.h> #include<math.h> void main() { int j; float t,pi=3.14159,wb=120*pi,Iline; printf("012345678901234567890\n"); for(t=0;t<=6;t+=0.1) { Iline=sin(wb*t); Iline=(Iline*10)+10; for(j=0;j<Iline;j++) { printf(" "); } printf("*\n"); } } 丸投げではなく… この自分で作ったプログラムでは縦に直線になるだけでsin波になりません。どこが悪いですか?