5706 / 2297 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
1

Остановка программы в определенном месте

11.05.2012, 15:04. Показов 11873. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет всем, написал программу, а в ней в некоторых местах обработал случай возможной ошибки, и нужно чтобы программа дальше не выполнялась после этого случая, а заканчивала работу в том месте, но не закрывалась, return не подходит, получается выход из программы полностью, exit аналогично, abort уже немного ближе похоже на то что мне нужно, но выскакивает, окошко с 3 кнопками отмена, повторить и продолжить, больше примеров не нашел... сделал через if else -работает, но 3-4 таких конструкции писать, что в else попадет остальная часть программы, программа получается немного громоздкой и не удобной

программа написана, работает все хорошо, но..

вот что нужно мне вообще по заданию сделать

1. читаем из файла строки, если больше 20, то выдать сообщение об ошибке строк должно быть не больше 20
2. файл не найден - ошибка
3. в файле нет ни одной записи
4. запись в файле некорректна

и конкретно все объяснить профессору... и чтобы программа не получилась запутанной... а то объяснять эту запутанность нужно будет, да еще и на немецком языке , что так не хотелось бы

так вот, пункты 1-4 получаются в моем случае в if, а остальная часть должна тогда попадать в else, и это при 4 сравнениях 4 else на один участок

конкретный вопрос, после того как нашлась ошибка, выдается сообщение о ней, и программа останавливается в этом месте, но без закрытия


в дельфи я знаю как такое сделать.. но С не моя стихия, но написать могу что-то, что по заданию требуется

Извините за столь длинный и запутанный вопрос..
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.05.2012, 15:04
Ответы с готовыми решениями:

MFC: остановка программы в нужном месте
Есть ли команда в mfc для завершения программы в нужном месте? Например при выполнении...

Остановка кода при определенном действии
Люди добрые, помогите, я так и не сумел решить проблему до конца. Вот есть написаны хорошим...

Клик в определенном месте
у меня есть статик ,и мне нужно ,когда нажимаю на него ,удерживать и перетаскивать пока не отпущу...

