• 締切済み

C言語

C言語でサイン波形を描こうとしています。sinxで角度を入力する場合はできるのですが、sin wtで時間変化で描こうとするとできません…プログラム教えてください。

みんなの回答

  • 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文でまわせば簡単にできるはずですよ。

ist2008
質問者

補足

#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波になりません。どこが悪いですか?

関連するQ&A