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. выдает: ошибка времени выполнения: индекс находился вне границ массива. подскажите, , что не так
В соответствии с заголовком цикла for n:=1 to Length(str) значение
Length(str) вычисляется перед первым входом в цикл и в дальнейшем не перевычисляется. Вы же в теле цикла посредством delete(str,n,1); строку укорачиваете. Вполне естественно, что в какой-то момент параметр цикла i в str[n] будет указывать за пределы её текущей длины.