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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.10.2012, 20:47   #1
Aina Utebekova
Новичок
Джуниор
 
Аватар для Aina Utebekova
 
Регистрация: 08.10.2012
Сообщений: 9
Вопрос поиск подстроки в строке

Надо найти последовательность "abcd" в строке, но строка бесконечная и там нет такой последовательности. Вопрос когда закончится программа? Например: строка состоит из букв англ алфавита в обратном порядке и она бесконечно повторяется "zyxwv...fedcbazyx...dcba....". Программа может закончиться если найдет "abcd", а если нет "abcd" то когда переберет все символы в строке. Но так как последовательности нет и перебрать все символы тоже невозможно, то когда закончится программа??? Пожалуйста помогите!
Aina Utebekova вне форума Ответить с цитированием
Старый 08.10.2012, 20:52   #2
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Думаю когда память закончится. А вообще бесконечных строк не бывает. Разве что стек замкнутый, но тогда получится бесконечный цикл, программа зависнет... Откуда такой вопрос вообще?
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 08.10.2012, 20:53   #3
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

либо когда закончится ОЗУ.. или же когда отключат электричество... ))
по поводу ОЗУ зависит от алгоритма конечно... может и не закончится...

а так... по сути будет что то наподобие зацикливания...
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 08.10.2012, 20:59   #4
Aina Utebekova
Новичок
Джуниор
 
Аватар для Aina Utebekova
 
Регистрация: 08.10.2012
Сообщений: 9
По умолчанию

это нам препод задал такой вопрос. если отвечу до завтра 4 если нет 3. и еще он говорит что ответ прост. только надо увидеть его. ЭТО ВОПРОС НА ЛОГИКУ
Aina Utebekova вне форума Ответить с цитированием
Старый 08.10.2012, 21:10   #5
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

когда юзеру надоест искать :-)
как вариант, если строка перебирается счетчиком вроде
while not <участок найден> do inc(i);
то тогда, когда произойтет выход за пределы типа переменной i
если в i 1 байт, то 255, и т. д.
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума Ответить с цитированием
Старый 08.10.2012, 21:14   #6
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

Цитата:
Сообщение от Aina Utebekova Посмотреть сообщение
это нам препод задал такой вопрос. если отвечу до завтра 4 если нет 3. и еще он говорит что ответ прост. только надо увидеть его. ЭТО ВОПРОС НА ЛОГИКУ
тогда ответ: бесконечной строки не существует) и собственно условие не возможно... и тогда задача не имеет места быть запущенной...)
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 08.10.2012, 21:19   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
ЭТО ВОПРОС НА ЛОГИКУ
IF not последовательность and not перебрать все символы then программа закончится.
Подходит такая логика?
Цитата:
бесконечной строки не существует)
Почему? Если предположить что хвост строки = голова строки то она бесконечна при сколь угодно малом размере.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.10.2012, 21:25   #8
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
IF not последовательность and not перебрать все символы then программа закончится.
Подходит такая логика?

Почему? Если предположить что хвост строки = голова строки то она бесконечна при сколь угодно малом размере.
ну тогда это уже назвали бы не строкой... а предположим кольцевым списком... хотя автор задания лишь в теме...
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 08.10.2012, 21:28   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
ну тогда это уже назвали бы не строкой
Так то оно так, но задача с подвыпердом, так что все может быть.
Может ответ - программа закончится так и не начавшись, а может быть ответ - Одуванчики в мюслях.
Препод решил вытупнуться - у него это получилось, страна будет знать своих героев
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.10.2012, 21:29   #10
Aina Utebekova
Новичок
Джуниор
 
Аватар для Aina Utebekova
 
Регистрация: 08.10.2012
Сообщений: 9
По умолчанию препод сказал что ответ здесь. но я не вижу

Цитата:
Сообщение от VIK_aka_TOR Посмотреть сообщение
тогда ответ: бесконечной строки не существует) и собственно условие не возможно... и тогда задача не имеет места быть запущенной...)
10.1.1. Имеется последовательность символов x[1]..x[n]. Оп-
ределить, имеются ли в ней идущие друг за другом символы "abcd".
(Другими словами, требуется выяснить, есть ли в слове x[1]..x[n]
подслово "abcd".)

Соответствующая программа очевидна:
Код:
        i:=1; state:=0;
        {i - первая непрочитанная буква, state - состояние}
        while (i<> n+1) and (state <> 4) do begin
          if state = 0 then begin
            if x[i] = a then begin
              state:= 1;
            end else begin
              state:= 0;
            end;
          end else if state = 1 then begin
            if x[i] = b then begin
              state:= 2;
            end else if x[i] = a then begin
              state:= 1;
            end else begin
              state:= 0;
            end;
          end else if state = 2 then begin
            if x[i] = c then begin
              state:= 3;
            end else if x[i] = a then begin
              state:= 1;
            end else begin
              state:= 0;
            end;
          end else if state = 3 then begin
            if x[i] = d then begin
              state:= 4;
            end else if x[i] = a then begin
              state:= 1;
            end else begin
              state:= 0;
            end;
          end;
        end;
        answer := (state = 4);



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 09.10.2012 в 08:16.
Aina Utebekova вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск подстроки в строке Pozitiffe Общие вопросы C/C++ 5 18.02.2012 21:48
Поиск подстроки в строке Mister.V Общие вопросы Delphi 14 17.12.2011 13:01
Поиск подстроки в строке videolord Общие вопросы по Java, Java SE, Kotlin 2 10.04.2011 09:11
Поиск подстроки в строке valdemar593 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 03.06.2010 21:42
поиск подстроки в строке!!! StoneSour Общие вопросы C/C++ 2 15.03.2010 21:31