Помощь - Поиск - Пользователи - Календарь
Полная версия: массив с текстом
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
NIKson
Люди, помогите составить программу нахождения в произвольно заданом тексте максимальную по длине последовательность цифр (если можно с вводом исходных данных из текстового файла, и выводом туда результата работы программы)....
klem4
Во первых поищи по форуму и загляни в наш FAQ найдешь все что нужно
Вот тебе алгоритм :

перед началом максимальная последовательность max := ''; // пустая строка
Читаешь строку из файла, проходишь по строке, пока не наткнешься на цифру, идешь дальше пока не наткнешься на НЕ цифру , выделяешь кусок с цифрами, и сравниваешь его длинну с длинной max, если больше то записываешь в max.

примерно так :


max := '';
...

i:=1;
while(i<=length(s)) do begin
 while (not(s[i] in ['0'..'9']))and(i<=length(s)) do
   inc(i);
 if i<=length(s) then begin
   start := i;
  while(s[i] in ['0'..'9']) do
    inc(i);
  if i-start>length(max) then
   max := copy(s, start, i-start);
  end;
end;
volvo
NIKson, смотри здесь:
FAQ: Как найти в массиве максимальную последовательность одинаковых символов?
меняешь две (!!!) строки и получаешь то, что тебе нужно...

klem4:
Цитата
выделяешь кусок с цифрами, и сравниваешь его длинну с длинной max, если больше то записываешь в max.
Неоптимально. Лучше хранить 2 переменных: индекс начала и длину последовательности (максимум 2 integer-а), чем всю строку символов (она может быть гораздо длинней) ;)
klem4
Volvo, в приведенном примере я так и сделал, это я для лучьшего понимания так сказатьнаписал smile.gif :yes:
volvo
max := '';

Ты кому-нибудь будешь рассказывать сказки, мне не надо smile.gif
klem4
аа ты про это smile.gif Да тут можно обойтись и без строки дополнительной. Не понял сначала о чем ты :smilie:
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.