Написать подпрограмму, которая все слова вида "<натуральное число>+<натуральное число>" заменит на результат операции. Например: строка " undg 45+2 jf 100+1" должна быть преобразована в строку " undg 47 jf 101" Использовать заголовок: procedure Summ(var s: string); pascalABC
procedure Summ(var s: string); var i, j, num1, num2, result: integer; temp: string; begin i := 1; while i <= Length(s) do begin if (s[i] = '&') and (s[i+1] = 'lt;') then begin j := i + 4; temp := ''; while (j <= Length(s)) and (s[j] <> '+') do begin temp := temp + s[j]; Inc(j); end; num1 := StrToInt(temp);
Inc(j); // skip '+' temp := ''; while (j <= Length(s)) and (s[j] <> ' ') do begin temp := temp + s[j]; Inc(j); end; num2 := StrToInt(temp); result := num1 + num2; Delete(s, i, j - i); Insert(IntToStr(result), s, i); end; Inc(i);
end; end;
// Пример использования: var str: string; begin str := ' undg 45+2 jf 100+1'; Summ(str); WriteLn(str); // Output: " undg 47 jf 101" end.
procedure Summ(var s: string);
Inc(j); // skip '+'var
i, j, num1, num2, result: integer;
temp: string;
begin
i := 1;
while i <= Length(s) do
begin
if (s[i] = '&') and (s[i+1] = 'lt;') then
begin
j := i + 4;
temp := '';
while (j <= Length(s)) and (s[j] <> '+') do
begin
temp := temp + s[j];
Inc(j);
end;
num1 := StrToInt(temp);
temp := '';
while (j <= Length(s)) and (s[j] <> ' ') do
begin
temp := temp + s[j];
Inc(j);
end;
num2 := StrToInt(temp);
result := num1 + num2;
Delete(s, i, j - i);
Insert(IntToStr(result), s, i);
end;
Inc(i);
end;
end;
// Пример использования:
var
str: string;
begin
str := ' undg 45+2 jf 100+1';
Summ(str);
WriteLn(str); // Output: " undg 47 jf 101"
end.