- ベストアンサー
三角関数のグラフ
y=sin(x)のグラフを*を使って下のように表示したいのですが、どのようにプログラムを書いていいのかわかりません。 どなたか教えてください、お願いします。 *** ****** ********* ************ ********* ****** ***
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
汎用性を持たせて書くならば、次のようになるでしょうか。 分割数、範囲ともに指定できるようにしてみました。 #include <stdio.h> #include <math.h> static const int DIVIDE = 30; // x範囲分割数 static const double MIN = -M_PI; // x最小値 static const double MAX = M_PI; // x最大値 // 上記設定の場合、-π<=x<=π の範囲を30等分して表示する void plot(double); int main(void) { double x=MIN; double step = (MAX - MIN) / DIVIDE; // x間隔 while (x <= MAX) { double d = sin(x); plot(d); x += step; } return 0; } // 値dに応じて、*を並べて表示する。 // sin(x)の最小値-1を基準として、0.1増加するごとに、 // *を1個増やす。 void plot(double d) { int i; int count; count = (int)((d + 1.0) / 0.1); for(i=0 ; i<count ; i++) { printf("*"); } printf("\n"); }
その他の回答 (1)
- asuncion
- ベストアンサー率33% (2127/6289)
xの範囲は0~πですか? 仮にそうだとして、その範囲をいくつに分割したいですか? 提示された図では6等分していますけれど。 また、yが最大値1を取るx=π/2のとき、 何個の*で表わしたいですか?