![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
SKVOZNJAK |
![]()
Сообщение
#1
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 930 Пол: Мужской Репутация: ![]() ![]() ![]() |
Не влезло: "винченного отвёрткой"
Садисткая задача. Имеется цикл :
Все приведённые переменные типа Int64. Имеющийся у вас компилятор поддеpживает операции с такими переменными, но считает недопустимым строить на них циклы. Внимание задание! Напишите заменитель цикла, наиболее изящное решение. Код должен нормально работать при любых допустимых значениях переменных a,b,c. Сообщение отредактировано: SKVOZNJAK - 13.12.2006 7:56 |
eXtractor |
![]()
Сообщение
#2
|
|||
![]() Новичок ![]() Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: ![]() ![]() ![]() |
И почему мое сообщение удалили?
Ладно, повторю. Это не подойдет? a:=b;
|
|||
Bokul |
![]()
Сообщение
#3
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: ![]() ![]() ![]() |
Цитата Имеющийся у вас компилятор поддеpживает операции с такими переменными, но считает недопустимым строить на них циклы . eXtractor, как думаешь while это цикл? Ну можно построить конструкцию с меткой и if. Типа:
-------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
eXtractor, а подумать не забыл? Сказано же было:
Цитата Код должен нормально работать при любых допустимых значениях переменных a,b,c. Делаем:a := -1; и наслаждаемся ![]() Bokul, а ты пробовал на FPC сделать цикл FOR на параметре Int64? Не делается, а While - проходит... Так что, While скорее можно использовать, чем нельзя... |
Bokul |
![]()
Сообщение
#5
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: ![]() ![]() ![]() |
Цитата Bokul, а ты пробовал на FPC сделать цикл FOR на параметре Int64? Нет, но и в моем варианте нету цикла FOR. -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
eXtractor |
![]()
Сообщение
#6
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
Lapp |
![]()
Сообщение
#7
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
volvo, ты имел в виду
b:=-1; c:=-2; ? В задаче использован именно to — так его тоже зациклит при таких числах. Нет, цикл for не станет выполняться совсем, если конечная величина меньше начальной. Проверка выполняется перед входом и проверка эта не на равенство, а на "больше". Интересно, что даже при начальной величине меньше конечной твой цикл не выполнит последнего шага (при а=с), а for должен выполнить. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Цитата(Lapp @ 14.12.2006 8:00) volvo, ты имел в виду b:=-1; c:=-2; ? ![]() |
SKVOZNJAK |
![]()
Сообщение
#9
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 930 Пол: Мужской Репутация: ![]() ![]() ![]() |
Заметьте, не я произнёс на этот раз goto
![]()
Под линуксом как-то удавалось накормить for конечной величиной меньше начальной. При выполнении начальная величина многократно возрастала. Баг конкретной версии компилятора. Сообщение отредактировано: SKVOZNJAK - 14.12.2006 13:25 |
Michael_Rybak |
![]()
Сообщение
#10
|
Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: ![]() ![]() ![]() |
Либо я чего-то не понимаю, либо одно из двух. Объясните мне плиз, почему while не подходит?
a := b; Всегда считал, что for работает именно так. |
SKVOZNJAK |
![]()
Сообщение
#11
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 930 Пол: Мужской Репутация: ![]() ![]() ![]() |
Как оказалось подходит, компилятор не ругается. Прикол сорвался( Но всё равно, в сложных циклах со множеством условий и необходимостью выйти строго в определённой точке просто цикл подходит слабо. Нужно задачу дробить на множество подзадач. В СИ как то умудряются обходиться без меток, наверно меньше узких мест или ещё что то.
|
klem4 |
![]()
Сообщение
#12
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
А из-за чего вообще нельзя мутить цикл for для int64 ? Тип то "целый".
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Michael_Rybak |
![]()
Сообщение
#13
|
Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: ![]() ![]() ![]() |
Как оказалось подходит, компилятор не ругается. Прикол сорвался( Но всё равно, в сложных циклах со множеством условий и необходимостью выйти строго в определённой точке просто цикл подходит слабо. Нужно задачу дробить на множество подзадач. В СИ как то умудряются обходиться без меток, наверно меньше узких мест или ещё что то. В моей практике встречаются довольно сложные циклы (пишу на с++), и goto пользуюсь крайне редко; может раза два за последний год. Обычно break и continue с головой хватает, а если в цикле сильно много кода, то возникает вопрос, а не разбить ли это дело на процедуры в целях читабельности. Тогда и goto обычно сам собой уходит за ненадобностью. |
volvo |
![]()
Сообщение
#14
|
Гость ![]() |
Цитата В моей практике встречаются довольно сложные циклы <...>, и goto пользуюсь крайне редко; ![]() |
SKVOZNJAK |
![]()
Сообщение
#15
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 930 Пол: Мужской Репутация: ![]() ![]() ![]() |
А в чём разница, если гото потом обратно в цикл возвращает, то это уже аналог процедуры.
|
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 14:03 |