1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
насчет алгоритма -- просто не люблю гото и прирывания, ИМХО они уменьшают читабельность(доказательство -- восприятее klem4-а), а вообще я его описал во втором посте, и если автору было бы интересно то...
проходишь в цикле от последнего элемента до первого и ищешь, если находишь то прирываеш цикл...
Но на словах получается одно, а на Pascal'е другое. Не обман, но туман. И чем не прерывать цикл как не Break, Exit, Halt? Передать управление на END из начала или середины подпрограммы по-моему проще при помощи Exit, а не многоступенчатого IF-THEN-ELSE, он то как раз всё и затуманит. Или в подпрограмме должны быть выполнены все команды? Максимизация использования ресурсов Ну Itanium возможно потянет(но не всё что угодно разумеется), но x86 однозначно нет.
Но на словах получается одно, а на Pascal'е другое. Не обман, но туман. И чем не прерывать цикл как не Break, Exit, Halt? Передать управление на END из начала или середины подпрограммы по-моему проще при помощи Exit, а не многоступенчатого IF-THEN-ELSE, он то как раз всё и затуманит. Или в подпрограмме должны быть выполнены все команды? Максимизация использования ресурсов Ну Itanium возможно потянет(но не всё что угодно разумеется), но x86 однозначно нет.
а можно только GOTO, и использовать не циклы не разветления не нужны! а насчет программы, автору то понравилось...
а можно только GOTO, и использовать не циклы не разветления не нужны!
К сожалению(или к счастью) одним только GOTO нельзя ограничиться - получится ЛИНЕЙНАЯ операторов, которую можно переписать, выбросив всё GOTO. Например goto 2; 1: Write('1'); goto 3; 2: Write('2'); goto 1; 3: Write('3') заменяется соответственно на Write('2'); Write('1'); Write('3'); Это возможно, если последовательность операторов конечна, то есть нет бесконечных циклов: 1: ... goto 1; Поэтому без ветвлений(то есть без оператора IF-THEN-ELSE) не обойтись. А циклы - это просто надстройка над IF+GOTO. Например цикл WHILE:
Label_НАЧАЛО_ЦИКЛА: if not УСЛОВИЕ_ПРОДОЛЖЕНИЯ_ЦИКЛА then goto Label_ПОСЛЕ_ЦИКЛА; ТЕЛО_ЦИКЛА; goto Label_НАЧАЛО_ЦИКЛА; Label_ПОСЛЕ_ЦИКЛА:
Разумеется вместо этого лучше написать while УСЛОВИЕ_ПРОДОЛЖЕНИЯ_ЦИКЛА do ТЕЛО_ЦИКЛА;