Ребят,пожалуйста, помогите решить задачи в среде PASCAL: 1) Написать простенький калькулятор через ввод строки, который на входе получает строку вида "число1 знак операции число2" (например, "2 + 5" или "3 / 42"), а выводит зна...

Ребят,пожалуйста, помогите решить задачи в среде PASCAL: 1) Написать простенький калькулятор через ввод строки, который на входе получает строку вида "число1 знак операции число2" (например, "2 + 5" или "3 / 42"), а выводит значение этого выражения. Числа - любые целые неотрицательные, знаки - +. -. *, / 2) Написать программу, которая на входе получает строку под кодовым названием "загрязненное число" (вида "4km-549_ffb)5)6") состоящую из символов, а на выходе выводит удвоенное число из изначальной строки (а именно, 454956*2 = 909912)
Гость
Ответ(ы) на вопрос:
Гость
PascalABC.NET Версия 3.0. сборка 1041
Гость
// 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
Не нашли ответ?
Ответить на вопрос
Похожие вопросы