![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
NIKson |
![]()
Сообщение
#1
|
Гость ![]() |
Люди, помогите составить программу нахождения в произвольно заданом тексте максимальную по длине последовательность цифр (если можно с вводом исходных данных из текстового файла, и выводом туда результата работы программы)....
|
klem4 |
![]()
Сообщение
#2
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Во первых поищи по форуму и загляни в наш 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;
Сообщение отредактировано: klem4 - -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
![]()
Сообщение
#3
|
Гость ![]() |
NIKson, смотри здесь:
FAQ: Как найти в массиве максимальную последовательность одинаковых символов? меняешь две (!!!) строки и получаешь то, что тебе нужно... klem4: Цитата выделяешь кусок с цифрами, и сравниваешь его длинну с длинной max, если больше то записываешь в max. Неоптимально. Лучше хранить 2 переменных: индекс начала и длину последовательности (максимум 2 integer-а), чем всю строку символов (она может быть гораздо длинней) ;) |
klem4 |
![]()
Сообщение
#4
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Volvo, в приведенном примере я так и сделал, это я для лучьшего понимания так сказатьнаписал
![]() -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
max := '';
Ты кому-нибудь будешь рассказывать сказки, мне не надо ![]() |
klem4 |
![]()
Сообщение
#6
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
аа ты про это
![]() Сообщение отредактировано: klem4 - -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
![]() ![]() |
![]() |
Текстовая версия | 18.04.2025 12:40 |