みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

C++でのプログラミングについてです

プログラミング初心者です
C++で二次方程式の解のプログラムを作成したのですがうまく作動させることができません…どこがおかしいのでしょうか、またどのように変更すればよいでしょうか
発生したエラーは
15行 型voidの値をintのエンティティに割り当てることはできません
34行 宣言が必要です
55行 宣言が必要です
15行 voidが他の型と同時に使われました
34行 '{'を見つけました(関数のヘッダーがないかもしれません).
68行 構文エラー:'}'
です
よろしくお願いいたします
#include<stdlib.h>
#include<math.h>
void solve(double, double, double);

int main(void)
{
double a, b, c; /*二次方程式の定数*/
double D, x1, x2, r1, r2;
int ret;

printf("ax^2 + bx + c = 0 の係数 a, b, c を入力してください---> \n");
scanf_s("%lf %lf %lf", &a, &b, &c);

printf("2次方程式を解いた結果は次の通りです。\n");
ret = solve(a, b, c, &x1, &x2, &r1, &r2);
switch (ret)
{
case-1:
printf("係数がおかしい\n");
break;
case 0:
printf("解は虚数解で%.2f+%.2fi と%.2f-%.2fi です\n", r1, r2, r1, r2);
break;
case 1:
printf("解は実数解となり、%f です。\n", x1);
break;
case 2:
printf("解は実解解で、%f と %f です。¥n", x1, x2);
break;
}
return 0;
}
void solve(double a, double b, double c, double x1, double x2, double r1, double r2);
{
if (a == 0.0)
{
if (b == 0.0)
{
return -1;
}
{
x1 = -c / b;
return 1;
}
}
else
{
D = b * b - 4 * a * c;
if (D >= 0)
{
x1 = (-b + sqrt(D)) / (2.0 * a);
x2 = (-b - sqrt(D)) / (2.0 * a);
return 1;
}
if (D == 0)
{
x1 = -b / (2 * a);
return 1;
}
else
{
r1 = -b / (2 * a);
r2 = sqrt(-D) / (2 * a);
return 0;

}
}
}

投稿日時 - 2019-07-04 22:15:20

QNo.9632022

困ってます

質問者が選んだベストアンサー

3: void solve(double, double, double);
15: ret = solve(a, b, c, &x1, &x2, &r1, &r2);
33: void solve(double a, double b, double c, double x1, double x2, double r1, double r2);

solve関数の引数の数や型が上記の3行で全て食い違っています。
15行目に合わせるなら3行目は
int solve(double, double, double, double *, double *, double *);
とするべきで、33行目もそれに伴って変える必要があります。
ついでに33行目の末尾のセミコロンは不要です。
問題は他にもありますが全部は書きません。

投稿日時 - 2019-07-04 22:54:58

お礼

ありがとうございました

投稿日時 - 2019-07-04 23:23:56

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

どこがおかしいかというとエラーメッセージに書かれている通りですよ。

>15行 型voidの値をintのエンティティに割り当てることはできません
>34行 宣言が必要です
>55行 宣言が必要です
>15行 voidが他の型と同時に使われました
>34行 '{'を見つけました(関数のヘッダーがないかもしれません).
>68行 構文エラー:'}'

3行目の
>void solve(double, double, double);
は、何を意味するのかわかっていらっしゃいますか。

また33行目からの関数の書き方は何かおかしくないですか。

投稿日時 - 2019-07-04 23:17:00

お礼

ありがとうございました

投稿日時 - 2019-07-04 23:24:30

ANo.1

初心者ということでしたら、まずはエラーをそのまま検索されると良いかと思います。

投稿日時 - 2019-07-04 22:34:36

お礼

でないです

投稿日時 - 2019-07-04 23:24:40

あなたにオススメの質問