![]() |
|
Модераторы: bsa |
![]()
|
|
| Syltan |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 301 Регистрация: 31.8.2009 Репутация: -1 Всего: -2 |
Написал простую прогу с использованием шаблонов, вроде всё правильно, но дело в том,что условие
Я специально поставил значения в х1 = 8, х2 = 8,чтоб вывелся результат только один,
А выдаёт 2 результата.
Это сообщение отредактировал(а) Syltan - 18.9.2009, 14:20 |
||||||||
|
|||||||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
здесь ошибка. сам догадаешься в чём?
|
|||
|
||||
| Syltan |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 301 Регистрация: 31.8.2009 Репутация: -1 Всего: -2 |
Это место работате нормально, и с else,та же история.
Даже если поставить будет тот же самый вывод:
Странно,но это условие не работает:
Это сообщение отредактировал(а) Syltan - 18.9.2009, 14:24 |
||||
|
|||||
| Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: 5 Всего: 32 |
теперь тут ошибка. сам догадаешься в чём? если a больше b, то выход со значением a, иначе выход со значением b. И если a равна b - выход со значением ноль. чувствуешь нестыковку? Это сообщение отредактировал(а) Cheloveck - 18.9.2009, 14:32 -------------------- ![]() |
|||
|
||||
| Syltan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 301 Регистрация: 31.8.2009 Репутация: -1 Всего: -2 |
Хотите сказать, что вот так будет правильно:
А else в таких случаях не используют? Это сообщение отредактировал(а) Syltan - 18.9.2009, 14:32 |
|||
|
||||
| Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: 5 Всего: 32 |
-------------------- ![]() |
|||
|
||||
| Syltan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 301 Регистрация: 31.8.2009 Репутация: -1 Всего: -2 |
Зачем лишний else,тогда лучше вот так:
Но дело в том,что я хочу чтоб не выдавало результат = 0, чтоб,если одно число равно другому, тогда ничего на экран не выдавало. Это сообщение отредактировал(а) Syltan - 18.9.2009, 14:37 |
|||
|
||||
| Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: 5 Всего: 32 |
Это сообщение отредактировал(а) Cheloveck - 18.9.2009, 14:38 -------------------- ![]() |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
Cheloveck, как-то ты код извращённо переписал.
я думаю, что сначала в if'ах должны быть перечислены стандартный/правильный поток выполнения программы а уже после них - обработка ошибочных вариантов.
Это сообщение отредактировал(а) zim22 - 18.9.2009, 14:41 |
|||
|
||||
| Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: 5 Всего: 32 |
Он не лишний. Потом поймёшь. -------------------- ![]() |
|||
|
||||
| Syltan |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 301 Регистрация: 31.8.2009 Репутация: -1 Всего: -2 |
И даже если написать вот так:
Результат программы будет таков:
А нужно вот такой чтоб был:
Это сообщение отредактировал(а) Syltan - 18.9.2009, 14:45 |
||||||
|
|||||||
| Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: 5 Всего: 32 |
zim22, если говорить о правильном подходе, то это должно быть вообще так
Добавлено через 1 минуту и 35 секунд ну, или T вместо int -------------------- ![]() |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
ок. где ты вычитал об этом "правильном" подходе? в чём его преимущества перед моим? (свой я вычитал в Макконнеле "Совершенный код") недостатки "правильного" подхода вижу такие: 1) создание ненужной переменной result, без которой можно обойтись. 2) тип у result кстати int. хотя это шаблонная функция и передавать ей можно всё-что угодно. хоть тип Booblik 3) инициализация переменной result нулём. а что если тип у переменной не int и конструктор преобразования не определён? 4) сравнение идёт по оператору БОЛЬШЕ, а не МЕНЬШЕ. который с меньшей степенью вероятности определён в классах, чем МЕНЬШЕ |
|||
|
||||
| Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: 5 Всего: 32 |
-------------------- ![]() |
|||
|
||||
| Syltan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 301 Регистрация: 31.8.2009 Репутация: -1 Всего: -2 |
Вы меня не поняли,если числа одинаковые тогда,вообще ничего на экран не долно выводится, а вывестись должен только второй вызов, где числа не одинаковые.
Это сообщение отредактировал(а) Syltan - 18.9.2009, 15:00 |
|||
|
||||
| zim22 |
|
||||||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
значит перед выводом на экран проверяй что вернёт функция. до поры, до времени
почитай как сравнивать double ссылка Это сообщение отредактировал(а) zim22 - 18.9.2009, 15:12 |
||||||
|
|||||||
| Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: 5 Всего: 32 |
именно об этом хотел сказать, но на работе инет отрубили. -------------------- ![]() |
|||
|
||||
| Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 11 Всего: 88 |
Как говорят в Одессе, пишите, как хочете.
-------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
| Cheloveck |
|
||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: 5 Всего: 32 |
об этом говорят все, return'ов должно быть как можно меньше, в идеале один. Это упростит отладку.
Оптимизатор позаботится об этой переменной. А так как ТС у себя возвращает объект по значению, всё равно "лишняя" переменная будет сконструирована.
поправился за 2 минуты до цитируемого поста.
У ТС тоже ноль возвращается. А при объектах типа Booblik это может быть ооочень чревато, так как мы создадим одну дырку от бублика, но это отдельная тема. Здесь мы говорим о встроенных типах, я думаю.
Ну, это уже не суть важно. Хорошо спроектированный объект имеет оба оператора. Добавлено через 1 минуту и 40 секунд В данном случае речь идёт именно о конструкции if-else. А так, я чаще всего в таких случаях пользуюсь той же конструкцией. -------------------- ![]() |
||||||||
|
|||||||||
| Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 11 Всего: 88 |
Нет, как я понял, речь не об этом, а о том, что не работает сравнение на равенство двух операндов. Но если даже и так, то мне ближе вариант, который предложил zim22, а именно:
-------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
| Syltan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 301 Регистрация: 31.8.2009 Репутация: -1 Всего: -2 |
Спасибо Dov, вот этот вариант самый лучший, это я и имел ввиду.
Это сообщение отредактировал(а) Syltan - 18.9.2009, 20:11 |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
|
|||
|
||||
| Syltan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 301 Регистрация: 31.8.2009 Репутация: -1 Всего: -2 |
Я не знаю как её пометить.
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Наверху справа (под листочками "ответить", "новая тема", "опрос"). |
|||
|
||||
![]()
|
| Правила форума "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. |