해 출력 또는 특수 케이스
이 마지막 단계에서는 두 개의 연립 일차 방정식에 대한 다양한 유형의 해에 대한 더 자세한 출력을 제공하도록 프로그램을 개선할 것입니다.
기존 파일을 열고 최종 수정을 수행합니다.
cd ~/project
nano linear_equations.c
개선된 출력 형식으로 코드를 업데이트합니다.
#include <stdio.h>
#include <math.h>
// 행렬식 계산 함수
float determinant(float a1, float b1, float a2, float b2) {
return a1 * b2 - a2 * b1;
}
int main() {
float a1, b1, c1; // 첫 번째 방정식의 계수
float a2, b2, c2; // 두 번째 방정식의 계수
float det, detX, detY;
float x, y;
float EPSILON = 1e-6; // 부동소수점 비교를 위한 작은 값
// 첫 번째 방정식의 계수를 입력받습니다.
printf("연립 일차 방정식 풀이기\n");
printf("첫 번째 방정식의 계수를 입력하세요 (ax + by = c):\n");
printf("a1: ");
scanf("%f", &a1);
printf("b1: ");
scanf("%f", &b1);
printf("c1: ");
scanf("%f", &c1);
// 두 번째 방정식의 계수를 입력받습니다.
printf("두 번째 방정식의 계수를 입력하세요 (ax + by = c):\n");
printf("a2: ");
scanf("%f", &a2);
printf("b2: ");
scanf("%f", &b2);
printf("c2: ");
scanf("%f", &c2);
// 입력 방정식 출력
printf("\n입력 방정식:\n");
printf("방정식 1: %.2fx + %.2fy = %.2f\n", a1, b1, c1);
printf("방정식 2: %.2fx + %.2fy = %.2f\n", a2, b2, c2);
// 주 행렬식 계산
det = determinant(a1, b1, a2, b2);
// 해 유형 판별 및 출력
if (fabs(det) > EPSILON) {
// 유일한 해인 경우
detX = determinant(c1, b1, c2, b2);
detY = determinant(a1, c1, a2, c2);
x = detX / det;
y = detY / det;
printf("\n--- 해 유형: 유일한 해 ---\n");
printf("해:\n");
printf("x = %.2f\n", x);
printf("y = %.2f\n", y);
} else {
// 해가 없거나 무수히 많은 경우 확인
detX = determinant(c1, b1, c2, b2);
detY = determinant(a1, c1, a2, c2);
if (fabs(detX) > EPSILON || fabs(detY) > EPSILON) {
printf("\n--- 해 유형: 해 없음 ---\n");
printf("연립 방정식에 해가 없습니다.\n");
printf("방정식은 불일치하고 평행합니다.\n");
} else {
printf("\n--- 해 유형: 무수히 많은 해 ---\n");
printf("연립 방정식에 무수히 많은 해가 있습니다.\n");
printf("방정식은 동일하고 종속적입니다.\n");
}
}
return 0;
}
프로그램을 컴파일하고 실행합니다.
gcc linear_equations.c -o linear_equations
./linear_equations
유일한 해에 대한 예시 출력:
연립 일차 방정식 풀이기
첫 번째 방정식의 계수를 입력하세요 (ax + by = c):
a1: 2
b1: 3
c1: 8
두 번째 방정식의 계수를 입력하세요 (ax + by = c):
a2: 1
b2: 4
c2: 10
입력 방정식:
방정식 1: 2.00x + 3.00y = 8.00
방정식 2: 1.00x + 4.00y = 10.00
--- 해 유형: 유일한 해 ---
해:
x = 2.00
y = 2.00
해가 없는 경우 예시 출력:
연립 일차 방정식 풀이기
첫 번째 방정식의 계수를 입력하세요 (ax + by = c):
a1: 2
b1: 3
c1: 8
두 번째 방정식의 계수를 입력하세요 (ax + by = c):
a2: 4
b2: 6
c2: 16
입력 방정식:
방정식 1: 2.00x + 3.00y = 8.00
방정식 2: 4.00x + 6.00y = 16.00
--- 해 유형: 해 없음 ---
연립 방정식에 해가 없습니다.
방정식은 불일치하고 평행합니다.