マイクロソフトのビジュアルC++を使っています。二次関数をとくプログラムを作ったのですが、実行ウィンドウがまたすぐに消えます。原因が分かりません、誰か教えてください。いかにソースを書きます。
#include <stdio.h>
#include <math.h>
int main ()
{
int a,b,c,x1,x2;
double d;
printf ("A=");
scanf ("%d",&a);
printf ("B=");
scanf ("%d",&b);
printf ("c=");
scanf ("%d",&c);
d=b*b-4*a*c;
if (d<0){
printf ("虚数解");
}
d=sqrt(d);
x1=(-b+d)/(2*a);
x2=(-b-d)/(2*a);
if (x1<0&&x2<0){
printf ("(x%d)(x%d)",x1,x2);
}
if (x1<0&&x2>0){
printf ("(x%d)(x+%d)",x1,x2);
}
if (x1>0&&x2<0){
printf ("(x+%d)(x%d)");
}
if (x1>0&&x2>0){
printf ("(x+%d)(x+%d)");
}
getchar();
return (0);
}
よろしくお願いします。
無題
Re:無題
>そのソースの意味がいまいち良く分かりませんが、解決しました。
http://ja.wikipedia.org/wiki/Scanf
「1.2 代入抑止」、「4.1 改行文字の取り扱い」その他、参考になるかと思います。

http://ja.wikipedia.org/wiki/Scanf
「1.2 代入抑止」、「4.1 改行文字の取り扱い」その他、参考になるかと思います。

Re:無題
すいません、したかったのは”因数分解”です。
>ハッカーさん
x1かx2がゼロの場合は正直想定してませんでした。ちょっと考えてみます。
気付かせてくれてありがとうございます。
また、
printf ("(x+%d)(x%d)");
printf ("(x+%d)(x+%d)");
は(x+a)(x-b) のような形で出力させたかったのでそんな風に作りました。ただ、その形だと上手く いかないことがその後分かったので変更してます。以下に変更後のスクリプトを載せます。また何か
あったらいろいろ書き込みしてください。
#include <stdio.h>
#include <math.h>
int main ()
{
double a,b,c,x1,x2,hantei;
double d;
printf ("A=");
scanf ("%lf",&a);
printf ("B=");
scanf ("%lf",&b);
printf ("c=");
scanf ("%lf%*c",&c);
d=b*b-4*a*c;
if (d<0)
{
b=b*b;
a=2*a;
d=-d;
printf ("%lf±√%lfi/%lf\n",b,d,a);
printf ("計算続行?Y=1 N=2\n");
scanf ("%lf",&hantei);
if (hantei==1)
{
d=sqrt(d);
x1=b/a;
x2=d/a;
printf ("x=%lf±%lfi\n",x1,x2);
}
getchar();
getchar();
return (0);
}
d=sqrt(d);
x1=(-b+d)/(2*a);
x2=(-b-d)/(2*a);
printf ("%lf,%lf\n",x1,x2);
x1=x1*-1;
x2=x2*-1;
if (x1<0&&x2<0){
x1=x1*-1;
x2=x2*-1;
printf ("(x%lf)(x%lf)\n",x1,x2);
}
if (x1<0&&x2>0){
printf ("(x%lf)(x+%lf)\n",x1,x2);
}
if (x1>0&&x2<0){
printf ("(x+%lf)(x%lf)\n",x1,x2);
}
if (x1>0&&x2>0){
printf ("(x+%lf)(x+%lf)\n",x1,x2);
}
getchar();
return (0);
}
>ハッカーさん
x1かx2がゼロの場合は正直想定してませんでした。ちょっと考えてみます。
気付かせてくれてありがとうございます。
また、
printf ("(x+%d)(x%d)");
printf ("(x+%d)(x+%d)");
は(x+a)(x-b) のような形で出力させたかったのでそんな風に作りました。ただ、その形だと上手く いかないことがその後分かったので変更してます。以下に変更後のスクリプトを載せます。また何か
あったらいろいろ書き込みしてください。
#include <stdio.h>
#include <math.h>
int main ()
{
double a,b,c,x1,x2,hantei;
double d;
printf ("A=");
scanf ("%lf",&a);
printf ("B=");
scanf ("%lf",&b);
printf ("c=");
scanf ("%lf%*c",&c);
d=b*b-4*a*c;
if (d<0)
{
b=b*b;
a=2*a;
d=-d;
printf ("%lf±√%lfi/%lf\n",b,d,a);
printf ("計算続行?Y=1 N=2\n");
scanf ("%lf",&hantei);
if (hantei==1)
{
d=sqrt(d);
x1=b/a;
x2=d/a;
printf ("x=%lf±%lfi\n",x1,x2);
}
getchar();
getchar();
return (0);
}
d=sqrt(d);
x1=(-b+d)/(2*a);
x2=(-b-d)/(2*a);
printf ("%lf,%lf\n",x1,x2);
x1=x1*-1;
x2=x2*-1;
if (x1<0&&x2<0){
x1=x1*-1;
x2=x2*-1;
printf ("(x%lf)(x%lf)\n",x1,x2);
}
if (x1<0&&x2>0){
printf ("(x%lf)(x+%lf)\n",x1,x2);
}
if (x1>0&&x2<0){
printf ("(x+%lf)(x%lf)\n",x1,x2);
}
if (x1>0&&x2>0){
printf ("(x+%lf)(x+%lf)\n",x1,x2);
}
getchar();
return (0);
}