задача 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
- 1103 reads
vedro-compota
Sun, 01/09/2022 - 13:23
Permalink
засчитано
засчитано
_____________
матфак вгу и остальная классика =)