Вывод решений или особых случаев
На этом последнем этапе вы улучшите программу, чтобы она предоставляла более детальный вывод для различных типов решений системы двух линейных уравнений.
Откройте существующий файл и внесите последние изменения:
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
--- Тип решения: Нет решения ---
Система уравнений не имеет решения.
Уравнения несовместны и параллельны.