方程式x^3-2x^2-5x+6=0の解(の一つ)を求めるプログラムを作成しています.この解はx=-2、1、3です.実数変数の入出力にはprintfとscanfを使います,
以下が現在のコードです.
C++
1#include <stdio.h> 2 3 4void main() { 5 6 double a = 0; // 区間の始点 7 double b = 0; // 区間の終点 8 double c = 0; //a,bの中点 9 double fa = 0; 10 double fb = 0; 11 double fc = 0; 12 13 // 区間a,bを受け取る 14 printf("方程式x^3-2x^2-5x+6=0の解の一つを求めます\n"); 15 printf("解を求める範囲(a≦x≦b)="); 16 scanf_s("%lf%lf",&a ,&b); 17 // a>=bならばエラーを表示して終わる 18 if (a >= b) { 19 printf("区間が取得できません\n"); 20 } 21 22 // f(a),f(b)の値fa,fbを求める 23 else { 24 fa = a * a * a - 2 * a * a - 5 * a + 6; 25 fb = b * b * b - 2 * b * b - 5 * b + 6; 26 27 // もしfaがゼロならばaを解として表示して終わる 28 if (fa == 0) { 29 printf("解の値=", a); 30 } 31 32 // もしfbがゼロならばbを解として表示して終わる 33 if (fb == 0) { 34 printf("解の値=", b); 35 } 36 37 // もしfa,fbが同符号ならばエラーを表示して終わる 38 if (fa * fb > 0) { 39 printf("解はありません"); 40 } 41 42 // a,bの中点cと、そこでの関数値fcを求める 43 c = (a + b) / 2; 44 fc = c * c * c - 2 * c * c - 5 * c + 6; 45 46 // (b-a)>εであり、かつfcがゼロでない限り、以下を繰り返す 47 while ((b - a) > 1.0 / 100000000 || fc != 0) { 48 49 // もしf(a)とf(c)が異符号ならば、b←c、fb←fcとする 50 if (fa * fc < 0) { 51 b = c; 52 fb = fc; 53 } 54 55 // そうでなければ、a←c、fa←fcとする 56 else { 57 a = c; 58 fa = fc; 59 } 60 61 // a,bの中点cと、そこでの関数値fcを求める 62 c = (a + b) / 2; 63 fc = c * c * c - 2 * c * c - 5 * c + 6; 64 } 65 66 // cを解として表示する 67 printf("解の値=", c); 68 } 69}
このコードで実行すると,何も出力されないのですが,コードのどこを直したら良いでしょうか?教えてください.よろしくお願いします.
回答2件
あなたの回答
tips
プレビュー