Задача 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
program U17Z9;
var s,str: string;
i,a,b,d,code: integer;
f,h:boolean;
begin
writeln('vvedite posledovatelnost');
readln(s);
str:='';
a:=1;
b:=1;
d:=0;
h:=false;
f:=false;
for i:=1 to length(s)+1 do
begin
if (s[i]>='0') and (s[i]<='9') then
str:=str+s[i]
else
begin
val(str,a,code);
str:='';
if (f) then
begin
a:=a*(-1);
f:=false;
end;
if (h) then
begin
a:=a*b;
b:=1;
h:=false;
end;
if (s[i]='*') then
begin
b:=a;
h:=true;
end
else
begin
if (s[i]='-') then
f:=true;
d:=d+a;
end;
end;
end;
writeln(d);
readln();
end. - Log in to post comments
- 4068 reads
vedro-compota
Wed, 09/29/2021 - 19:52
Permalink
разбить на процедуры и
разбить на процедуры и функции
_____________
матфак вгу и остальная классика =)
vedro-compota
Wed, 09/29/2021 - 20:00
Permalink
сделать решение на процедурах
сделать решение на процедурах с двумя массивами
_____________
матфак вгу и остальная классика =)
slavina036
Sat, 10/02/2021 - 14:52
Permalink
program U17Z9;
program U17Z9; var znaki: array [1..50] of string; number: array [1..50] of integer; s,n: string; i,code,d,j,sum: integer; begin writeln('vvedite posledovatelnost'); readln(s); n:=''; j:=1; for i:=1 to length(s) do begin if (s[i]>='0') and (s[i]<='9') then n:=n+s[i] else begin val(n,number[j],code); j:=j+1; znaki[j]:=s[i]; j:=j+1; n:=''; end; end; val(n,number[j],code); for i:=1 to j do begin if (znaki[i]='-') then number[i+1]:=number[i+1]*(-1); if (znaki[i]='*') then begin number[i+1]:=number[i-1]*number[i+1]; number[i-1]:=0; end; end; sum:=0; for i:=1 to j do sum:=sum+number[i]; write('result = ',sum); readln(); end.slavina036
Sat, 10/02/2021 - 20:33
Permalink
program U17Z9;
program U17Z9; type myarr = array [1..50] of string; youarr = array [1..50] of integer; var znaki: myarr; number: youarr; s: string; i,j: integer; procedure getData(str: string; var numb:youarr; var znak:myarr; var q:integer); var n: string; code: integer; begin n:=''; q:=1; for i:=1 to length(str) do begin if (str[i]>='0') and (str[i]<='9') then n:=n+str[i] else begin val(n,numb[j],code); q:=q+1; znak[q]:=str[i]; q:=q+1; n:=''; end; end; val(n,numb[q],code); end; procedure umnozhenie(var num:youarr; var zna:myarr; var p:integer); begin for i:=1 to p do begin if (zna[i]='-') then num[i+1]:=num[i+1]*(-1); if (zna[i]='*') then begin num[i+1]:=num[i-1]*num[i+1]; num[i-1]:=0; end; end; end; procedure summa(num:youarr; o:integer); var sum: integer; begin sum:=0; for i:=1 to o do sum:=sum+number[i]; write('result = ',sum); end; begin writeln('vvedite posledovatelnost'); readln(s); getData(s,number,znaki,j); umnozhenie(number,znaki,j); summa(number,j); readln(); end.vedro-compota
Sun, 10/03/2021 - 13:36
Permalink
решение засчитано
решение засчитано
_____________
матфак вгу и остальная классика =)