Вычислите значение выражения, предполагая, что действия выполняются согласно правилам арифметики - C (СИ)
Формулировка задачи:
народ выручайте, беда, дали задачу вроде простенькая а справится не могу, аж стыдно.
Дана последовательность символов, имеющая следующий вид: p1q1p2q2p3qn–1pn ,
где pi — цифра, а qi — знак арифметического действия из набора {+, –, *}.
Вычислите значение выражения, предполагая, что действия выполняются
согласно правилам арифметики.
Входные данные
На вход программе подается строка указанного вида, состоящая не более чем из
9 цифр, разделенных символами арифметических операций.
Выходные данные
Выведите значение арифметического выражения.
тут же нашел её на паскале, но чёт это мне не помогло ибо алгоритм я и до этого представлял.
Вычислить значение арифметического выражения.
Решение задачи: «Вычислите значение выражения, предполагая, что действия выполняются согласно правилам арифметики»
textual
Листинг программы
int main() { setlocale( LC_ALL,"Russian" ); char str[20]; // сюда исходную строку int arr[20]; // сюда числа и операции char c; int i, is, ia; // индексы printf("Введите строку цифр и операций: "); scanf("%s",str); // strcpy(str,"1+2*3+4*5+9"); ia=0; // индекс элемента, куда пишем число/операцию // сканируем строку, заполняем arr for (is=0; str[is];++is) { c=str[is]; switch(c) { case '+': case '-': case '*': arr[ia++]=c; break; default: if (ia>0 && arr[ia-1]=='*') // умножаем то, что есть, на очередное число arr[--ia-1]*=str[is]-'0'; else arr[ia++]=str[is]-'0'; } } // остались + и - i=arr[0]; // результат for (is=1;is<ia;is+=2) { if (arr[is]=='+') i+=arr[is+1]; else i-=arr[is+1]; } printf("%d",i); return 0; }
Объяснение кода листинга программы
В этом коде:
- Устанавливается локальная настройка для вывода русских символов.
- Вводятся две массивы: один для хранения строки, другой для хранения чисел и операций.
- Вводится символ, который используется как разделитель между числами и операциями.
- Происходит проход по строке, разделенной по символу, используя цикл for.
- Для каждого символа в строке выполняется проверка на операцию (сложение, вычитание или умножение) и записывается в соответствующий массив.
- Если символ не является операцией, он преобразуется в число и записывается в массив.
- Если в массиве есть предыдущее число и текущий символ является знаком умножения, то выполняется умножение.
- Происходит проход по массиву с числами, начиная с первого элемента, и выполняется последовательное сложение или вычитание в зависимости от операции.
- Выводится результат.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д