
No.3ベストアンサー
- 回答日時:
#include <stdio.h>
#include <memory.h>
#include <math.h>
#define PI 3.1415
void main()
{
int x, y;
int ival;
double dval;
char graph[21][38];
memset(graph, ' ', sizeof(graph));
for (x=0; x<=36; x++) {
dval = 10.0 * sin(((double)x * 10.0 * PI) / 180.0);
if (dval < 0)
ival = (int)(dval - 0.5);
else
ival = (int)(dval + 0.5);
graph[ival+10][x] = '*';
}
for (y=20; y>=0; y--) {
graph[y][37]='\0';
puts(graph[y]);
}
}
No.2
- 回答日時:
#include <stdio.h>
int main() {
printf("000 .....*....\n");
printf("010 .....*....\n");
printf("020 ......*...\n");
printf("030 .......*..\n");
printf("040 ........*.\n");
printf("050 ........*.\n");
printf("060 .........*\n");
printf("070 .........*\n");
printf("080 .........*\n");
printf("090 .........*\n");
printf("100 .........*\n");
printf("110 .........*\n");
printf("120 .........*\n");
printf("130 ........*.\n");
printf("140 ........*.\n");
printf("150 .......*..\n");
printf("160 ......*...\n");
printf("170 .....*....\n");
printf("180 .....*....\n");
printf("190 ....*.....\n");
printf("200 ...*......\n");
printf("210 ..*.......\n");
printf("220 .*........\n");
printf("230 .*........\n");
printf("240 *.........\n");
printf("250 *.........\n");
printf("260 *.........\n");
printf("270 *.........\n");
printf("280 *.........\n");
printf("290 *.........\n");
printf("300 *.........\n");
printf("310 .*........\n");
printf("320 .*........\n");
printf("330 ..*.......\n");
printf("340 ...*......\n");
printf("350 ....*.....\n");
printf("360 ....*.....\n");
return 0;
}
まず、1行を考えます。
・数字の桁を揃えて表示するには?
・x度のときの振幅10のsinの値の求め方は?
・C言語でsin関数を使うには、どうすればいい?また、角度の単位は何になってますか?度からその単位に変換するには?
・そのsin(x)の位置に"*"を置くなら、前後の"."(スペースとか別の文字でもいいですが)の数はそれぞれいくつ?
・その数だけ"."を表示するには?いろんな方法があるけど、「"."を表示」をその数だけ繰り返すには?
・以上の処理を、角度を0度から360度まで10度刻みでxを変化させて繰り返すには?
No.1
- 回答日時:
丸投げするよりも ご自身で何処まで理解なさっているのかを示しましょう
SIN波を描きたいのであればCのランタイムライブラリのsin関数を使うのでしょうから
#include <math.h>
はとりあえず必須でしょうね
ランタイム関数のsinですと引数はラジアンですので 円周率PI(パイ)の定数を記述しないといけないでしょう
これは tan(1)*4 や 3.1415492などを使うことになると思います
ラジアン = 角度*円周率/180
といった公式がありますので振幅の計算に使ってください
0から360まで 10刻みなら
for( n = 0; n < 361: n+= 10 ) {
// ココに振幅の計算処理
}
とか
n = 0;
while( n < 361 ) {
// ココに振幅の計算処理
n += 10;
}
といった具合でしょう
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
分数を表示するプログラム(長...
-
ブラックジャック
-
コンパイルエラーについて
-
ホームページをC言語で作りたい...
-
strcmp
-
Cプログラムについて
-
ifなんですが
-
cshの文字列操作(0埋め)
-
DOSコマンドで、YES,NO条件を加...
-
printfのコードは?
-
縦の棒グラフ
-
C言語で質問します
-
C言語 九九表
-
8人分のテストの点数を入力し、...
-
なぜgccはstdio.hをインクルー...
-
error C2143: 構文エラー : ';'...
-
LU分解法のピボット選択機能実...
-
10個出力で改行したいのですが...
-
C言語で五目並べを作成している...
-
「Aに対するBの割合」と「Aに対...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10個出力で改行したいのですが...
-
c言語でAからZまでを表示する...
-
(C言語)めちゃくちゃな値にな...
-
コマンドラインに出力した文字...
-
コンパイルエラーについて
-
コマンドプロンプトがすぐ消える
-
勝率をプログラムに
-
テキストカーソル位置の取得
-
三角形の判別
-
【C言語教えてください】sin波...
-
4の倍数を論理演算で表す。。
-
C言語で、「自然数nを入力し、n...
-
入力したお金の金額からお札の...
-
cshの文字列操作(0埋め)
-
switch分のケースを範囲数?に...
-
scanfに文字が入力されたときに...
-
プログラミングについての質問です
-
unsigned int型について
-
ダブルポインタで2次元配列を作成
-
円の面積を求めるプログラミン...
おすすめ情報