![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
Такая вот проблема. Есть программа на Си. Выполняется она в консольном окне (exe-файл). Но выполняется она моментально, а после завершения работы программы окно тут же закрывается... Как сделать, чтобы после выполнения всех инструкций программа спросила, например, хотим ли мы выйти, и, в зависимости от ответа, выходила бы или начинала все сначала.
Собственно код программы не имеет значения, но вот пример:
Это сообщение отредактировал(а) sim7 - 31.7.2005, 13:47 |
|||
|
||||
| setq |
|
|||
|
Unregistered |
давным давно под borlanb c++ была такая библиотека что-то вроде <conio.h> там была функция getch () которая возвращала символ нажатия клавиши. может и у тебя что-то подобное есть...
|
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
Почему была? У меня в примере скрипта тоже она подключена... Из нее взята clrscr() в моем скрипте. А формат функции getch() какой?
|
|||
|
||||
| LPBOY |
|
||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 12.7.2005 Репутация: 20 Всего: 20 |
Очень простой ;) Просто вызывай ее там где тебе нужна задержка и все.
Это сообщение отредактировал(а) LPBOY - 31.7.2005, 15:16 --------------------
Каждый человек по-своему прав, а по-моему нет... |
||||||||
|
|||||||||
| ManiaK |
|
|||
![]() Homo Sapience ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1145 Регистрация: 3.8.2004 Где: ИУ5-93 Репутация: 5 Всего: 29 |
А по-моему намного удобней так:
Лучше тем, что в англ. винде выдаст "Press any key to continue", а в русской версии - "Нажмите любую клавишу для продолжения" |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
Удобнее , только возврата на начало нет
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| ManiaK |
|
|||
![]() Homo Sapience ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1145 Регистрация: 3.8.2004 Где: ИУ5-93 Репутация: 5 Всего: 29 |
Romikgy Пардон, сплю ещё видимо
|
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
Всем спасибо, я нашел еще вариант. Пока его юзаю. Вот код:
Вот и усе. Как видите, вариант с меткой и безусловным переходом goto. Работает безотказно. Это сообщение отредактировал(а) sim7 - 2.8.2005, 16:11 |
|||
|
||||
| setq |
|
|||
|
Unregistered |
пока пользователь не начнёт экспериментировать с вводимыми значениями.
особенно порадовало имя метки. ты бы переименовал чтоли |
|||
|
||||
| mr.Anderson |
|
||||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
Ну, почему же? При вводе неверного значения прога просто вылетает.
А зачем? Чем плоха метка exit? Это сообщение отредактировал(а) sim7 - 2.8.2005, 16:49 |
||||
|
|||||
| kometa_triatlon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 384 Регистрация: 7.1.2005 Где: Киев Репутация: 2 Всего: 6 |
Ну как те сказать... Есть такая функция просто...
А вообще метки маздай. Лучше используй if. -------------------- Всё очень просто: сказки обман, Солнечный остров скрылся в туман, Замков воздушных не носит земля, Кто-то ошибся, ты или я. -------------- Программирование - самое большое удовольствие, которое вы можете получить, будучи одетым. |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
А чем плохи метки?
|
|||
|
||||
| comcon1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 11.6.2005 Где: Москва ДАС-МГУ Репутация: 12 Всего: 17 |
Да ничем. Просто предпочтительно их не использовать. Они могут порождать глюки. Перепрыгиваемые области сложно контролировать. Если в них отводится память или еще что-то вроде этого.
При работе с указателями в программе, содержащей множество прыжков очень сложно вспомнить где ты освободил\отвел память, а где еще нет. Ведь if явным образом локализует "область видимости" (понятие использую неверно поэтому кавычки), а метки делает из твоего кода множество самоналоженных и дырявых "областей". Разобраться в них -- анреал. Метки используй в крайнем случае. |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
Ну, в принципе, если пара меток на всю программу - разобраться будет не так уж и сложно, я полагаю.
Добавлено @ 17:44 В общем, я все понял. |
|||
|
||||
| comcon1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 11.6.2005 Где: Москва ДАС-МГУ Репутация: 12 Всего: 17 |
Это да. Я вообще метки юзаю тока в тяжелых алгоритмах типа с графами и при выходе из двойного (или тройного и ..) цикла, где break не катит.
|
|||
|
||||
| setq |
|
|||
|
Unregistered |
да я не про это. твоя метка называется exit. и на что она указывает? правильно, на начало цикла.
|
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
А, вон вы о чем.
|
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
comcon1
Даже в этом случае (в тяжелых рекурсивных алгоритмах) лучше использовать exception, а не goto. По крайней мере, будешь знать, по какому поводу вышел. А во вложенных циклах - какой-нибудь управляющий флаг. Как ты правильно заметил, при использовании меток возникают всякие проблемы с областью видимости переменных. Проблем больше, чем преимуществ - эта та самая длинная веревка, на которой можно повеситься. Оставьте goto генераторам конечных автоматов и прочему нечеловеческому коду. А уж в примере автора темы использовать goto просто смешно - по сути получается тот же цикл. Не надо подменять собой ассемблер. -------------------- ... |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |