Вычисление рациональных выражений в C

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

Введение

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

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

Чтение выражений числителя и знаменателя

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

Сначала создайте новый файл C для реализации ввода рациональных выражений:

cd ~/project
nano rational_expressions.c

Теперь добавьте следующий код для чтения числителя и знаменателя:

#include <stdio.h>

int main() {
    int numerator, denominator;

    printf("Enter the numerator: ");
    scanf("%d", &numerator);

    printf("Enter the denominator: ");
    scanf("%d", &denominator);

    printf("Numerator: %d\n", numerator);
    printf("Denominator: %d\n", denominator);

    return 0;
}

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

gcc rational_expressions.c -o rational_expressions
./rational_expressions

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

Enter the numerator: 10
Enter the denominator: 5
Numerator: 10
Denominator: 5

Давайте разберем код:

  • scanf() используется для чтения целочисленных входных данных от пользователя
  • Спецификатор формата %d используется для целочисленного ввода
  • Мы сохраняем числитель и знаменатель в отдельных целочисленных переменных
  • printf() используется для отображения введенных значений

Вычисление значения дроби

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

Обновите предыдущий файл rational_expressions.c, включив вычисление дроби:

cd ~/project
nano rational_expressions.c

Измените код для вычисления значения дроби:

#include <stdio.h>

int main() {
    int numerator, denominator;
    float fraction_value;

    printf("Enter the numerator: ");
    scanf("%d", &numerator);

    printf("Enter the denominator: ");
    scanf("%d", &denominator);

    // Проверка на деление на ноль
    if (denominator == 0) {
        printf("Ошибка: Деление на ноль запрещено.\n");
        return 1;
    }

    // Вычисление значения дроби
    fraction_value = (float)numerator / denominator;

    printf("Числитель: %d\n", numerator);
    printf("Знаменатель: %d\n", denominator);
    printf("Значение дроби: %.2f\n", fraction_value);

    return 0;
}

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

gcc rational_expressions.c -o rational_expressions
./rational_expressions

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

Enter the numerator: 10
Enter the denominator: 4
Числитель: 10
Знаменатель: 4
Значение дроби: 2.50

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

  • Добавлена проверка на деление на ноль для предотвращения ошибок во время выполнения
  • Используется приведение типа (float) для обеспечения деления с плавающей точкой
  • Значение дроби отображается с двумя десятичными знаками с помощью %.2f

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

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

Обновите файл rational_expressions.c, чтобы улучшить вывод и обработку ошибок:

cd ~/project
nano rational_expressions.c

Измените код, включив расширенную обработку ошибок и форматирование результатов:

#include <stdio.h>
#include <stdlib.h>

int main() {
    int numerator, denominator;

    // Валидация ввода и обработка ошибок
    printf("Enter the numerator: ");
    if (scanf("%d", &numerator) != 1) {
        printf("Error: Неверный ввод числителя.\n");
        return 1;
    }

    printf("Enter the denominator: ");
    if (scanf("%d", &denominator) != 1) {
        printf("Error: Неверный ввод знаменателя.\n");
        return 1;
    }

    // Полная обработка деления на ноль
    if (denominator == 0) {
        printf("Error: Деление на ноль невозможно. Знаменатель должен быть отличным от нуля.\n");
        return 1;
    }

    // Вычисление и вывод результатов с различными форматами
    double fraction_value = (double)numerator / denominator;

    printf("\n--- Результаты рационального выражения ---\n");
    printf("Числитель:      %d\n", numerator);
    printf("Знаменатель:    %d\n", denominator);
    printf("Значение дроби: %.2f\n", fraction_value);
    printf("Целочисленное значение: %d\n", numerator / denominator);
    printf("Остаток:      %d\n", numerator % denominator);

    return 0;
}

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

gcc rational_expressions.c -o rational_expressions
./rational_expressions

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

Успешное вычисление:

Enter the numerator: 10
Enter the denominator: 4

--- Результаты рационального выражения ---
Числитель:      10
Знаменатель:    4
Значение дроби: 2.50
Целочисленное значение: 2
Остаток:      2

Деление на ноль:

Enter the numerator: 10
Enter the denominator: 0
Error: Деление на ноль невозможно. Знаменатель должен быть отличным от нуля.

Неверный ввод:

Enter the numerator: abc
Error: Неверный ввод числителя.

Основные улучшения:

  • Добавлена валидация ввода с использованием возвращаемого значения scanf()
  • Улучшены сообщения об ошибках для различных сценариев
  • Предоставлены несколько представлений результатов
  • Используется double для более точных вычислений с плавающей точкой

Резюме

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