|
すんません。私もまだC言語はじめて長くないので不適切な点
ありましたらご了承を。
それで、まずインデントをちゃんとした方がいいんじゃないで
しょうか。利用上の注意にもかいてますし。
本題ですが、まずその本に書いてあったプログラムって
下のような感じじゃなかったでしょうか?
pの配列数は必要最低限にしていますがとくに、ちがうのは空白
の数です。これを直さないと表示がほとんどされません。
#include <stdio.h>
#include <string.h>
#include <math.h>
void main(void)
{
char p[21];
int ts,tc;
double rd,n;
rd=3.14159/180;
printf(" -1 0 1\n");
printf(" I....+....I....+....I\n");
for(n=0;n<=360;n=n+15){
strcpy(p," I ");
ts=(int)(10+10*sin(n*rd));
tc=(int)(10+10*cos(n*rd));
if(ts==tc)
p[ts]='+';
else{
p[ts]='*';p[tc]='o';
}
printf("%5.0f %s\n",n,p);
}
}
で、なぜ10+10*sin()かというとまさしくサインカーブを
振幅、周期をそのまま紙に描くように連続にコンピュータ
で描くことは出来ません。いくらかは離散的に行わざるを
得ないはずです。そして、今回は振幅を+-10(整数値)で周
期を15度ずつの刻みに取ったということでしょう。
|