Решить в среде pascal: 1) написать простенький калькулятор через ввод строки, который на входе получает строку вида "число1 знак операции число2" (например, "2 + 5" или "3 / 42"), а выводит значение этого выражения. числа - любые целые неотрицательные, знаки - +. -. *, / 2) написать программу, которая на входе получает строку под кодовым названием "загрязненное число" (вида "4km-549_ffb)5)6") состоящую из символов, а на выходе выводит удвоенное число из изначальной строки (а именно, 454956*2 = 909912)

Всеникизаняты11 Всеникизаняты11    2   13.07.2019 22:50    2

Ответы
makskot69 makskot69  03.10.2020 03:37
// PascalABC.NET 3.0, сборка 1128
uses
  System.Text.RegularExpressions;
 
begin
  var s:='     - 32    / - 21  ';
  s:=RegEx.Replace(s,'\s','');
  var a:=RegEx.Matches(s,'(-{0,1}\d+)|[\+\-\*/]');
  var n:=a.Count;
  var x,y:integer;
  var c:char;
  case n of
  3:begin
    x:=StrToInt(a[0].ToString); y:=StrToInt(a[2].ToString);
    c:=a[1].ToString[1]
    end;
  2:begin
    x:=StrToInt(a[0].ToString); var s1:=a[1].ToString;
    c:=s1[1]; s1[1]:='0'; y:=StrToInt(s1)
    end;
  else
    begin Writeln('Недопустимое выражение'); exit end
  end;
  WriteFormat('{0} {1} {2} = ',x,c,y);
  case c of
  '+':Writeln(x+y);
  '-':Writeln(x-y);
  '*':Writeln(x*y);
  '/':Writeln(x/y)
  end
end.

Тестовое решение:
-32 / -21 = 1.52380952380952

// PascalABC.NET 3.0, сборка 1128
begin
  var s:='4km-549_ffb)5)6';
  var t:=s.Where(x->x in ['0'..'9']).JoinIntoString('');
  var n:int64;
  if TryStrToInt64(t,n) then Writeln(2*n)
  else Writeln('Не удалось выделить число')
end.

Тестовое решение:
909912
ПОКАЗАТЬ ОТВЕТЫ
tatka22345 tatka22345  03.10.2020 03:37
PascalABC.NET Версия 3.0. сборка 1041
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика