
Найдите ошибки пж Паскаль 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.

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

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



В данном фрагменте кода на языке Паскаль содержится несколько ошибок. Давайте разберем их по порядку:
Ошибка в использовании
to
в циклеfor
: В Паскале индексация элементов начинается с 1, а не с 0. Поэтомуfor i to length(s)
приведет к выходу за пределы строки.Ошибка в условии
if
: Условиеif copy(s,i,5)='минус'
имеет две ошибки. Первая ошибка - отсутствует оператор сравнения=
после'минус'
, и вместо этого используется точка с запятой. Вторая ошибка - неверное использование функцииcopy
. Эта функция возвращает подстроку из строки, а не проверяет, равна ли она заданной строке.Ошибка в вызове процедуры
delete
: Название процедуры должно быть написано с двумяe
, но в коде она написана с однимe
.Неправильное использование
writeln
: Функцияfn
не должна выводить никакого значения, она лишь изменяет переданную строкуs
.
Исправленный код:
pascalprocedure 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
, чтобы корректно обрабатывать изменения длины строки в процессе выполнения процедуры.


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







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