| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > цикл while |
| Автор: koljan 11.6.2006, 22:23 | ||
у меня есть такой код хотел сделать чтобы программа завершалась при вводе n или N но что-то не получается что у меня не так? |
| Автор: Xenon 11.6.2006, 22:32 | ||
|
| Автор: doomik 11.6.2006, 23:14 | ||
Не уверен в ответе, но попробуй добавить
|
| Автор: Pete 11.6.2006, 23:33 |
| Проверь, что лежит в letter (распечатыванием ascii-кода, например): очень вероятно, что там '\n'. В сях часто такая проблема, про плюс точно не знаю. Если дело в этом, то положи сразу после cin >> n вот такую строку: while (getchar() != '\n'). |
| Автор: Xenon 11.6.2006, 23:49 |
| Зачем вы так жизнь усложняете? Просто проверять условие letter!='N' && letter!='n' и все. Засовывать переменную done ... Нафиг? |
| Автор: doomik 12.6.2006, 08:24 | ||||||
XenonSk,
А почему на && ? если
Добавлю к предыдушему моему посту, надо ещё именить while напривер на while ( done != 0 ) в общеи вот код:
Должно работать, сам проверял |
| Автор: Xenon 12.6.2006, 09:59 |
| d00mik Блин .... Цикл выполняется, пока условие верно. Допустим пользователь нажал N. Проверяем условие - letter неравно N или letter неравно n. letter неравно N - false, letter неравно n - true. false || true == true, поэтому цикл будет дальше крутиться. |
| Автор: Rockie 12.6.2006, 18:51 | ||||
господа, из цикла не вываливаются return -ом =)
а вообще такие конструкции
|
| Автор: Xenon 12.6.2006, 20:09 |
| Rockie, Почему? Можно return заюзать, только тебя и из функции выкинет |
| Автор: Fazil6 12.6.2006, 20:22 | ||||
почему это? очень даже.
это от алгоритма зависит и ничего страшного в этом нет |
| Автор: Rockie 12.6.2006, 20:28 | ||
можно еще "format c:" заюзать =) http://www.cheeter.lv/uroki/cc/book014.htm |
| Автор: Xenon 12.6.2006, 20:32 |
| Rockie, Я знаю, что есть break, но ведь return тоже можно? |
| Автор: Fazil6 12.6.2006, 20:37 | ||
break и return служат для разных целей и break заменить return не может. Может еще goto вспомнишь? |
| Автор: Rockie 12.6.2006, 20:47 | ||
ссылки пожалуйста, где это очень даже используется. это мое личное мнение - я считаю циклы такого рода злом. если разбираться в своем деле то вообще ничего страшного нет.
а это к чему?.. |
| Автор: Fazil6 12.6.2006, 20:59 | ||||
пожалуйста, утрированный пример
|
| Автор: Rockie 12.6.2006, 21:50 |
и все же ссылки - на код, который использует подобные конструкции, то есть выходит из цикла оператором return. |
| Автор: Xenon 12.6.2006, 21:55 | ||||
Вот на тебе пример.
И
Сравни пример работы двух программ. Если пишим return, то нас выкидывает и из цикла и из функции. |
| Автор: Pete 12.6.2006, 21:56 | ||
Смотря, что идет после цикла. А вдруг там стоит
? |
| Автор: Fazil6 12.6.2006, 22:03 | ||
какие тебе еще ссыски нужны? чем тебя пример не устраивает? или это по твоему не код? |
| Автор: Rockie 12.6.2006, 22:05 | ||
XenonSk, мне нужны не примеры, а ссылки. я сам вижу что такое работает:
что будет если я поменяю int f() на void f()? этот цикл намертво привязан к функции, в которой он находится. вот мне и интересно, есть ли реальные листинги настоящих программ, которые такой прием используют. Добавлено @ 22:05 это по-моему не ссылка |
| Автор: Xenon 12.6.2006, 22:12 |
| Я пас |
| Автор: Fazil6 12.6.2006, 22:41 | ||||
а то, что ты написал не настоящее? что значит настоящие программы? то, что я пишу по твоему не настоящие?
можешь привести аргументы, почему нельзя делать так, как я привел в последнем своем примере? |
| Автор: Xenon 12.6.2006, 22:50 |
| Rockie, Ты видишь, что это работает, но по-мойму не понимаешь в чем разница работы |
| Автор: Fazil6 12.6.2006, 22:51 | ||
вот специально в проектах порылся. Настоящая программа.
|
| Автор: Rockie 12.6.2006, 22:55 | ||
нет. мне это и не нужно. я же тебе не говорю, что у тебя руки кривые просто на мой взгляд программа получается малопонятной. мне интересно кто так ЕЩЕ делает. |
| Автор: Xenon 12.6.2006, 23:01 |
| Rockie, Млин, разве, в конце концов, не бывает случаев, когда в цикле происходят некоторые манипуляции и в связи с каким-то условием нужно либо прервать цикл и перейти к выполнению последующих операция, либо прервать цикл и выйти из функции? Или у тебя в цикле возникла ошибка, тебе же нужно не просто выйти из цикла, а еще и функцию завершить и передать в окружение сообщение об ошибке. КАкие еще примеры? |
| Автор: Rockie 12.6.2006, 23:13 | ||
да. пожалуй бывают, просто я с такими не встречался и для меня такой прием был неизвестен. Добавлено @ 23:20 то есть идея то понятна, а я втупил именно в сам вызов return из while. то есть вроде как while возвращает значение. не знал что так можно. |
| Автор: koljan 13.6.2006, 23:41 |
| что то мне кажется тут уже не по теме началось |