var
s, s1, s2, s3, s4, tmp1, tmp2: string;
i, a, b, c, d, e, f: integer;
begin
Writeln('Введите строку: ');
Readln(s);
//
for var k := 1 to length(s) do
if (s[k] = '(') then
var j := k + 1;
while (s[j].IsDigit) do
tmp1 := tmp1 + s[j];
j := j + 1;
end;
var ch := s[j];
tmp2 := tmp2 + s[j];
case ch of
'+': begin s := s.Remove(k - 1, j - k + 1); s := s.Insert(k - 1, inttostr(tmp1.ToInteger + tmp2.ToInteger)); end;
'-': begin s := s.Remove(k - 1, j - k + 1); s := s.Insert(k - 1, inttostr(tmp1.ToInteger - tmp2.ToInteger)); end;
'*': begin s := s.Remove(k - 1, j - k + 1); s := s.Insert(k - 1, inttostr(tmp1.ToInteger * tmp2.ToInteger)); end;
'/': begin s := s.Remove(k - 1, j - k + 1); s := s.Insert(k - 1, inttostr(tmp1.ToInteger div tmp2.ToInteger)); end;
break;
for i := 1 to length(s) do
if (s[i] = '+') or (s[i] = '-') or (s[i] = '*') or (s[i] = '/') then
s1 := copy(s, 1, i - 1);
s2 := copy(s, i + 1, length(s));
c := i;
for i := 1 to length(s1) do
if (s1[i] = '+') or (s1[i] = '-') or (s1[i] = '*') or (s1[i] = '/') then
s3 := copy(s1, 1, i - 1);
s4 := copy(s1, i + 1, length(s1));
e := i;
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.
diya_1 = input("Введіть дію: ")
num_2 = int(input("Введіть 2 число: "))
diya_2 = input("Введіть дію: ")
num_3 = int(input("Введіть 3 число: "))
if diya_1 == '/':
if diya_2 == '/':
print(num_1,'/',num_2,'/',num_3,'= ', num_1/num_2/num_3)
if diya_2 == '*':
print(num_1,'*',num_2,'/',num_3,'= ', num_1*num_2/num_3)
if diya_2 == '-':
print(num_1,'-',num_2,'/',num_3,'= ', num_1-num_2/num_3)
if diya_2 == '-':
print(num_1,'+',num_2,'/',num_3,'= ', num_1+num_2/num_3)
if diya_1 == '+':
if diya_2 == '*':
print(num_1,'+',num_2,'*',num_3,'= ', num_1+num_2*num_3)
if diya_2 == '/':
print(num_1,'+',num_2,'/',num_3,'= ', num_1+num_2/num_3)
if diya_2 == '+':
print(num_1,'+',num_2,'+',num_3,'= ', num_1+num_2+num_3)
if diya_2 == '-':
print(num_1,'+',num_2,'-',num_3,'= ', num_1+num_2-num_3)
if diya_1 == '*':
if diya_2 == '+':
print(num_1,'*',num_2,'+',num_3,'= ', num_1*num_2+num_3)
if diya_2 == '-':
print(num_1,'*',num_2,'-',num_3,'= ', num_1*num_2-num_3)
if diya_2 == '/':
print(num_1,'*',num_2,'/',num_3,'= ', num_1*num_2/num_3)
if diya_2 == '*':
print(num_1,'*',num_2,'*',num_3,'= ', num_1*num_2*num_3)
if diya_1 == '/':
if diya_2 == '-':
print(num_1,'/',num_2,'/',num_3,'= ', num_1/num_2/num_3)
if diya_2 == '+':
print(num_1,'*',num_2,'+',num_3,'= ', num_1/num_2+num_3)
if diya_2 == '*':
print(num_1,'-',num_2,'*',num_3,'= ', num_1/num_2*num_3)
if diya_2 == '-':
print(num_1,'+',num_2,'-',num_3,'= ', num_1/num_2-num_3)
var
s, s1, s2, s3, s4, tmp1, tmp2: string;
i, a, b, c, d, e, f: integer;
begin
Writeln('Введите строку: ');
Readln(s);
//
for var k := 1 to length(s) do
begin
if (s[k] = '(') then
begin
var j := k + 1;
while (s[j].IsDigit) do
begin
tmp1 := tmp1 + s[j];
j := j + 1;
end;
var ch := s[j];
j := j + 1;
while (s[j].IsDigit) do
begin
tmp2 := tmp2 + s[j];
j := j + 1;
end;
case ch of
'+': begin s := s.Remove(k - 1, j - k + 1); s := s.Insert(k - 1, inttostr(tmp1.ToInteger + tmp2.ToInteger)); end;
'-': begin s := s.Remove(k - 1, j - k + 1); s := s.Insert(k - 1, inttostr(tmp1.ToInteger - tmp2.ToInteger)); end;
'*': begin s := s.Remove(k - 1, j - k + 1); s := s.Insert(k - 1, inttostr(tmp1.ToInteger * tmp2.ToInteger)); end;
'/': begin s := s.Remove(k - 1, j - k + 1); s := s.Insert(k - 1, inttostr(tmp1.ToInteger div tmp2.ToInteger)); end;
end;
break;
end;
end;
//
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.