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

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

締切り済みの質問

C言語についての質問です

プログラミング初心者です
if関数を使用して二次方程式の解を解くプログムを作成したのですが、この作成した関数をユーザー定義関数を使用しmain 関数の中でユーザー定義関数を呼び出すことにより、 2次方程式の解を求めるプログラムへ変更したいのですが、どのように行えばいいのか分かりません…
私が作成したプログラムはこのようなものになっています
#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-03 23:51:37

QNo.9631730

困ってます

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

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

回答(1)

ANo.1

こんな感じですかね、例えば。

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

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

printf("2次方程式ax^2 + bx + c = 0の係数a, b, cを1行で入力>");
scanf("%lf%lf%lf", &a, &b, &c);
ret = solve(a, b, c, &x1, &x2);
switch (ret) {
case -1:
printf("係数がおかしい\n");
break;
case 0:
printf("実数解がない\n");
break;
case 1:
printf("実数解 = %f\n", x1);
break;
case 2:
printf("実数解 = %f\n", x1);
printf("実数解 = %f\n", x2);
break;
}
return 0;
}

int solve(double a, double b, double c, double *x1, double *x2)
{
double D;

if (a == 0) { // 2次方程式ではないとき
if (b == 0) { // 係数がおかしいとき
return -1;
}
else {
*x1 = -c / b;
return 1; // 実数解1個
}
}
else {
D = b * b - 4 * a * c;
if (D > 0) {
*x1 = (-b + sqrt(D)) / (2 * a);
*x2 = (-b - sqrt(D)) / (2 * a);
return 2; // 実数解2個
}
else if (D == 0) {
*x1 = -b / (2 * a);
return 1; // 実数解1個
}
else {
return 0; // 実数解なし
}
}
}

投稿日時 - 2019-07-04 01:20:04

補足

すいません、void型の値をintのエンティティに割り当てることはできません、と出てしまいます…

投稿日時 - 2019-07-04 21:41:39

お礼

ありがとうございました

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

あなたにオススメの質問