アプリ版:「スタンプのみでお礼する」機能のリリースについて

y=sin(x)のグラフを*を使って下のように表示したいのですが、どのようにプログラムを書いていいのかわかりません。
どなたか教えてください、お願いします。


***
******
*********
************
*********
******
***

A 回答 (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");
}
    • good
    • 0

xの範囲は0~πですか?



仮にそうだとして、その範囲をいくつに分割したいですか?
提示された図では6等分していますけれど。

また、yが最大値1を取るx=π/2のとき、
何個の*で表わしたいですか?
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!