C言語関係掲示板

過去ログ

No854 SIN関数のグラフを描くプログラム

[戻る] [ホームページ]
No.10983

Help!!
投稿者---じゅん(2003/12/10 10:57:15)


誰か助けてください!!!学校の宿題でSIN関数のグラフを
描くプログラムを作れって言われて、考えてもわかりせん。
だれか、教えてください!!
おねがいします!!!

No.10989

Re:Help!!
投稿者---たか(2003/12/10 12:25:35)


>誰か助けてください!!!学校の宿題でSIN関数のグラフを
>描くプログラムを作れって言われて、考えてもわかりせん。
>だれか、教えてください!!
>おねがいします!!!

まず掲示板ご利用上の注意をよくお読み下さい。その上でこれから投稿
して下さるようお願いします。

環境も何も書いてないので、こちらで勝手に環境はWindowsとさせていた
だきます。Unix系の場合は2バイト文字コードが違う可能性がありますの
でその辺はご自分で何とかして下さい。

表示が36行ほど行きますので、画面からあふれてしまう場合はファイルに
結果をリダイレクトするか、i += 10の当たりをいじって下さい。その時
うまく調節しないと"π"や"2π"が表示されません。

#include <stdio.h>
#include <math.h>
#include <string.h>

#define PI 3.14159265358979323846
#define N 128
#define SCALE 35

int main(void)
{
  int i;
  char buf[N];

  printf("-1%*s0%*s1\n", SCALE - 2, " ", SCALE - 1, " ");
  for (i = 0; i <= 360; i += 10) {
    memset(buf, (i == 0) ? '-' : ' ', SCALE * 2 + 1);
    buf[SCALE] = 'I';
    buf[sin(i / 360. * 2 * PI) * SCALE + SCALE] = '*';
    buf[SCALE * 2 + 1] = '\0';
    if (i == 180) {
      buf[0] = 0x83; buf[1] = 0xce; /* π */
    } else if (i == 360) {
      buf[0] = '2'; buf[1] = 0x83; buf[2] = 0xce; /* 2π */
    }
    puts(buf);
  }

  return 0;
}