Скрытие div`а в определенном месте
Приветствую! Имеется список статей <div id="title">Заголовок</div> <div...

20
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
11.05.2012, 15:21 2
ОС какая? Добавь паузу. В винде
C
1
system("pause");
Добавлено через 1 минуту
Цитата Сообщение от Arcor Посмотреть сообщение
в дельфи я знаю как такое сделать..
Приведи код Делфи
0
5706 / 2297 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
11.05.2012, 15:36  [ТС] 3
Цитата Сообщение от go Посмотреть сообщение
system("pause");
не срабатывает если принудительно выходим, просто закрывается и все...
Цитата Сообщение от go Посмотреть сообщение
Приведи код Делфи
позже, сейчас не дома
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
11.05.2012, 15:44 4
Цитата Сообщение от Arcor Посмотреть сообщение
не срабатывает если принудительно выходим, просто закрывается и все...
Кто откуда выходит, и что не срабатывает? Нажми в консоли
Bash
1
help pause
Добавлено через 3 минуты
Главное понять на сколько нужно приастоновить работу.
C
1
while ( 1 ) ;
Если ресурсов жалко
C
1
while ( 1 ) sleep(UINT_NAX);
Добавлено через 1 минуту
Цитата Сообщение от go Посмотреть сообщение
system("pause");
Я предложил не лучший вариант. Кросплатформенного варианту нет.
можно
C
1
while ( 1 ) getchar();
0
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
11.05.2012, 17:56 5
Цитата Сообщение от Arcor Посмотреть сообщение
не срабатывает если принудительно выходим, просто закрывается и все...
подробнее? ... это как?
критическая ошибка чтоли?

Цитата Сообщение от Arcor Посмотреть сообщение
длинный и запутанный вопрос..
это точно.

Добавлено через 1 минуту
Цитата Сообщение от Arcor Посмотреть сообщение
сделал через if else -работает, но 3-4 таких конструкции писать, что в else попадет остальная часть программы, программа получается немного громоздкой и не удобной
кажется понял..

а зачем тебе else ?) подумай как обойтись без него.
0
5706 / 2297 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
11.05.2012, 18:49  [ТС] 6
Цитата Сообщение от Arcor Посмотреть сообщение
Приведи код Делфи
позже, сейчас не дома
я к сожалению ступил, я могу просто выйти из процедуры полностью, но не прекратить ее, я к сожалению заблуждался все это время, думал неправильно оО
Цитата Сообщение от OstapBender Посмотреть сообщение
кажется понял..
а зачем тебе else ?) подумай как обойтись без него.
смотрите у меня 4 случая ошибки

работаем с первой ошибкой, в файле больше 20 строк, значит выводим сообщение об ошибке, а дальше по коду идет дальнейшая обработка, куда мне ее засунуть чтобы она не выполнилась? конечно в else, иначе я никак не остановлю программу после первой же ошибки

вторая ошибка, файл не найден, что я делаю? снова через if смотрю есть или нет, если есть продолжается программа, если нет что мне делать с остальным куском кода? снова в else

3 ситуация, в файле нет ни оной строки, программа мне выдаст сообщение об этом, а что с дальнейшим кодом? снова else чтобы не выполнилась оставшаяся часть, иначе читать нечего, и решать соответственно тоже нечего..

4 ситуация, в файле записаны данные которые программа не сможет расшифровать, скажем вместо цифр напишем хотябы одну букву, тут явный критак получится в дальнейшей обработке, и снова нужно эту ситуацию взять в if а остальной код в else чтобы не выполнился

и получилось у меня ветвление боже мой...

исключительная ситуация, тоже самое что и сравнение получается...

я подумал уже сделать решение в другой процедуре, в отдельной... чтобы если что, грузить или не грузить процедуру, но этим же учителям нужно так как стоит в задании решить... А охото получить отлично, чтобы потом выровнять оценку по черчению... оценки с программирования и черчения будут сложены и поделены... не понимаю их логику, в чем сходство между черчением и программированием

список из 4 ошибок конечно в данный момент не в правильной последовательности объявлен, но в программе все как нужно, сперва проверка на файл, потом на пустоту, потом на некорректность, потом на больше или меньше 20, это я тут так в разноброс написал

прошу прощения, опять написал Санта Барбару....
0
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
11.05.2012, 18:52 7
Если ошибки нет, то и без всякого else программа продолжит работу.
0
5706 / 2297 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
11.05.2012, 19:01  [ТС] 8
Цитата Сообщение от OstapBender Посмотреть сообщение
Если ошибки нет, то и без всякого else программа продолжит работу.
так это понятно!!! мне нужно будет специально программу спровоцировать на ошибку, чтобы показать как она поведет себя в данном случае, в этом то вся беда получается

Добавлено через 1 минуту
я тут кстати подумал зациклить каждую ошибку и потом по цепочке выполнять, чтобы не переходило к другому участку пока в первом ошибка и так далее
0
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
11.05.2012, 19:04 9
на примере:
C++
1
2
3
4
5
6
7
8
9
10
FILE * f = fopen("1.txt","rt");
 
if (!f) {
// все плохо
 
}
else {
// все хорошо
 
}
поставим в блоке if
C++
1
2
3
puts("Нет файла.");
getchar();
return 0;
теперь else не нужен.
1
5706 / 2297 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
11.05.2012, 19:10  [ТС] 10
после return закрывается моя консоль, не успеваешь даже прочитать что там, я так и настраивался делать, но...
0
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
11.05.2012, 19:13 11
попробуй поставь перед getchar(); --> fflush(stdin);
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
11.05.2012, 20:55 12
Цитата Сообщение от OstapBender Посмотреть сообщение
getchar(); --> fflush(stdin);
Не делай так. Это Undefined behave

Добавлено через 1 минуту
Цитата Сообщение от Arcor Посмотреть сообщение
после return закрывается моя консоль,
Так и должно быть. Это выход из функции.
0
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
12.05.2012, 00:42 13
behaviour
0
6 / 5 / 0
Регистрация: 02.04.2012
Сообщений: 82
12.05.2012, 01:48 14
C
1
2
3
4
5
6
if(условие ошибки)
{
  Сообщение об ошибке!
  getchar();
  exit(0);
}
Программа выведит сообщение об ошибке и выйдет из программы после нажатия Enter.
Остальной код будет выполняться без всякого else если условие ошибки не будет выполнено.
Так пойдет?

Добавлено через 3 минуты
Вот пример открытия файла:
C
1
2
3
4
5
6
if((fin=fopen("group","r"))==NULL)
  {
    printf("Не удалось открыть файл /etc/group");
    getchar();
    exit(0);
  }
0
5706 / 2297 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
12.05.2012, 02:44  [ТС] 15
вы приводите аналогичные примеры, ответьте тогда на вопрос, почему у вас не закрывается консоль???? если конечно у вас этого и не происходит, я чтобы не делал на подобии - тупо закрывается консоль и до свидания...

exit
return
все это выход из подпрограммы, причем принудительно

из отдельной функции/процедуры я таким методом выхожу, но выходу полностью всей подпрограммой, но не ее частью

вроде бы задача не шибко сложная, но как видно многим не известна такая проблема... которая возникла у меня
0
6 / 5 / 0
Регистрация: 02.04.2012
Сообщений: 82
12.05.2012, 10:13 16
Нужно что бы консоль не закрывалась после ошибки? И если да, то как долго, или после чего её можно закрыть?
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
12.05.2012, 11:21 17
Arcor, если хотите, чтобы Вам помогли, то сторайтесь не игнорировать вопросы, для получения более достоверной информации. Так как
Цитата Сообщение от go Посмотреть сообщение
Кросплатформенного варианту нет.
0
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
12.05.2012, 15:57 18
Arcor, просто запускай свою программу из консоли.
Окно появляется на доли секунды и исчезает
Цитата Сообщение от Arcor Посмотреть сообщение
вроде бы задача не шибко сложная, но как видно многим не известна такая проблема... которая возникла у меня
потому что это не проблема, а нормальное поведение.
0
5706 / 2297 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
12.05.2012, 19:54  [ТС] 19
Цитата Сообщение от go Посмотреть сообщение
Arcor, если хотите, чтобы Вам помогли, то сторайтесь не игнорировать вопросы
например какие я проигнорировал?

не ответил что я сижу на ОС Windows?
0
6 / 5 / 0
Регистрация: 02.04.2012
Сообщений: 82
12.05.2012, 20:07 20
На мой вопрос не ответил. Как можно помочь человеку если он сам обьяснить не может в чём ему нужна помошь?
1
12.05.2012, 20:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.05.2012, 20:07
Помогаю со студенческими работами здесь

Вывод подменю в определенном месте
Добрый вечер! Как сделать так, чтобы при наведении мышью на пункт меню, всплывало подменю этого...

Закрепить изображение в определенном месте
У меня есть код: <style> html{ height: 600px; } img{ position:...

Фрейм в определенном месте по центру
в общем нужно сделать что бы мой фрейм показывал только окошко которое черное (ява приложение), как...

Фиксирование в определенном месте прокрутки
Здравствуйте! Столкнулся с такой проблемой. Как сделать, чтобы обьект прокручивался вместе со...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru