
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も見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
sinカーブの表示のさせ方
C言語・C++・C#
-
c言語でグラフをつくる
C言語・C++・C#
-
C言語で矩形波生成方法
C言語・C++・C#
-
4
任意の周波数の正弦波(サイン波)を生成する方法
C言語・C++・C#
-
5
sin曲線とcos曲線を描くプログラムについて
Java
-
6
サインカーブを計算したい
C言語・C++・C#
-
7
C言語の入力した文字を反転させるプログラミングの仕方が分かりません。
Ruby
-
8
関数から配列を返すには?
C言語・C++・C#
-
9
C++ グラフ作成
C言語・C++・C#
-
10
10個出力で改行したいのですが・・・
C言語・C++・C#
-
11
ファイル内のデータを1行削除する方法
C言語・C++・C#
-
12
バス衝突で素子が破損する理由について質問です。
その他(コンピューター・テクノロジー)
-
13
e^(x^2)の積分に関して
数学
-
14
*をユーザーが入力した数字の数だけ表示するプログラムの作り方を教えてください
C言語・C++・C#
-
15
c言語 ファイルから数字を読み込む
C言語・C++・C#
-
16
C言語において、 配列要素をひとつずつ前にずらすコード
C言語・C++・C#
-
17
c++でサインカーブ、コサインカーブ、タンジェントカーブを表示するプログラムを教えてください。お願い
C言語・C++・C#
-
18
C言語での、年複利の計算方法が分かりません。
C言語・C++・C#
-
19
char型にint型の数値を代入する。
C言語・C++・C#
-
20
数値計算の高速化 (cos, sin, exp)
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
printf で二進表示を行いたい。
-
5
【C言語教えてください】sin波...
-
6
既約分数の表示プログラム
-
7
c言語でAからZまでを表示する...
-
8
2の累乗を計算するプログラム...
-
9
プログラミング言語C
-
10
strcmp
-
11
エラーについて質問です。
-
12
二つの整数値の大小比較
-
13
printf( " %2d", p * q );
-
14
4の倍数を論理演算で表す。。
-
15
答えを教えてください
-
16
unsigned int型について
-
17
%P と %X の違い
-
18
コンパイルエラーについて
-
19
巡回セールスマン問題
-
20
改行について 1行に何個かづ...
おすすめ情報
公式facebook
公式twitter