Вопрос задан 22.07.2023 в 02:49. Предмет Информатика. Спрашивает Прутян Даниил.

Найдите ошибки пж Паскаль procedure fn(s:string);var i:integer;beginreadln(s);for i to length(s)

dobeginif copy(s,i,5)='минус';thendelite(s,i,5);insert('плюс',s,i);end;end;var b:string;beginwrite(fn(b));end.
0 0
Перейти к ответам

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

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

function fn(s:string):string;

var i:integer;

begin

i:=pos('минус',s);

while i>0 do

begin

delete(s,i,5);

insert('плюс',s,i);

i:=pos('минус',s);

end;

fn:=s;

end;

var b:string;

begin

readln(b);

write(fn(b));

end.

Пример:

минус + плюс - минус = 0

плюс + плюс - плюс = 0

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

В данном фрагменте кода на языке Паскаль содержится несколько ошибок. Давайте разберем их по порядку:

  1. Ошибка в использовании to в цикле for: В Паскале индексация элементов начинается с 1, а не с 0. Поэтому for i to length(s) приведет к выходу за пределы строки.

  2. Ошибка в условии if: Условие if copy(s,i,5)='минус' имеет две ошибки. Первая ошибка - отсутствует оператор сравнения = после 'минус', и вместо этого используется точка с запятой. Вторая ошибка - неверное использование функции copy. Эта функция возвращает подстроку из строки, а не проверяет, равна ли она заданной строке.

  3. Ошибка в вызове процедуры delete: Название процедуры должно быть написано с двумя e, но в коде она написана с одним e.

  4. Неправильное использование writeln: Функция fn не должна выводить никакого значения, она лишь изменяет переданную строку s.

Исправленный код:

pascal
procedure fn(var s: string); var i: integer; begin i := 1; while i <= length(s) do begin if copy(s, i, 5) = 'минус' then begin delete(s, i, 5); insert('плюс', s, i); i := i + 4; // Уменьшаем счетчик, чтобы пропустить вставленное слово end; i := i + 1; // Переходим к следующему символу в строке end; end; var b: string; begin readln(b); fn(b); writeln(b); // Выводим измененную строку после обработки процедурой fn end.

Обратите внимание, что я добавил var перед параметром s в объявлении процедуры fn, чтобы указать, что переменная s будет изменяемой в процедуре и изменения будут отражаться на переданном аргументе b. Также я заменил цикл for на while, чтобы корректно обрабатывать изменения длины строки в процессе выполнения процедуры.

0 0

Похожие вопросы

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

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

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