Строка содержит правильное арифметическое выражение. Подсчитать результат, выполняя операции в порядке их следования - 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; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Определяем функцию, которая подсчитывает количество цифр в числе
- Определяем функцию, которая выполняет арифметическое выражение
- Проверяем корректность ввода и возвращаем 0 при ошибке
- Пропускаем число, которое уже обработали и переходим к следующему символу в строке
- Пока в строке есть допустимые для обработки символы, то выполняем операции в соответствии с этими символами
- Возвращаем результат вычисления
- Выводим результат на экран
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д