Урок 17 (решенная задача номер 9)
Primary tabs
Урок 17 (решенная задача номер 9)
Задана последовательность символов, имеющая следующий вид: 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 mastring = array[1..10] of string;
mascisl = array[1..10] of integer;
var stroka : string;
procedure cubik(h:string; var cismas:mascisl; var znakmas:mastring);
var g : string;
v, c, i, s, j, k : integer;
begin
s := 1;
j := 1;
k := 0;
for i := 1 to length(h) do
begin
if (h[i] >= '0') and (h[i] <= '9') or (h[i] = '-') then
g := g + h[i];
if (h[i+1] = '+') or (h[i+1] = '-') or (h[i+1] = '*')
or (i = length(h)) then
begin
val(g, cismas[s], c);
Inc(s);
g := '';
Inc(k);
end;
if (h[i] = '+') or (h[i] = '-') then
begin
znakmas[j] := '+';
Inc(j);
end
else if (h[i] = '*') then
begin
znakmas[j] := '*';
Inc(j);
end;
end;
i := 0;
end;
function rubika(hi : string): integer;
var i, l : integer;
bydytliechodeystv : boolean;
f : mascisl;
y : mastring;
begin
bydytliechodeystv := false;
i := 1;
result := 1;
cubik(hi, f, y);
while (i < high(f)) do
begin
if (y[i] = '*') then
begin
f[i] := f[i] * f[i+1];
l := i;
i := 1;
result := result * f[l];
while (f[l] <> 0) do
begin
f[l+1] := f[l+2];
y[l] := y[l+1];
Inc(l);
end;
end;
Inc(i);
end;
i := 0;
for i := 1 to high(y) do
begin
if (y[i] = '+') then
begin
if (bydytliechodeystv = false) then
begin
result := f[1];
bydytliechodeystv := true;
end;
result := result + f[i+1];
end;
end;
end;
begin
stroka := '10+12*33*56-72-57*31-46';
write(rubika(stroka));
end.
- Log in to post comments
- 2149 reads
vedro-compota
Sun, 10/18/2020 - 20:41
Permalink
решение засчитано
решение засчитано
_____________
матфак вгу и остальная классика =)