В
Все
М
Математика
О
ОБЖ
У
Українська мова
Х
Химия
Д
Другие предметы
Н
Немецкий язык
Б
Беларуская мова
М
Музыка
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
У
Українська література
Р
Русский язык
Ф
Французский язык
П
Психология
О
Обществознание
А
Алгебра
М
МХК
Г
География
И
Информатика
П
Право
А
Английский язык
Г
Геометрия
Қ
Қазақ тiлi
Л
Литература
И
История
ivanova1987lena
ivanova1987lena
03.07.2020 14:01 •  Информатика

Уровень c. напишите программу, которая вычисляет выражение, состоящее из трех чисел и двух знаков (допускаются знаки «+», «–», «*» и «/»). выражение вводится как символьная строка, все числа целые. операция «/» выполняется как целочисленное деление (div). пример: введите выражение: 12*3+45 ответ: 81 выполняетски в паскале. тема: преобразование строка-число со спецификацией отмечу как лучшее

Показать ответ
Ответ:
1232955
1232955
05.10.2020 22:37
// 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
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота