Предмет: Информатика,
автор: Sayu
В чем ошибка? Пишет "Индекс находится вне границ массива" вроде 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.
В выделенной строке выдает ошибку
Ответы
Автор ответа:
0
задание не много не понятно, где что стоит, лучше сфотай
Автор ответа:
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] - последний символ, то на этой строчке пойдет обращение уже к несуществующему индексу массива.
Автор ответа:
0
надо опустить else j := j + 1 На строчку ниже
Автор ответа:
0
благодарю
Автор ответа:
0
и else убрать - там же в любом случае надо увеличить
Автор ответа:
0
f := 0 внести в цикл while и вроде работает
Автор ответа:
0
спасибо огромное, все работает х)
Похожие вопросы
Предмет: Математика,
автор: ag7066417
Предмет: Математика,
автор: iorshik20
Предмет: Другие предметы,
автор: Аноним
Предмет: Математика,
автор: eva133