2013-03-14 1 views
1

나는 25 번째 줄에서 X를 풀 때를 제외하고는 거의 모든 것이 작동한다. "용어가 1787 인수를 취하는 함수로 평가되지 않는다"는 오류가 계속 발생한다. 나에게 1이나 0을 주지만 나는 그걸로 계속 지저분 했었어. 나는 내가 어디에 있었는지 잃어버린 곳을 잃었다. 여전히 죄송 게시에 새로운 하드 만약 내가 처음으로 느낀 것은 동시에 차 방정식의 +- 부분을하려고했던 것입니다C의 이차 함수

#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; 

} 
+0

소스 코드를 올바르게 포맷하십시오. – Oswald

+0

어쩌면'else (result> 0);'else if (result> 0) {... 나머지 코드}'일까요? – varnie

+0

내가 할 수없는 코드의이 줄을 가지고 놀 때를 제외하고는 모든 것이 작동했다. xx = (- b/2 * (a)) + - (sqrt (pow (b, 2)) (-4 * (a) * (c)))/(2 * (a)); – Pwoods

답변

2

를 읽을 수 있습니다. b^2 - 4ac가 0보다 큰 경우, 식

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

다른 말로

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

같은 의미 식은 두 응답을 가지고, 하나 개가 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); 
} 
+0

마지막'if '는 필요하지 않습니다. 그것과는 별개로 좋은 일. – varnie

+0

참 하하. 나는 그것을 명확하게하기 위해 넣었습니다. 고마워. – jonhopkins