Задача 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
- 805 reads