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

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

解決済みの質問

C++でのプログラムについての質問です

このような二次関数の解を求めるプログラムを作成したのですが、自作関数solveをvoid solve(double, double, double)のように変更し同じ動作をするように変更したいです
どのようにへんこうすればよいでしょうか
#include<stdio.h>
#include<stdlib.h>
#include<math.h>

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

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

printf("2次方程式を解いた結果は次の通りとなる。\n");

if (a == 0.0)
{
if (b == 0.0)
{
printf("係数がおかしい\n");
exit(-1);
}
{
x1 = -c / b;
printf("解は%f です。\n", x1);
exit(0);
}
}
else
{
D = b * b - 4 * a * c;
if (D >= 0)
{
x1 = (-b + sqrt(D)) / (2.0 * a);
x2 = (-b - sqrt(D)) / (2.0 * a);
if (D == 0.0)
{
printf("解は %f です。\n", x1);
}
else
{
printf("解は %f と %f です。¥n", x1, x2);

}
}
else
{
r1 = -b / (2 * a);
r2 = sqrt(-D) / (2 * a);

printf("解は%.2f+%.2fi と%.2f-%.2fi \n", r1, r2, r1, r2);
}
}

return 0;
}

投稿日時 - 2019-07-04 23:27:22

QNo.9632048

困ってます

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

好きにしてくださってかまいません。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void solve(double a, double b, double c)
{
double D;

if (a == 0) { // 2次方程式ではないとき
if (b == 0) { // 係数がおかしいとき
printf("係数がおかしい\n");
exit(EXIT_FAILURE);
}
else {
printf("実数解1個 = %f\n", -c / b);
}
}
else {
D = b * b - 4 * a * c;
if (D > 0) {
printf("実数解1個目 = %f\n", (-b + sqrt(D)) / (2 * a));
printf("実数解2個目 = %f\n", (-b - sqrt(D)) / (2 * a));
}
else if (D == 0) {
printf("実数解1個 = %f\n", -b / (2 * a));
}
else {
printf("虚数解1個目 = %f + %fi\n", -b / (2 * a), sqrt(-D) / (2 * a));
printf("虚数解2個目 = %f - %fi\n", -b / (2 * a), sqrt(-D) / (2 * a));
}
}
}

int main(void)
{
double a, b, c, x1, x2;

printf("2次方程式ax^2 + bx + c = 0の係数a, b, cを1行で入力>");
scanf("%lf%lf%lf", &a, &b, &c);
solve(a, b, c);
return EXIT_SUCCESS;
}

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

お礼

できました
ありがとうございます!

投稿日時 - 2019-07-05 21:08:52

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

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

回答(2)

ANo.2

>自作関数solveをvoid solve(double, double, double)のように変更し同じ動作をするように変更したいです

自作関数solveは、どこにあるんでしょうか。
質問にはmain関数しか見当たりませんけど。

投稿日時 - 2019-07-05 07:34:39

あなたにオススメの質問