Вывести значение выражения (простейший калькулятор) - C (СИ)
Формулировка задачи:
Согласно строке, изображающая арифметическое выражение вида «<цифра> ± <цифра> ± ... ± <цифра>», где на месте знака операции «±» находится символ «+» или «-» (например, «4 + 7 -2-8 »), вывести значение выражения (целое число).
Решение задачи: «Вывести значение выражения (простейший калькулятор)»
textual
Листинг программы
#include <stdio.h> #include <ctype.h> int calc(const char* s){ int st[2] = {0}; char m = 0; int i = 0; do { if(isdigit(*s)){ if(i < 2) st[i++] = (int)(*s - '0'); } else if(*s == '+') m = '+'; else if(*s == '-') m = '-'; if((i > 1) && (m != 0)){ switch(m){ case '+': st[0] += st[1]; break; case '-': st[0] -= st[1]; break; } --i; m = 0; } } while(*s++); return st[0]; } int main(void){ char s[] = "5 - 2 + 3 - 9 + 1 + 9"; printf("result: %d\n", calc(s)); return 0; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с функциями ввода/вывода и строками.
- Определяем функцию
calc
, которая принимает на вход строку с математическим выражением и выполняет его вычисление. - Внутри функции
calc
инициализируем массивst
двумя нулями, переменнойm
присваиваем значение 0, а переменнойi
значение 0. - Далее в цикле
do-while
считываем каждый символ из входной строки. - Если символ является цифрой, то преобразуем его в целое число и добавляем в соответствующий элемент массива
st
. - Если символ является оператором сложения
+
, то сохраняем его в переменнойm
. - Если символ является оператором вычитания
-
, то сохраняем его в переменнойm
. - Если в массиве
st
больше одного элемента и имеется оператор (m != 0
), то выполняем соответствующую операцию сложения или вычитания в соответствии с операторомm
. - Уменьшаем значение
i
на единицу, чтобы пропустить текущий элемент массиваst
при следующей итерации цикла. - Устанавливаем значение
m
равным 0, чтобы сигнализировать о том, что следующий элемент массиваst
не является оператором. - В цикле
do-while
продолжаем обработку символов до тех пор, пока не достигнем конца строки. - Возвращаем результат вычисления математического выражения, который хранится в первом элементе массива
st
. - В функции
main
создаем строкуs
, содержащую математическое выражение. - Вызываем функцию
calc
с аргументомs
и выводим результат на экран. - Завершаем программу с возвращаемым значением 0, что означает успешное выполнение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д