В чем ошибка? Пишет "Индекс находится вне границ массива" вроде 17 сторока
program test;
uses crt;
var s, s1:string;
n, f, i, j, len:integer;
begin
clrscr;
writeln('введите предложение');
readln(s);
s:=' '+s;
writeln('ведите приставку');
readln(s1);
len:=length(s1);
n:=0;
f:=0; while j<=length(s) do
begin
if s[j]=' ' then
begin
for i:=1 to len do
if s[j+i]<>s1[i] then f:=1;
if f=0 then begin n:=n+1; j:=j+len; end
else j:=j+1; end;
end;
writeln('n=',n);
readln;
end.
В выделенной строке выдает ошибку
Ответы на вопрос
Ответил Kiyanitsinaaaa
0
задание не много не понятно, где что стоит, лучше сфотай
Ответил emblerik
0
Смотрите, в этом цикле:
while j<=length(s) do
J может быть равно длине строки. А внутри цикла есть вот это:
if s[j+i]<>s1[i] then f:=1;
То есть если s[J] - последний символ, то на этой строчке пойдет обращение уже к несуществующему индексу массива.
while j<=length(s) do
J может быть равно длине строки. А внутри цикла есть вот это:
if s[j+i]<>s1[i] then f:=1;
То есть если s[J] - последний символ, то на этой строчке пойдет обращение уже к несуществующему индексу массива.
Ответил emblerik
0
надо опустить else j := j + 1 На строчку ниже
Ответил Sayu
0
благодарю
Ответил emblerik
0
и else убрать - там же в любом случае надо увеличить
Ответил emblerik
0
f := 0 внести в цикл while и вроде работает
Ответил Sayu
0
спасибо огромное, все работает х)
Новые вопросы
Литература,
2 года назад
Литература,
10 лет назад
Математика,
10 лет назад
Биология,
10 лет назад
Химия,
10 лет назад