質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

3回答

2614閲覧

sinカーブ cosカーブの出力

Kuro47

総合スコア13

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2018/12/18 08:28

編集2018/12/18 09:53

c角度が0度からスタートし、5度ずつ増やしながら360までのsin値、cos値を求め、sinカーブとcosカーブを一緒に描くプログラムを作成するという課題です。
表示の仕様は
(1)表示の1行目には「角度」、「サイン値」「cos値」の文字と横線のために「-」を51個連ねて表示する。左端が-1、右端が1に相当する。
(2)
2行目以降は、角度、サインの値、cosの値、およびグラフの縦線もじ「|」、サイン、cosのプロット文字を表示してカーブを描いて行く。なお、サインは「*」、cosは「#」でプロットする。
(3)角度の表示式は、%3d、サイン値とcos値の表示は%6.3fを指定する。値が負になると負号がつくので桁数が勝手に1つ増える。このため、何もしないと各行の|がずれてしまうのでcos値の表示式の後に¥tを入れる。
char pbuf[60]を用意して、そこに*、#や|を入れていくのですがどうやっていいかわかりません。教えてください。

C

1#include<stdio.h> 2#include<math.h> 3int main (void) 4{ 5 int i,j,x,k,y,t,genbun=5; 6 double rad,cosvalue,sinvalue,pai=3.14; 7 printf("==sin cos curve plot=="); 8 char pbuf[60] ; 9 pbuf[51]='\0'; 10 printf("\n角度\tsin値\tcos値\t"); 11 for (i=0;i<=50;i++){ 12 printf("-"); 13 } 14 for (j=0;j<=360;j+=genbun){ 15 rad=(pai*j)/180.0; 16 sinvalue=sin(rad); 17 cosvalue=cos(rad); 18 printf("\n%3d\t%6.3f" "\t%6.3f\t",j,sinvalue,cosvalue); 19 printf("|"); 20 x=(int)(sin(rad)*25+25); 21 for(k=0;k<x;k++) 22 printf(" "); 23 printf("*"); 24 y=(int)(cos(rad)*25+25); 25 for(t=0;t<=y;t++) 26 printf(" "); 27 printf("#"); 28 } 29 printf("\n"); 30 return(0); 31}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2018/12/18 08:32

これは C# ではありません。言語を確認してください。
poniponiponiki

2018/12/18 08:55

こんにちは。Zuishinさんがおっしゃっているように、これはC#ではないので、タグを付け直したほうがいいかと思います。C言語を得意とされている方が質問をスルーしてしまうこともありますので!
guest

回答3

0

ベストアンサー

Cなど不要。そう、シェル芸ならね!

bash

