задача 9 урок 18
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
type nArr = array[1..50] of integer; sArr = array[1..50] of string; var s:string; num:nArr; znk:sArr; i,j,sum:integer; procedure vvod(s:string;var num:nArr; var znk: sArr; var g: integer); var s1:string; i,j:integer; begin writeln('vvedite stroku chisel i znakov:'); //readln(s); s:='1*2-3*4+5*6-8'; s1:=''; j:=1; for i:=1 to length(s)+1 do begin if (s[i]>='0') and (s[i]<='9') then s1:=s1+s[i] //строка цифр else begin val(s1,num[g]); inc(g); znk[g]:=s[i]; inc(g); s1:=''; end; end; end; procedure schet(var num:nArr; var znk: sArr; var g: integer); begin for i:=1 to g do begin if znk[i] = '-' then num[i+1]:= num[i+1] * (-1) else if znk[i] = '*' then begin num[i+1]:= num[i-1] * num[i+1]; num[i-1]:= 0; end; end; Sum:= 0; end; procedure summa(var num:nArr; var g: integer); begin for i:= 1 to j do Sum:= Sum + num[i]; Writeln(Sum); end; begin vvod(s,num, znk,j); schet(num, znk,j); summa (num,j); readln(); end.
- Log in to post comments
- 806 reads
vedro-compota
Sun, 01/09/2022 - 13:23
Permalink
засчитано
засчитано
_____________
матфак вгу и остальная классика =)