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

Program z2; var str: string; n: integer; b: byte; begin readln(str); for n: =1 to length(str) do begin b: =ordansi(str[n]); if (b< 192) and (b< > 32) then delete(str,n,1); end; writeln(str); end. выдает: ошибка времени выполнения: индекс находился вне границ массива. подскажите, , что не так

Показать ответ
Ответ:
Myziki
Myziki
07.10.2020 19:14
"Не так" тут не понятый до конца механизм работы цикла for.
В соответствии с заголовком цикла for n:=1 to Length(str) значение
Length(str) вычисляется перед первым входом в цикл и в дальнейшем не перевычисляется. Вы же в теле цикла посредством delete(str,n,1); строку укорачиваете. Вполне естественно, что в какой-то момент параметр цикла i в str[n] будет указывать за пределы её текущей длины.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота