![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Mello |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 30.1.2012 Репутация: нет Всего: нет |
Вот кусок программного кода, вводятся название продукции и ее товарооборот, при вводе отрицательного числа происходит закрытие программы
Добавлено через 44 секунды Дело в том что, если введенное значение отрицаеально, то как и нужно происходит выход из программы, при вводе остальных отрицательных в остальные две переменые, программа не производит выход! Хелп! |
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Может быть так:
А то у Вас все exit'ы находятся внутри if (tovt1 <0) { ... } -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
vol4ek |
|
|||
![]() конь в пальто ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 1.5.2011 Где: Минск Репутация: нет Всего: 0 |
прочитать чтоб можно было. ![]() |
|||
|
||||
Mello |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 30.1.2012 Репутация: нет Всего: нет |
Как раз так я изначально и делал, но тогда уже и при вводе положительного числа программа почемуто закрывается ![]() |
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Что-нибудь пишет, или так закрывается? А если отладчиком пошагово посмотреть? -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
Mello |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 30.1.2012 Репутация: нет Всего: нет |
Да пишет что отрицательные числа недопускается, хотя ввожу положительные, и закрывается, это меня больше всего удивило
|
|||
|
||||
feodorv |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Судя по всему, у Вас нарушена логика происходящего в программе. Смотрите:
Пока всё супер, но нужно учесть, что переменные tovb1, tovb2, tovb3 не проинициализированы. В случае, когда Вы их будете считывать с консоли, это не имеет значения. Но!... что же дальше:
И тут всё супер. Но!...
уже не супер. В теле цикла считывается переменная по адресу fArray[i], а проверка на отрицательность идёт сразу по всем 3-м переменным! На первом шаге цикла (i равное 0) tovb2 и tovb3 вообще ещё не проинициализированы (содержат мусор), а уже делается попытка проверить их значение на отрицательность))) По-моему, логичнее было бы так:
И операторов меньше, и смысла больше))) -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||||||||
|
|||||||||||
Mello |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 30.1.2012 Репутация: нет Всего: нет |
Спасибо большое, вы мне помогли, но вот есть подобная конструкция, только она занесена в бесконечный цикл и при вводе отрицательных значений возвращает к началу цикла, разрушение цикла осуществляется меткой оставленой за пределами тела цикла
Тут подобные симптомы, при вводе первого отр. значения преходит в начало цикла, потом только через два значения и т.д |
|||
|
||||
feodorv |
|
||||||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Давайте обходиться без дополнительных goto:
Так ведь всегда можно напечатать, что именно вызвало "подобные симптомы", есди уж отладчик никак:
Мне не понятно, если я введу fi4 как 0, то цикл по-новой пойдёт? За что? А если m1 есть 0, то экран не будем стирать?
Не понял симптомов. Вы же сами пишете continue, что и означает переход на начало цикла.
Проверять изначально неотрицательные величины (unsigned) на отрицательность??? Ну если у Вас unsigned, то и ввод нужно делать unsigned:
Ну и если у Вас C++, то уж до конца:
-------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||||||||||||
|
|||||||||||||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |