1

25 行目の X を解くことを除いて、ほとんどすべてが機能しています。「項は 1787 個の引数を受け取る関数に評価されません」というエラーが表示され続けます。1 または 0 が返されましたが、いじり続けたときに失われました。私がいた場所で、コピーを保存しました。読みにくい場合は申し訳ありませんが、まだ投稿するのは初めてです

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

void quadratic_function()

{
    int         a,b,c;      // variables
    long int    result;     // my X in the quadractic function
    long int    y,x;            // the result
    long int    quadratic;

    printf("enter values for a,b,c\n");
    scanf("%i\n %i\n %i", &a,&b,&c);
    printf("A=%i  B=%i  C=%i\n", a,b,c); //Displays Variables

    y= pow(b, 2);
    result= (y)*-4*(a)*(c); // b^2-4ac
    printf("\n%li\n",result);


    if (result<0) 
        printf("Imaginary Number"); // if negative

    else (result>0);
        x=(-b/2*(a)) +- (sqrt(pow(b, 2)) (-4*(a)*(c))) / (2*(a)); 
        //solving for x

        printf("\n %li\n",x);

        a = a*x;
        b = b*x;
        quadratic=pow(a, 2)*(b)*(c);        // if positive

         //printf("Quadratic equation equal to %li",quadratic); // result

}

int main()
{
quadratic_function();
return 0;

}
4

1 に答える 1

2

最初に気付いたのは、二次方程式の と の部分を同時に+実行しようとしていたことです。-方程式

x = (-b +- sqrt(b^2 - 4ac)) / 2a

と同じ意味

x = (-b + sqrt(b^2 - 4ac)) / 2a AND x = (-b - sqrt(b^2 - 4ac)) / 2a

つまり、b^2 - 4ac0 より大きい場合は 2 つの答えがあり、0 の場合は 1 つの答えがあり、負の場合は答えがありません。

もう1つ、この行else (result>0);は実際には何もしません。その後の残りのコードは、取得しても実行されますb^2 - 4ac < 0

最後に、グループ化や C++ のマイナス記号の優先順位について完全には確信が持てなかったので、括弧を少し変更しました。

y = pow(b, 2);
result = (y) - (4*a*c); // b^2-4ac
printf("\n%li\n", result);


if (result < 0) {
    printf("Imaginary Number"); // if negative

} else if (result == 0) {
    x = (-b) / (2 * a); // sqrt(0) = 0, so don't bother calculating it
    a = a*x;
    b = b*x;
    quadratic=pow(a, 2)*(b)*(c);
    printf("Quadratic equation equal to %li",quadratic); // result

} else if (result > 0) {

    // solve for (-b + sqrt(b^2 - 4ac)) / 2a
    x = ((-b) + sqrt(pow(b, 2) - (4 * a * c))) / (2 * a); 

    printf("\n %li\n",x);

    a = a*x;
    b = b*x;
    quadratic=pow(a, 2)*(b)*(c);
    printf("Quadratic equation equal to %li",quadratic); // result

    // do it again for (-b - sqrt(b^2 - 4ac)) / 2a
    x = ((-b) - sqrt(pow(b, 2) - (4 * a * c))) / (2 * a); 

    printf("\n %li\n",x);

    a = a*x;
    b = b*x;
    quadratic=pow(a, 2)*(b)*(c);
    printf("Quadratic equation equal to %li",quadratic);
}
于 2013-03-14T18:10:21.763 に答える