Решение линейного уравнения (ax + b = 0) на C

CBeginner
Практиковаться сейчас

Введение

В этом лабораторном практикуме вы научитесь решать линейное уравнение вида ax + b = 0 с помощью языка программирования C. Вы начнете с ввода коэффициентов a и b от пользователя, затем вычислите решение x, используя формулу x = -b/a, убедившись, что коэффициент a не равен нулю. Наконец, вы выведете решение или укажете, что решение не существует.

Этот практикум охватывает фундаментальные понятия алгебраических выражений и их реализации на языке C. По окончании этого практикума вы получите глубокое понимание того, как программно решать простые линейные уравнения.

Чтение коэффициентов a и b

В этом шаге вы узнаете, как читать коэффициенты a и b для решения линейного уравнения на языке C. Мы создадим простую программу, которая запросит у пользователя ввод коэффициентов и сохранит их в переменные.

Сначала создадим новый файл C в каталоге проекта:

cd ~/project
nano linear_equation.c

Теперь введите следующий код для чтения коэффициентов:

#include <stdio.h>

int main() {
    double a, b;

    // Запрос ввода коэффициента a
    printf("Enter coefficient a (must not be zero): ");
    scanf("%lf", &a);

    // Запрос ввода коэффициента b
    printf("Enter coefficient b: ");
    scanf("%lf", &b);

    // Вывод введенных коэффициентов
    printf("Coefficient a: %.2f\n", a);
    printf("Coefficient b: %.2f\n", b);

    return 0;
}

Компилируем и запускаем программу:

gcc linear_equation.c -o linear_equation
./linear_equation

Пример вывода:

Enter coefficient a (must not be zero): 2
Enter coefficient b: 4
Coefficient a: 2.00
Coefficient b: 4.00

Рассмотрим код подробнее:

  • Мы используем тип данных double, чтобы позволить ввод десятичных значений для коэффициентов.
  • printf() используется для запроса ввода у пользователя.
  • scanf() считывает ввод пользователя и сохраняет его в переменные a и b.
  • Мы выводим введенные коэффициенты, чтобы подтвердить, что они были прочитаны правильно.

Вычисление x = -b/a (Проверка на a ≠ 0)

В этом шаге вы измените предыдущую программу, чтобы вычислить решение линейного уравнения ax + b = 0, с особым вниманием к обработке случая, когда a равно нулю.

Откройте предыдущий файл и обновите код:

cd ~/project
nano linear_equation.c

Замените содержимое следующим кодом:

#include <stdio.h>

int main() {
    double a, b, x;

    // Запрос ввода коэффициента a
    printf("Enter coefficient a (must not be zero): ");
    scanf("%lf", &a);

    // Проверка, равен ли a нулю
    if (a == 0) {
        printf("Error: Coefficient 'a' cannot be zero.\n");
        return 1;
    }

    // Запрос ввода коэффициента b
    printf("Enter coefficient b: ");
    scanf("%lf", &b);

    // Вычисление решения x
    x = -b / a;

    // Вывод решения
    printf("Solution of the equation %.2fx + %.2f = 0:\n", a, b);
    printf("x = %.2f\n", x);

    return 0;
}

Компилируем и запускаем программу:

gcc linear_equation.c -o linear_equation
./linear_equation

Пример вывода для корректного ввода:

Enter coefficient a (must not be zero): 2
Enter coefficient b: 4
Solution of the equation 2.00x + 4.00 = 0:
x = -2.00

Пример вывода для некорректного ввода (a = 0):

Enter coefficient a (must not be zero): 0
Error: Coefficient 'a' cannot be zero.

Ключевые моменты в этом коде:

  • Мы добавляем проверку, чтобы убедиться, что a не равно нулю, прежде чем вычислять решение.
  • Если a равно нулю, мы выводим сообщение об ошибке и завершаем программу.
  • Решение x вычисляется по формуле x = -b/a.
  • Мы используем %.2f, чтобы отформатировать вывод до двух десятичных знаков.

Вывод решения или указание отсутствия решения

В этом заключительном шаге вы улучшите решатель линейных уравнений, чтобы обрабатывать различные сценарии и предоставлять ясный вывод для решения.

Откройте предыдущий файл и обновите код:

cd ~/project
nano linear_equation.c

Замените содержимое следующим кодом:

#include <stdio.h>
#include <math.h>

int main() {
    double a, b, x;

    // Запрос ввода коэффициента a
    printf("Enter coefficient a: ");
    scanf("%lf", &a);

    // Запрос ввода коэффициента b
    printf("Enter coefficient b: ");
    scanf("%lf", &b);

    // Проверка различных сценариев
    if (a == 0 && b == 0) {
        printf("Бесконечное множество решений: любое действительное число является решением.\n");
    } else if (a == 0 && b != 0) {
        printf("Нет решения: уравнение не может быть решено.\n");
    } else {
        // Вычисление решения x
        x = -b / a;

        // Вывод решения
        printf("Уравнение: %.2fx + %.2f = 0\n", a, b);
        printf("Решение: x = %.2f\n", x);
    }

    return 0;
}

Компилируем и запускаем программу:

gcc linear_equation.c -o linear_equation
./linear_equation

Примеры вывода в различных сценариях:

Сценарий 1 (нормальное решение):

Enter coefficient a: 2
Enter coefficient b: 4
Equation: 2.00x + 4.00 = 0
Solution: x = -2.00

Сценарий 2 (нет решения):

Enter coefficient a: 0
Enter coefficient b: 5
No solution: The equation cannot be solved.

Сценарий 3 (бесконечное множество решений):

Enter coefficient a: 0
Enter coefficient b: 0
Infinite solutions: Every real number is a solution.

Основные улучшения в этой версии:

  • Обработка трех различных сценариев для линейных уравнений.
  • Предоставление ясных информативных сообщений для разных случаев.
  • Использование точной математической логики для определения типа решения.

Резюме

В этом лабораторном практикуме вы изучили, как считывать коэффициенты a и b для решения линейного уравнения в C. Вы создали простую программу, которая запрашивает у пользователя ввод коэффициентов и сохраняет их в переменные. Вы также изучили, как вычислить решение линейного уравнения ax + b = 0, уделяя особое внимание случаю, когда a равно нулю. Программа проверяет, равно ли a нулю, и выводит сообщение об ошибке, если это так; в противном случае она вычисляет решение x = -b/a и выводит его.