Задание 4,5.Заранее спасибо

Приложения:

Ответы

Ответ дал: arina11234
0

Ответ:

Вот что у меня есть: ( я сделала, чтобы вычисляло выражение их 3 чисел и двух знаков, но не получается сделать так, чтобы учитывались круглые скобки )

var s, s1, s2, s3, s4: string;

i, a, b, c, d, e, f: integer;

begin

Writeln('Введите строку: ');

Readln(s);

for i := 1 to length(s) do

begin

if (s[i] = '+') or (s[i] = '-') or (s[i] = '*') or (s[i] = '/') then

begin

s1 := copy(s, 1, i-1);

s2 := copy(s, i+1, length(s));

c := i;

end;

end;

for i := 1 to length(s1) do

begin

if (s1[i] = '+') or (s1[i] = '-') or (s1[i] = '*') or (s1[i] = '/') then

begin

s3 := copy(s1, 1, i-1);

s4 := copy(s1, i+1, length(s1));

e := i;

end;

end;

Val(s3, a, d);

Val(s4, b, d);

Val(s2, f, d);

if (s[e] = '/') and (s[c] = '/') then Writeln((a div b) div f);

if (s[e] = '/') and (s[c] = '*') then Writeln((a div b) * f);

if (s[e] = '+') and (s[c] = '*') then Writeln(a + (b * f));

if (s[e] = '*') and (s[c] = '*') then Writeln(a * b * f);

if (s[e] = '+') and (s[c] = '/') then Writeln(a + (b div f));

if (s[e] = '*') and (s[c] = '+') then Writeln((a * b) + f);

if (s[e] = '/') and (s[c] = '+') then Writeln((a div b) + f);

if (s[e] = '*') and (s[c] = '/') then Writeln((a * b) div f);

if (s[e] = '+') and (s[c] = '+') then Writeln(a + b + f);

if (s[e] = '-') and (s[c] = '-') then Writeln(a - b - f);

if (s[e] = '+') and (s[c] = '-') then Writeln(a + b - f);

if (s[e] = '-') and (s[c] = '+') then Writeln(a - b + f);

if (s[e] = '*') and (s[c] = '-') then Writeln((a * b) - f);

if (s[e] = '/') and (s[c] = '-') then Writeln((a div b) - f);

if (s[e] = '-') and (s[c] = '*') then Writeln(a- (b * f));

if (s[e] = '-') and (s[c] = '/') then Writeln(a - (b div f));

end.

Вас заинтересует