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