2차 방정식의 근을 구하는 프로그램...
agine
2차 방정식의 근을 계산하는 함수 quad_eqn()를 작성하시오.
quad_eqn() 함수는 a,b,c를 나타내는 double형의 3개의 인수를 받는다. 판별식이 양수인 경우에만 근을 출력하시오.
만약 판별식의 값이 음수이면 근이 없다는 메시지를 출력하시오.
ax^2+bx+c=0
출력 메시지
2차 방정식의 계수를 입력하시오.
a: 1
b: -5
c: 6
근은 2와 3입니다.
이 문제에 대한 소스가 밑에건데...
#include stdio.h
#include math.h
double quad_eqn(double a, double b, double c);
int main()
{
double a,b,c,j;
printf(2차방정식의 계수를 입력하시오\n);
printf(a:);
scanf_s(%lf,&a);
printf(b:);
scanf_s(%lf,&b);
printf(c:);
scanf_s(%lf,&c);
j = b*b-4*a*c;
if(j==0)
printf(x=%lf\n,(-b)/(2*a));
if(j0)
printf(근은 %lf, %lf입니다.\n,((-b)+sqrt(j)/(2*a),(-b)-sqrt(j)/(2*a)));
if(j0)
printf(실근이 없습니다.\n);
return 0;
}
double quad_eqn(double a, double b, double c)
{
double i;
i = ((-b)+sqrt(b*b-4*a*c)/(2*a),(-b)-sqrt(b*b-4*a*c)/(2*a));
return i;
}
근이 하나는 4.50000 나오고 하나는 0.00000 나오네요 ;; 2랑 3 나와야하는데... 뭐가 잘못된걸까요??
-
도전중
double quad_eqn(double a, double b, double c)
이 함수는 언제 호출할려고요? -
앵초
손보셔야할 부분이 두가지네요.
1. printf 에서 double 을 출력할 때에는 %lf 가 아닌 %f 를 사용합니다. (C 표준에서는 출력에 대한 %lf는 정의되어있지 않습니다.)
2. / 가 + 보다 연산자 우선순위가 높으므로,
printf(\근은 %lf, %lf입니다.\\n\