Вопрос задан 10.03.2021 в 08:20. Предмет Информатика. Спрашивает Лысогор Анита.

Написать подпрограмму, которая все слова вида "<натуральное число>+<натуральное число>"

заменит на результат операции. Например: строка " undg 45+2 jf 100+1" должна быть преобразована в строку " undg 47 jf 101" Использовать заголовок: procedure Summ(var s: string); pascalABC
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Дунаева Юля.

// PascalABC.NET 3.4.2, сборка 1790 от 15.09.2018

// Внимание! Если программа не работает, обновите версию!

{$reference System.Data.dll}

uses System.Data;


procedure Summ(var s: string);

begin

 var o := new DataTable;

 s := s.RegexReplace('\d+\+\d+', m -> o.Compute(m.Value, '').ToString)

end;


begin

 var s := ReadlnString('Введите строку:');

 Summ(s);

 s.Println

end.


0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Вот пример подпрограммы на языке PascalABC, которая заменяет все слова вида "<натуральное число>+<натуральное число>" на результат операции:

pascal
procedure Summ(var s: string); var i, j, num1, num2, sum: Integer; word, numStr1, numStr2: string; begin i := 1; while i <= Length(s) do begin // Пропускаем пробелы и символы, не являющиеся буквами или цифрами while (i <= Length(s)) and (not (s[i] in ['a'..'z', 'A'..'Z', '0'..'9'])) do Inc(i); // Извлекаем слово j := i; while (j <= Length(s)) and (s[j] in ['a'..'z', 'A'..'Z', '0'..'9']) do Inc(j); word := Copy(s, i, j - i); // Проверяем, соответствует ли слово шаблону "<натуральное число>+<натуральное число>" if Pos('+', word) > 1 then begin numStr1 := Copy(word, 1, Pos('+', word) - 1); numStr2 := Copy(word, Pos('+', word) + 1, Length(word)); // Преобразуем строки в числа if TryStrToInt(numStr1, num1) and TryStrToInt(numStr2, num2) then begin // Выполняем операцию сложения sum := num1 + num2; // Заменяем слово на результат операции Delete(s, i, j - i); Insert(IntToStr(sum), s, i); // Сдвигаем индекс вправо на длину результата i := i + Length(IntToStr(sum)); // Продолжаем поиск со следующей позиции Continue; end; end; // Переходим к следующему слову i := j + 1; end; end;

Вы можете вызвать эту подпрограмму, передав строку в качестве параметра:

pascal
var str: string; begin str := 'undg 45+2 jf 100+1'; Summ(str); Writeln(str); end.

После выполнения кода, строка будет изменена на "undg 47 jf 101".

0 0

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

Последние заданные вопросы в категории Информатика

Задать вопрос