program z1;
var s:string;
i,L,maxL:integer;
begin
readln(s);
L:=0;
maxL:=0;
for i:=0 to length (s) do
if s[i] in ['A','B','E','F'] then
begin
L:=L+1;
if L>maxL then
maxL:=L;
end
else
L:=0;
writeln(maxL);
end.
Asked
Active
Viewed 51 times
2 Answers
2
Индексация строк в Паскале начинается с единицы:
for i := 1 to Length(s) do
1
Ошибка кроется в этой строчке:
for i:=0 to length (s) do
Почему так происходит:
Пусть есть строка "АБВ"
У нее есть символы с номерами 0 ("А"), 1 ("Б"), 2 ("В")
А длина для нее 3
То есть вы внутри цикла пытаетесь обратиться к символу с номером 3, а есть только номер 2. Потому и
Индекс находится вне границ массива
Исправляется легко:
for i:=0 to (length (s) - 1) do
UPD:
Непосредственно Паскалем не занимался уже оооочень давно, так что, ориентируясь на другой ответ, правильным будет такое решение:
for i:=1 to length (s) do
Alex_Skvortsov
- 3,750