Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2009, 14:37   #1
Work Group
 
Регистрация: 17.11.2009
Сообщений: 9
Восклицание while

можете помочь сделать прогу через while для избежания break
задача-найти n-ой индекс вхождения подстроки в строку

Код:
uses crt;
var st,p:string;
i,j,n,nn,t,count:integer;
f:boolean;
begin
 clrscr;
 write('строка S')
 readln(st);
 write('подстрока P')
 readln(p);
 write('ââåäèòå N: ');
 readln(n);
 count:=0;

 for i:=1 to length(st)-length(p)+1 do
 begin
   f:=true;
   t:=i;
   for j:=1 to length(p) do
     begin
       if st[t]<>p[j] then f:=false;
       inc(t);
     end;
   if f then
     begin
      inc(count);
      nn:=i;
     end;
  if count=n then break;
 end;

 //for i:=1 to length(st) do
 //writeln(st[i]);
 
 if count=n then writeln(nn) else write('0');
 readln;

end.
Work Group вне форума Ответить с цитированием
Старый 24.11.2009, 14:45   #2
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

pos() не подойдёт?
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 24.11.2009, 14:45   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
 count:=0;
 i:=1; While (count=n)AND(i<=(length(st)-length(p)+1)) do begin
   f:=true;
   t:=i;
   for j:=1 to length(p) do
     begin
       if st[t]<>p[j] then f:=false;
       inc(t);
     end;
   if f then
     begin
      inc(count);
      nn:=i;
     end;
  inc(i);
 end;
Устроит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.11.2009, 15:17   #4
Work Group
 
Регистрация: 17.11.2009
Сообщений: 9
По умолчанию

ошибка нашёл
Код:
i:=1; While (count<>n)AND(i<=(length(st)-length(p)+1)) do begin
Work Group вне форума Ответить с цитированием
Старый 28.11.2009, 22:54   #5
C71Me
 
Аватар для C71Me
 
Регистрация: 25.01.2009
Сообщений: 7
По умолчанию

Замени в конце:
Код:
if count<>n then
 begin
  if count=n then writeln(nn) else write('0');
    readln
  else
end;

end.
C71Me вне форума Ответить с цитированием
Старый 28.11.2009, 22:57   #6
C71Me
 
Аватар для C71Me
 
Регистрация: 25.01.2009
Сообщений: 7
По умолчанию

Вру, тебе нуна из цикла for выйти..над подумать..
C71Me вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц