二次関数で
任意の二次方程式(ax^2+bx+c=0)を解くプログラムを作るのですが、以下の条件を満たした方法で作るというものです。
1、関数の引数は、3つの係数と、解の入る変数二つとする。
(計5つの引数をとる。)
いずれかの引数がアドレス渡し(ポインタ)になる。
2、解は関数呼出の時に指定した2つの変数にそれぞれ代入されること。
3、解の表示は関数側ではなく呼出側で行うこと。
4、グローバル変数は使用しない。
一応作ってみたのですがコンパイルすらできません。
初心者なので全くわかりません教えてください。
#include<stdio.h>
#include<math.h>
void solve(double *x, double *y);
int main(void)
{
double x,y;
solve(&x,&y);
return 0;
printf("x=%f\n", x);
printf("y=%f\n", y);
}
void solve(double *x, double *y)
{
doble a,b,c;
puts("二次方程式 a*x^2+b*x+c=0 を解きます");
puts("係数a, b, cを入力してください");
printf("a="), scanf("%lf", a);
printf("b="), scanf("%lf", b);
printf("c="), scanf("%lf", c);
putchar('\n');
double d = b * b - 4 * a * c;
if(d >= 0){
x = (-b + sqrt(d)) / (2 * a);
y = (-b - sqrt(d)) / (2 * a);
}
else
puts("虚数解");
}
お礼
ありがとうございました。 あとは、自分で考えてみます。