こんにちわ。
他の方も指摘されていますが、提示されたソースコードはコンパイルできません。
以下に問題点を指摘します。
-
インクルードファイル名は studio.h ではなく stdio.h です。
-
printf関数の二重引用符が全角になっています。
-
scanf関数の二重引用符が全角になっています。
-
scanf関数の最後に;がありません。
-
scanf(“%f”,&A”) の &Aの右にある二重引用符は不要です。(scanf(“%f”,&B”)も同様)
-
C=(A+B)/2 の最後に;がありません。
-
Cを計算する個所ではA,B,Cが実数なので C=(A+B)/2.0; と記述すべきです。
-
Ya,Yb,Ycを計算する個所で同じ手続きを3回繰り返し書いています。
関数を利用して簡潔に記述すべきです。
9. if(-esp<Yc<esp) の箇所ではコンパイラがプログラマの意図を正確に評価できません。
if(-esp < Yc && Yc < esp) と記述すべきです。
10. A=c; ではなく A=C; が正しいです。
これくらいですかね。
以上の点を修正したコードを示します。
C
1/*include<studio.h> */
2#include <stdio.h>
3
4float y(float x){
5 return (x*x*x - 2.0*x*x - 3.0);
6}
7
8int main(){
9float Ya,Yb,Yc,esp;
10float A,B,C;
11int i,itr;
12
13/*printf(“Aの値を入力して下さい\n”);*/
14printf("Aの値を入力して下さい\n");
15/*scanf(“%f”,&A”)*/
16scanf("%f",&A);
17/*printf(“Bの値を入力して下さい\n”);*/
18printf("Bの値を入力して下さい\n");
19/*scanf(“%f”,&B”)*/
20scanf("%f",&B);
21
22itr=1000000;
23esp=0.00001;
24
25for(i=0;i<itr;i++){
26 /*C=(A+B)/2*/
27 C=(A+B)/2.0;
28 /*
29 Ya=(A*A*A)-(2*A*A)-3;
30 Yb=(B*B*B)-(2*B*B)-3;
31 Yc=(C*C*C)-(2*C*C)-3;
32 */
33 Ya = y(A);
34 Yb = y(B);
35 Yc = y(C);
36
37 /*if(-esp<Yc<esp) {*/
38 if(-esp < Yc && Yc < esp){
39 /*printf(“解は%f,%f\n”,A,B);*/
40 printf("解は%f,%f\n",A,B);
41 return 0;
42 }
43
44 if(Ya*Yc<0){
45 B=C;
46 }else{
47 /*A=c;*/
48 A=C;
49 }
50}
51/*printf(“解は%f,%f\n”,A,B);*/
52printf("解は%f,%f\n",A,B);
53return 0;
54}
なお、AとBの初期値を入力する際、AとBの間に解があるようにする必要があります。
そうしないと解を求めることができませんので。
以下の実行例ではA=2.0,B=3.0としています。
実行ログを以下に示します。
Aの値を入力して下さい
2.0
Bの値を入力して下さい
3.0
解は2.485580,2.485588