二次関数の解についてのプログラム

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
h.k

二次関数の解についてのプログラム

#1

投稿記事 by h.k » 15年前

学校の課題の二次関数の解を求めるプログラムでわからないところがあったので質問させて頂きます。
自分の作ったプログラムは

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

int main(void)
{
int a,b,c,d;
double e,u,m,r;

printf("Input coefficient A:");
scanf_s("%d",&a);
printf("Input coefficient B:");
scanf_s("%d",&b);
printf("Input coefficient C:");
scanf_s("%d",&c);

d=(b*b)-(4*a*c);
u=-b/(2.0*a);
r=-c/b;

if(d==0 && a!=0 && b!=0 && c!=0){
printf("x1=x2=%f",u);}

if(d>0 && a!=0 && c!=0){
e=sqrt(d)/(2*a);
printf("x1=%f\n",u+e);
printf("x2=%f\n",u-e);}

if(d<0 && a!=0 && c!=0){
m=sqrt(-d)/(2*a);
printf("x1=%f+%fi\n",u,m);
printf("x2=%f+%fi\n",u,m);}

if(a==0 && b!=0){
printf("x1=x2=%f",r);}

if(a==0 && b==0 && c==0){
printf("No solution");}

return 0;
}

です。
コンパイラは通るのですが、”NO solution”の結果が出るはずの時に強制終了してしまいます。
なぜなのか考えてみたのですがわかりません。

C言語は学校で初めて半年ほどです。

環境はWindows XPで、コンパイラはVC++2008EEです。
提出期限は5月6日です。よろしくお願いします。

たかぎ

Re:二次関数の解についてのプログラム

#2

投稿記事 by たかぎ » 15年前

> 二次関数の解

二次方程式の解の間違いでは?

それはそうと、ゼロ除算が異常終了の原因だと思います。

ウルスラ

Re:二次関数の解についてのプログラム

#3

投稿記事 by ウルスラ » 15年前

たがきさんの言うように、ゼロ除算がよくないかと。
数学上、0は割れないんで。

scanfで読み取るときに、ゼロが入力されないようにプログラムを改正したほうがいいかもしれませんね。

例えば、

printf("Input coefficient A:");
scanf_s("%d",&a);

の部分を、

a = 0
while( a == 0 ){
printf("Input coefficient A:");
scanf_s("%d",&a);
}

と書き換えて、ゼロを入力すると再度入力するようにする・・・とか。

まぁ、その辺は自分で考えて解消してください。

ウルスラ

Re:二次関数の解についてのプログラム

#4

投稿記事 by ウルスラ » 15年前

すいません。たかぎさんの名前を打ち間違えてしまいました。
たかぎさん。ごめんなさいm(_ _)m

h.k

Re:二次関数の解についてのプログラム

#5

投稿記事 by h.k » 15年前

みなさんの意見を参考にしてもう一度作り直してみたらうまくいきました!
本当に助かりました!
ありがとうございました^^ 画像

閉鎖

“C言語何でも質問掲示板” へ戻る