Уровень C. Напишите программу, которая вычисляет выражение, состоящее из трех чисел и двух знаков (допускаются знаки «+», «–», «*» и «/»). Выражение вводится как символьная строка, все числа целые. Операция «/» выполняется как ...

Уровень C. Напишите программу, которая вычисляет выражение, состоящее из трех чисел и двух знаков (допускаются знаки «+», «–», «*» и «/»). Выражение вводится как символьная строка, все числа целые. Операция «/» выполняется как целочисленное деление (div). Пример: Введите выражение: 12*3+45 Ответ: 81 Выполняетски в паскале. Тема: Преобразование строка-число Со спецификацией отмечу как лучшее
Гость
Ответ(ы) на вопрос:
Гость
// PascalABC.NET 3.2, сборка 1417 от 28.03.2017 // Внимание! Если программа не работает, обновите версию! function Res(a:integer;op:char;b:integer):integer; begin   case op of   '+':Result:=a+b;   '-':Result:=a-b;   '*':Result:=a*b;   '/':Result:=a div b   end end; begin   var s:=ReadlnString('Вводите:');   var p:=s.Matches('(((\-)?\d+)|[\+\-\*\/])').ToArray;   if p.Count<>5 then Writeln('Ошибка!')   else begin     var op1:=p[1].Value[1];     var op2:=p[3].Value[1];     var a:=p[0].Value.ToInteger;     var b:=p[2].Value.ToInteger;     var c:=p[4].Value.ToInteger;     if (op1 in ['+','-']) and (op2 in ['*','/']) then       Writeln('='+Res(Res(b,op2,c),op1,a))     else Writeln('='+Res(Res(a,op1,b),op2,c))     end end. Примеры Вводите: -4--3--2 =1 Вводите: 12*3+45 =81 Вводите: 45+12*3 =81 Вводите: -26/13--5 =3
Не нашли ответ?
Ответить на вопрос
Похожие вопросы