Строка содержит правильное арифметическое выражение. Подсчитать результат, выполняя операции в порядке их следования - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток всем. прошу помочь с задачей: Строка – это правильное арифметическое выражение, содержащее только натуральные числа и знаки арифметических операций между ними (+, -, *, /). Подсчитать результат, выполняя арифметические операции в порядке их следования. Входные данные: 5*3-9/3 Выходные данные: 2

Решение задачи: «Строка содержит правильное арифметическое выражение. Подсчитать результат, выполняя операции в порядке их следования»

textual
Листинг программы
#include <stdio.h>
#include <ctype.h>
 
unsigned digits(int number) {
    return number ? (1 + digits(number / 10)) : 0;
}
 
float expr(const char str[]) {
    float res;
    int num;
    char cmd;
 
    if (sscanf(str, "%d", &num) != 1) {
        return 0;
    }
 
    str += digits(num);
    res = num;
 
    while (sscanf(str, "%c%d", &cmd, &num) == 2) {
        switch (cmd) {
            case '+':
                res += num;
                break;
            case '-':
                res -= num;
                break;
            case '*':
                res *= num;
                break;
            case '/':
                res /= num;
                break;
        }
        str += digits(num) + 1;
    }
 
    return res;
}
 
int main() {
    printf("%.2f", expr("5*3-9/3"));
 
    return 0;
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы
  2. Определяем функцию, которая подсчитывает количество цифр в числе
  3. Определяем функцию, которая выполняет арифметическое выражение
  4. Проверяем корректность ввода и возвращаем 0 при ошибке
  5. Пропускаем число, которое уже обработали и переходим к следующему символу в строке
  6. Пока в строке есть допустимые для обработки символы, то выполняем операции в соответствии с этими символами
  7. Возвращаем результат вычисления
  8. Выводим результат на экран

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5
Похожие ответы