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 - 4ac大于 0,则方程有两个答案,如果为 0,则有一个答案,如果是否定的,则没有答案。

另一件事,这条线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 回答