Задача 9 Урок 17
Primary tabs
Задана последовательность символов, имеющая следующий вид: p1q1p2q2p3...qn–1pn , где pi — цифра, а qi — знак арифметического действия из набора {+, –, *}. Вычислите значение выражения, предполагая, что действия выполняются согласно правилам арифметики.
- Входные данные: На вход программе подается строка указанного вида, состоящая не более чем из 9 чисел, разделенных символами арифметических операций.
- Выходные данные: Выведите значение арифметического выражения.
Примеры:
Входные данные Результат 5+2 7 1-2*5+2 -7 5*6+7-3*2+11 42 5*6+7-3*2*3+11 30(задачка взята из книги Е. В. Андреевой)
var s, n: string; i, j, k, o, int, l, acc, u, pos: integer; a: array [1..9] of integer; b: array [1..8] of char; begin write('Введите арифметическое выражение: '); readln(s); l := length(s); for i := 1 to l + 1 do begin val(s[i], int, o); if o = 0 then n += s[i] else begin j += 1; val(n, int, o); a[j] := int; n := ''; if s[i] = '*' then u += 1; if i < l then begin k += 1; b[k] := s[i]; end; end; end; while u > 0 do begin for i := 1 to 8 do if b[i] = '*' then begin pos := i; break; end; a[pos + 1] := a[pos] * a[pos + 1]; for i := pos to j do a[i] := a[i + 1]; for i := pos to k do b[i] := b[i + 1]; k -= 1; j -= 1; u -= 1; end; acc := a[1]; for i := 2 to j do if b[i - 1] = '+' then acc += a[i] else acc -= a[i]; writeln('Результат вычисления: ', acc); readln(); end.
- Log in to post comments
- 725 reads