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;
}
}
}
お礼
今回は前者にあたります。 結局main関数の部分をいじって目的を達成できました。すみません。