🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

942閲覧

方程式の解の一つを求めるプログラム

退会済みユーザー

退会済みユーザー

総合スコア0

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2019/11/13 14:17

方程式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}

このコードで実行すると,何も出力されないのですが,コードのどこを直したら良いでしょうか?教えてください.よろしくお願いします.

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

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

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

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

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

swordone

2019/11/13 14:28

同符号で解なしって言ってますが、それは違いますよ。 異符号→解あり が真なのであって、その裏である 同符号→解なし は真ではないですよ。
退会済みユーザー

退会済みユーザー

2019/11/13 14:31

ご指摘ありがとうございます。その他にどこを修正したら良いでしょうか? 教えてください。よろしくお願いします。
yudedako67

2019/11/13 16:58

何も表示されないというのは、"方程式x^3-2x^2-5x+6=0の解の一つを求めます\n"すら表示されないということですか?
ironya

2019/11/14 23:39

C言語でのプログラムならタグもCにして下さい。
guest

回答2

0

何も出力されないとのことなので、最初の固定の文も表示されないと理解しました。
私は今時のC++を使ってませんが、私の記憶ではC++のmain関数って以下のどちらかでないと起動されないのではないかと。

c++

1int main(int argc, char *argv[]) 2 3int main()

コンパイラによっては戻りがvoidでも問題ないかもしれませんが。
以下によるとC言語だと戻りも void で大丈夫らしいですが、intにしましょうという趣旨の記事になっています。
void main()をめぐるどうでもいい話

投稿2019/11/13 23:19

編集2019/11/13 23:21
ironya

総合スコア456

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

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

0

ベストアンサー

ほかの部分の確認は全くしていませんが、とりあえず何も表示されないのはprintfの使い方が間違っているからです。
printf("解の値=%lf", a)

のように第一引数の中にフォーマット指定子を入れてください。

投稿2019/11/13 20:29

Ryo99_1001

総合スコア25

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問