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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2015, 21:33   #1
HarleyKing
 
Регистрация: 23.11.2015
Сообщений: 3
По умолчанию Дана последовательность нулей и единиц... (Delphi)

Здравствуйте. Задание такое: Дана последовательность нулей и единиц. Выделить в ней максимальную по длине подпоследовательность чередующихся нулей и единиц, начинающуюся с единицы. (Delphi)
Не могу ни понять, ни реализовать, как выделять и выводить эту последовательность.
HarleyKing вне форума Ответить с цитированием
Старый 23.11.2015, 22:01   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Я бы применил конечный автомат (https://ru.wikipedia.org/wiki/Конечный_автомат).
Хватит 3 состояний. Допустим, что считываем посимвольно последовательность нулей и единиц. Пусть максимальная длина и текущая длина подпоследовательности равны 0. Изначально находимся в нулевом состоянии.
Считываем очередной символ и обрабатываем в соответствии с текущим состоянием.

Нулевое состояние: максимальная длина равна максимуму из текущей и максимальной; если текущий символ 1, то текущая длина равна 0 и переход в первое состояние; если текущий символ 0, то остаемся в нулевом состоянии.
Первое состояние: увеличиваем счетчик текущей длины; затем, если текущий символ 1, то переходим в нулевое состояние; если текущий символ 0, то переходим во второе состояние.
Второе состояние: увеличиваем счетчик текущей длины; затем, если текущий символ 1, то переходим в первое состояние; если текущий символ 0, то переходим в нулевое состояние.

В конце работы еще раз выбираем максимум из максимальной и текущей. Затем выводим чередующуюся последовательность из нулей и единиц получившейся максимальной длины, начинающуюся с единицы.

Путем небольшой модификации вы можете также сохранить и индекс, с которого начинается эта подпоследовательность в исходной последовательности.

Если рассматривать с точки зрения оконного приложения, то последовательность может располагаться в Memo. После работы алгоритма может выводиться сообщение, что такая подпоследовательность не найдена, а если найдена, то выделить её с помощью SelStart и SelLenght прямо в Memo.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 23.11.2015 в 22:15.
BDA на форуме Ответить с цитированием
Старый 24.11.2015, 00:13   #3
HarleyKing
 
Регистрация: 23.11.2015
Сообщений: 3
По умолчанию

А можете показать как это будет выглядеть в Delphi(консольное приложение), так я в программировании недавно и не могу понять как это будет выглядеть в виде кода.
HarleyKing вне форума Ответить с цитированием
Старый 24.11.2015, 00:36   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Набросок такой:
Код:
max_len := 0;
cur_len := 0;
state := 0;
// открыть файл для чтения
while not eof(f) do
begin
  read(f, ch);
  case state of
    0: // некоторая работа;
    1: // некоторая работа;
    2: // некоторая работа;
  end;
end;
if cur_len > max_len then
  max_len := cur_len;
if max_len > 0 then
  writeln(max_len) // это вывод максимальной найденной длины
else
  writeln('NO');
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 24.11.2015 в 00:38.
BDA на форуме Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
дана строка состоящая из групп нулей и единиц. Подсчитать количества единиц в группах с нечетным количеством символов (на Delphi) ArturBattalov Помощь студентам 1 06.10.2013 16:16
Дана строка их нулей и единиц.Вывести самую длинную группу. Delphi VladGorin Помощь студентам 1 19.06.2012 01:51
Найти байтс наибольшим числом единиц и найти байт с наибольшим чилом нулей. Найти разность число единиц м Beren42 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 14.12.2010 17:44
Задана последовательность состоящая из единиц и нулей valiaam55 Паскаль, Turbo Pascal, PascalABC.NET 1 29.09.2010 17:16
Получите последовательность b1...bn из нулей и единиц Я_Студент Паскаль, Turbo Pascal, PascalABC.NET 2 04.07.2008 12:40