int main(void) {
float a;
float b;
float c;
// ★
printf("안녕하세요? 이 프로그램은 이차방정식의 근을 구하는 프로그램입니다.\n\n이차방정식의 이차항의 계수를 입력하시오.\n");
scanf("%f", &a);
printf("이차방정식의 일차항의 계수를 입력하시오.\n");
scanf("%f", &b);
printf("이차방정식의 상수항의 계수를 입력하시오.\n");
scanf("%f", &c);
if (a == 0) {
if (b == 0) {
if (c == 0) {
printf("근은 무수히 많다.");
}
else { printf("근이 없다."); }
}
else {
printf("근은 %.2f 이다.", -c / b);
}
}
else {
float D = b*b - 4 * a*c; // 왜 이것이 맨앞에 ★ 자리에 있으면 오류가 나는걸까?
if (D > 0) {
printf("근은 %.2f, %.2f 이다.", (1 / (2 * a))*(-b + sqrt(D)), (1 / (2 * a))*(-b - sqrt(D)));
}
if (D == 0) {
printf("근은 %.2f 이다.", (1 / (2 * a))*(-b));
}
if (D < 0) {
printf("근은 %.2f + %.2fi , %.2f + %.2fi 이다.", (1 / (2 * a))*(-b), (1 / (2 * a))*sqrt(-D), (1 / (2 * a))*(-b), -(1 / (2 * a))*sqrt(-D));
}
}
return 0;
}
저기서 플로앗D를 왜 앞에다 놓으면 런타임 오류가 나는건지 도무지 이해가 안갑니다 ㅜㅜ
인클루드 스트디오랑 매쓰가 빠졌네요
초기화할 때 쓰레기 값이 들어 있어서
.0붙여
4.0*a*c
글고 ㅡㅡ 변수선언은 맨 앞에하는거야
맨앞에놓고 .0을 붙여
근뎅 저 스코프에서만 D가 쓰이니까 저래도 괜찮지 않을까?
그리고 D를 //★ 자리에 옮겼을 때 에러가 나는 이유는 float D = b*b - 4 * a*c;에서 b,a,c가 초기화 되지 않았기 때문이야.
ㅂ365 테니스 오토플 일수익 50 후루룩! nete77