1$ seq 0 5 360|awk 'func r(x){return x>0?int(x+.5):int(x-.5)}BEGIN{p=3.1415;n=30;m=n/2;print"degree\tsin\tcos\t-1\t\t\t\t+1";for(i=60;i;i--)printf"-";print}{a=$1*p/180;s=sin(a);c=cos(a);delete b;b[m]="|";b[r(s*m)+m]="*";b[r(c*m)+m]="#";printf"%3d\t%6.3f\t%6.3f\t",$1,s,c;for(i=0;i<=n;i++)printf b[i]?b[i]:" ";print""}' 2degree sin cos -1 +1 3------------------------------------------------------------ 4 0 0.000 1.000 * # 5 5 0.087 0.996 |* # 6 10 0.174 0.985 | * # 7 15 0.259 0.966 | * # 8 20 0.342 0.940 | * # 9 25 0.423 0.906 | * # 10 30 0.500 0.866 | * # 11 35 0.574 0.819 | * # 12 40 0.643 0.766 | *# 13 45 0.707 0.707 | # 14 50 0.766 0.643 | #* 15 55 0.819 0.574 | # * 16 60 0.866 0.500 | # * 17 65 0.906 0.423 | # * 18 70 0.940 0.342 | # * 19 75 0.966 0.259 | # * 20 80 0.985 0.174 | # * 21 85 0.996 0.087 |# * 22 90 1.000 0.000 # * 23 95 0.996 -0.087 #| * 24100 0.985 -0.174 # | * 25105 0.966 -0.259 # | * 26110 0.940 -0.342 # | * 27115 0.906 -0.423 # | * 28120 0.866 -0.500 # | * 29125 0.819 -0.574 # | * 30130 0.766 -0.643 # | * 31135 0.707 -0.707 # | * 32140 0.643 -0.766 # | * 33145 0.574 -0.819 # | * 34150 0.500 -0.866 # | * 35155 0.423 -0.906 # | * 36160 0.342 -0.940 # | * 37165 0.259 -0.966 # | * 38170 0.174 -0.985 # | * 39175 0.087 -0.996 # |* 40180 0.000 -1.000 # * 41185 -0.087 -0.996 # *| 42190 -0.174 -0.985 # * | 43195 -0.259 -0.966 # * | 44200 -0.342 -0.940 # * | 45205 -0.423 -0.906 # * | 46210 -0.500 -0.866 # * | 47215 -0.573 -0.819 # * | 48220 -0.643 -0.766 #* | 49225 -0.707 -0.707 # | 50230 -0.766 -0.643 *# | 51235 -0.819 -0.574 * # | 52240 -0.866 -0.500 * # | 53245 -0.906 -0.423 * # | 54250 -0.940 -0.342 * # | 55255 -0.966 -0.259 * # | 56260 -0.985 -0.174 * # | 57265 -0.996 -0.087 * #| 58270 -1.000 -0.000 * # 59275 -0.996 0.087 * |# 60280 -0.985 0.174 * | # 61285 -0.966 0.259 * | # 62290 -0.940 0.342 * | # 63295 -0.906 0.422 * | # 64300 -0.866 0.500 * | # 65305 -0.819 0.573 * | # 66310 -0.766 0.643 * | # 67315 -0.707 0.707 * | # 68320 -0.643 0.766 * | # 69325 -0.574 0.819 * | # 70330 -0.500 0.866 * | # 71335 -0.423 0.906 * | # 72340 -0.342 0.940 * | # 73345 -0.259 0.966 * | # 74350 -0.174 0.985 * | # 75355 -0.087 0.996 *| # 76360 -0.000 1.000 * #

投稿2018/12/18 12:58

hichon

総合スコア5737

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

もしかしてこんな感じのイメージかな?(手書きなのでグラフは適当。途中の数値は省略)

角度 sin cos -1 | +1 --------------------------------------------- 0 0.000 1.000 * # | * # | *# | # * 90 1 0 # * # | * # | * # | * 180 0 -1 # *

char pbug[60]って何に使うの?

あ、もしかして、グラフをのY軸(表示上は横方向)の-1~1までを60等分するということかな?
であれば、sinとcosの値(-1≦y≦1)を0≦y≦59の整数値に変換すればいい。
なので、pbufには空白, |, *, #のどれかが入るということになる。
ただ、45°の時はsinもcosも同じ値になるので* #のどちらかにするしかないけどね。

でも、60等分だと0点が[29]と[30]の間になってしまうので、

  • -1≦y<0を30等分して[0]~[29]に対応させる
  • 0<y≦1を30等分して[31]~[60]に対応させる
  • y=0は[0]に対応させる。(y≠0の時は|を入れる)

としないと、グラフのX軸が描けなくなります。なので、配列の要素数は61個必要かと。

投稿2018/12/18 09:59

PineMatsu

総合スコア3579

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

まず、

char pbuf[60] ;

ローカル変数ではその内容は0クリアされません。デタラメの内容になります

printf("-",pbuf[i]);

これは意味不明です。なにをしているつもりなんでしょうか

#これ、C のコードですねw

投稿2018/12/18 08:55

編集2018/12/18 09:00
y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問