• 締切済み

C言語に関してご質問です.

1 0度<=x<=90度の範囲でx, sin(x), cos(x), sin(x)-cos(x)の値を5度刻みで出力. 2 ax+bとcx+dの交点のx座標を求める.(a, b, c, d,許容誤差は自由). 自分なりに試行錯誤はしてみたのですが、どうしても結果に矛盾が生じてしまいます。 C言語は初心者で不明点が多々ありますので、どうぞよろしくお願いします。

みんなの回答

回答No.3

[1] int deg; for ( deg = 0; deg <= 90; deg += 5 ) {  double x= deg * 3.1416 / 180.0; /* 標準関数sin(),cos()の引数はradianなので、degreeから変換 */  x, sin(x), cos(x), sin(x)-cos(x)の値を出力 ←標準関数 sin(),cos() 使えばいいよ } [2] ax + b = cx + d となる x を求めるのだから、式を変形し: → ax - cx = d - b → (a - c)x = d -b → x = (d - b) / (a - c) ※ a = c のとき d - b = 0 なら"不定", d - b!= 0 なら"不能"

tsuyochan0802
質問者

補足

2番目に関して、その理論は理解できるのですが、それをC言語を用いて表示する方法が分かりかねます。

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.2

>1つ目に関しては,sin(x)とcos(x)の出力に関してと5度刻みに出力するプログラムの書き方が分かりません. 0~90まで5刻みで(0,5,10,15,...,90)出力するプログラムは組めますか? >2つ目に関しては,作成したのですが,失敗して削除してしまい, >今現在全く分かりません. 一度書けたのならもう一度書き直せばいいだけです。 数学としてなら解けるんでしょうか?

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

具体的に、どんなプログラムを書いて、どんな矛盾が出るのでしょうか? それがわからないので、回答できません。 やりそうなのは ・sin関数、cos関数にx度をそのまま指定している リファレンスマニュアルを読めば、それが間違いだとわかります。 ・int, double等、整数と浮動小数点数が入り混っている。 1/2は0.5ではない。 高度な話になると、誤差を減らすには、どんな計算をしたらいいのか、という話になるでしょう。

tsuyochan0802
質問者

補足

1つ目に関しては,sin(x)とcos(x)の出力に関してと5度刻みに出力するプログラムの書き方が分かりません. int nk=1; float x0,x2,xm,xk,err,f(float); //printf("Input sin ="); scanf("%f",&sin); //printf("Input cos ="); scanf("%f",&cos); printf("Input x0 ="); scanf("%f",&x0); printf("Input xπ/2 ="); scanf("%f",&x2); printf("Input err ="); scanf("%f",&err); if(f(x0)*f(x2)<0){ while(x2-x0>=err){ xm=(x0+x2)/2; if(f(x0)*f(xm)>0){x0=xm;} else if(f(x0)*f(xm)<0){x2=xm;} else{xk=xm; break;} } xk=xm; } else if(f(x0)*f(x2)>0.0){nk=0;} else if(f(x0)==0.0){xk=x0;} else{xk=x2;} if(nk==0){printf("There is no root\n");} else {printf("x is %f\n",xk);} 2つ目に関しては,作成したのですが,失敗して削除してしまい, 今現在全く分かりません. できれば、全く分からないので、アドバイスに付き、正論な回答(プログラム)を明記して頂けると幸いです. よろしくお願いします.

関連するQ&A