0

このプログラムを使用して、関数の定義、宣言、および適切な呼び出しをよりよく理解する必要があります。それらの使用方法の理解が本当に必要です。3 つすべてが正しく説明されたこのプログラムの適切な書き方を教えてもらえますか?

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

quad_equation(float a, float b, float c);

int main()

{

    float a, b, c, determinant, r1,r2;

    printf("Enter coefficients a, b and c: ");

    scanf("%f%f%f",&a,&b,&c);

    determinant=b*b-4*a*c;

    if (determinant>0)

    {

        r1= (-b+sqrt(determinant))/(2*a);

        r2= (-b-sqrt(determinant))/(2*a);

        printf("Roots are: %.2f and %.2f",r1 , r2);

    }

    else if (determinant==0) { r1 = r2 = -b/(2*a);

    printf("Roots are: %.2f and %.2f", r1, r2);

    }


    else (determinant<0);

    {

    printf("Both roots are complex");

    }

    return 0;
4

2 に答える 2

0

ここでこの正確な質問を解決しました:(これは割り当ての一部だと思います)

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 は全体を読み取り、 ,121aは何もないためbですc(むしろ、 \n(enter) を b に入れ、 undefined を c に入れます)

したがって、コードで使用した方法でscanfを使用します

于 2013-11-07T02:43:21.057 に答える