그리고 다들 아시겠지만.. 이차방정식은 2차항이 0이 되면 안됩니다.. --------------------------------- #include <stdio.h> #include <math.h>
//근의공식을 계산한다. //switch ,case의 경우, case에는 정해진 값만 들어가야 하기 때문에 쓸수가 없다...ㅇㅇㅇㅇ
int main() { //이차방정식을 입력받아서 a,b,c,를 계산한다. //sqrt(변수) --> 제곱근 계산. //아마도 판별식을 먼저 돌려서 계산한 다음에 //근이 두개인 경우에는 값을 두개로 해야할듯 //변수설정 a,b,c, result. a,b,c는 상수, a는 0이 될수 없다. //result는 float변수. //실근이 없을경우 근 없음을 출력한다! //근의공식 : solution //근이 두개인 경우에 대해서 sol1, sol2을 도입. 이것은 근이 두개이기 때문이다. //근이 두개인경우, 근의공식을 더해주고, 빼주고를 두번 계산한다.
int a,b,c; float result, solution, sol1, sol2; a = 0; b = 0; c = 0; result = 0; solution = 0; sol1 = 0; sol2 = 0;
printf("근의공식을 계산합니다. 이차 방정식을 만들어야 하므로 값을 입력해주세요, \n"); printf("[a * x^2 + b * x + c = 0] 의 근을 계산합니다. \n"); printf("a의 값을 입력해 주세요. :"); scanf("%d", &a); while( a == 0 ) { printf("a의 값은 0이 될 수 없습니다. 다시 입력해 주세요. \n"); scanf("%d", &a); }
printf("b의 값을 입력해 주세요. :"); scanf("%d", &b);
printf("c의 값을 입력해 주세요. :"); scanf("%d", &c);
printf("방정식은 %d * x^2 + %d * x + %d = 0 입니다. \n", a ,b, c);
solution= (b*b) - (4 * a * c);
if(solution < 0) { printf("근의 공식이 0보다 작습니다. 이 경우 실근은 없습니다. \n", solution); } if(solution == 0) { result = ((-1) * b) / 2; printf("근의 공식이 0 입니다. 이 경우 실근은 중근을 가지며, 값은 %f 입니다. \n", result); } if(solution > 0) { sol1 = (((-1) * b) - sqrt(solution)) / 2; sol2 = (((-1) * b) + sqrt(solution)) / 2; printf("근의 공식이 %f 로써, 0보다 큽니다. 이 경우 두 실근이 나옵니다. \n", solution); printf("두 실근은 %f, %f 입니다. \n", sol1, sol2); }