В чем ошибка? Пишет "Индекс находится вне границ массива" вроде 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.

В выделенной строке выдает ошибку

2

Ответы и объяснения

2014-03-16T20:01:05+04:00
Задание не много не понятно, где что стоит, лучше сфотай
Лучший Ответ!
2014-03-16T20:05:25+04:00
Смотрите, в этом цикле:
while j<=length(s) do   
J может быть равно длине строки. А внутри цикла есть вот это:
  if s[j+i]<>s1[i] then f:=1;
То есть если s[J] - последний символ, то на этой строчке пойдет обращение уже к несуществующему индексу массива.
надо опустить else j := j + 1 На строчку ниже
благодарю
и else убрать - там же в любом случае надо увеличить
f := 0 внести в цикл while и вроде работает
спасибо огромное, все работает х)