ここでこの正確な質問を解決しました:(これは割り当ての一部だと思います)
https://stackoverflow.com/a/19826495/1253932
また、コードを見ると..関数クワッド方程式を使用することはありません..また、関数のタイプ(int/void/float/char)などを定義していません.
簡単にするために:(ここにコード全体があります)-何も理解できない場合は私に尋ねてください
#include <stdio.h>
#include <math.h>
// function declarations
void twoRoots (float a,float b,float delta);
void oneRoot (float a,float b,float delta);
int main (void)
{
//Local Declarations
float a;
float b;
float c;
float delta;
// float solution;
printf("Input coefficient a.\n");
scanf("%f", &a);
printf("Input coefficient b.\n");
scanf("%f", &b);
printf("Input coefficient c.\n");
scanf("%f", &c);
printf("%0.2fx^2 + %0.2fx + %0.2f\n", a, b, c);
delta = (float)(b*b) - (float)(4.0 * a * c);
printf("delta = %0.2f\n",delta);
if (delta > 0){
twoRoots(a,b,delta);
}else if (delta == 0) {
oneRoot(a,b,delta);
}else if (delta < 0.0){
printf("There are no real roots\n");
}
return 0;
}
void twoRoots (float a,float b,float delta)
{
float xOne;
float xTwo;
float deltaRoot;
printf("There are two distinct roots.\n");
deltaRoot = sqrt(delta);
xOne = (-b + deltaRoot) / (2*a);
xTwo = (-b - deltaRoot) / (2*a);
printf("%.2f", xOne);
printf("%.2f", xTwo);
}
void oneRoot(float a,float b,float delta)
{
float xOne;
// float xTwo;
// float deltaRoot;
printf("There is exactly one distinct root\n");
xOne = -b / (2*a);
printf("%.2f", xOne);
}
編集:
上記のコードから作成した、もう少し最適化された、より機能的なコード:
http://pastebin.com/GS65PvH6
編集2:
あなたのコメントから、あなたはこれをやろうとします:
printf("Enter coefficients a, b and c: ");
scanf("%f%f%f",&a,&b,&c);
次のようなものを入力すると、これは失敗します。121
scanf は全体を読み取り、 ,121
にa
は何もないためb
ですc
(むしろ、 \n(enter) を b に入れ、 undefined を c に入れます)
したがって、コードで使用した方法でscanfを使用します