
Дана строка символов содержащая текст и арифметические выражения вида a®b, где ®-один из знаков
+,-,*,/. Выписать все арифметические выражения и вычислить их значения

Ответы на вопрос

Программа работает при условии, что a и b не в скобках, и вещественные числа написаны с точкой, а не с запятой.
Код PascalABC.NET 3.2, сборка 1407 (19.03.2017):
Var
S,S1,S2:string;
a,b:real;
i,j:integer;
Begin
Write('Введите текст: ');
ReadLn(S);
S:=' '+S+' ';
For i:= 2 to Length(S)-1 do
Begin
S1:='';
S2:='';
if (S[i] = '+')or(S[i] = '-')or(S[i] = '*')or(S[i] = '/') then
if (S[i-1]in['0'..'9'])and(S[i+1]in['0'..'9']) then
Begin
For j:= i-1 downto 2 do
Case S[j] of
'0'..'9','.':S1:=S[j]+S1;
'+','-':
Begin
S1:=S1+S[j];
Break;
End;
else Break;
End;
For j:= i+1 to Length(S)-1 do
Case S[j] of
'0'..'9','.':S2:=S2+S[j];
'+','-':
Begin
S2:=S2+S[j];
Break;
End;
else Break;
End;
a:=StrToFloat(S1);
b:=StrToFloat(S2);
S1:=S1+S[i];
if S2[1] = '-' then S2:='('+S2+')';
S1:=S1+S2;
Case S[i] of
'+':WriteLn(S1+'=',a+b);
'-':WriteLn(S1+'=',a-b);
'*':WriteLn(S1+'=',a*b);
'/':WriteLn(S1+'=',a/b);
End;
End;
End;
End.
Пример:
Введите текст: jhdkjfsgbjsf 2+4sdfgsfd 39.8*178.78dghfg
2+4=6
39.8*178.78=7115.444



// PascalABC.NET 3.2, сборка 1417 от 28.03.2017
// Внимание! Если программа не работает, обновите версию!
begin
var s:=ReadlnString('Вводите:');
var m:=s.Matches('(\-{0,1}\d+(\.\d+){0,1}[\+\-\*\\]\d+(\.\d+){0,1})');
foreach var e in m do begin
var t:=e.Value;
Write(t,'=');
var op:=t.MatchValue('[\+\-\*\\]');
var i:=Pos(op,t);
var a:=t[:i].ToReal;
var b:=t[i+1:].ToReal;
case op[1] of
'+':Writeln(a+b);
'-':Writeln(a-b);
'*':Writeln(a*b);
'/':Writeln(a/b)
end
end
end.
Пример
Вводите: jhdkjfsgbj sf5+4sdfgs fd39.8*178.78dghfg
5+4=9
39.8*178.78=7115.444


Топ вопросов за вчера в категории Информатика







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