Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не работает оператор ветвления 
:(
    Опции темы
zim22
Дата 18.9.2009, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(Syltan @  18.9.2009,  14:59 Найти цитируемый пост)
Вы меня не поняли,если числа одинаковые тогда,вообще ничего на экран не долно выводится

значит перед выводом на экран проверяй что вернёт функция.
Цитата(Cheloveck @  18.9.2009,  14:55 Найти цитируемый пост)
вот всё работает

до поры, до времени
Цитата

Код

if( j != 0.0 )


почитай как сравнивать double ссылка

Это сообщение отредактировал(а) zim22 - 18.9.2009, 15:12


--------------------
PM MAIL   Вверх
Cheloveck
Дата 18.9.2009, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: 5
Всего: 32



Цитата(zim22 @  18.9.2009,  16:07 Найти цитируемый пост)
до поры, до времени

именно об этом хотел сказать, но на работе инет отрубили.


--------------------
user posted image
PM Jabber   Вверх
Dov
Дата 18.9.2009, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



Как говорят в Одессе, пишите, как хочете.  smile  Я же предлагаю такой вариант:
Код
return a > b ? a : a < b ? b : 0;



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Cheloveck
Дата 18.9.2009, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: 5
Всего: 32



Цитата(zim22 @  18.9.2009,  15:50 Найти цитируемый пост)
ок. где ты вычитал об этом "правильном" подходе?

об этом говорят все, return'ов должно быть как можно меньше, в идеале один. Это упростит отладку.


Цитата(zim22 @  18.9.2009,  15:50 Найти цитируемый пост)
1) создание ненужной переменной result, без которой можно обойтись. 

Оптимизатор позаботится об этой переменной. А так как ТС у себя возвращает объект по значению, всё равно "лишняя" переменная будет сконструирована.
 
Цитата(zim22 @  18.9.2009,  15:50 Найти цитируемый пост)
2) тип у result кстати int. хотя это шаблонная функция и передавать ей можно всё-что угодно. хоть тип Booblik

поправился за 2 минуты до цитируемого поста.

Цитата(zim22 @  18.9.2009,  15:50 Найти цитируемый пост)
3) инициализация переменной result нулём. а что если тип у переменной не int и конструктор преобразования не определён?

У ТС тоже ноль возвращается. А при объектах типа Booblik это может быть ооочень чревато, так как мы создадим одну дырку от бублика, но это отдельная тема. Здесь мы говорим о встроенных типах, я думаю.

Цитата(zim22 @  18.9.2009,  15:50 Найти цитируемый пост)
4) сравнение идёт по оператору БОЛЬШЕ, а не МЕНЬШЕ. который с меньшей степенью вероятности определён в классах, чем МЕНЬШЕ smile

Ну, это уже не суть важно. Хорошо спроектированный объект имеет оба оператора.

Добавлено через 1 минуту и 40 секунд
Цитата(Dov @  18.9.2009,  16:42 Найти цитируемый пост)
Я же предлагаю такой вариант:

В данном случае речь идёт именно о конструкции if-else. А так, я чаще всего в таких случаях пользуюсь той же конструкцией.


--------------------
user posted image
PM Jabber   Вверх
Dov
Дата 18.9.2009, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



Цитата(Cheloveck @  18.9.2009,  15:44 Найти цитируемый пост)
В данном случае речь идёт именно о конструкции if-else. 

Нет, как я понял, речь не об этом, а о том, что не работает сравнение на равенство двух операндов. Но если даже и так, то мне ближе вариант, который предложил zim22, а именно: 
Код
template< typename T>
T katet(T a, T b)
{
    if( a > b )  return a;
    if( b > a )  return b;
    
    return 0;
}

int main()
{
    setlocale(0,"");

    int      x1 = 8,
             x2 = 8;
    double   y1 = 2.4,
             y2 = 4.83;    

    int result_x = katet( x1, x2 );    
    if( result_x != 0 )
        cout << "Результат = " << result_x << endl;

    double result_y = katet( y1, y2 );
    if(    result_y != 0 )
        cout << "Результат = " << result_y << endl;

    return 0;
}




--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Syltan
Дата 18.9.2009, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 301
Регистрация: 31.8.2009

Репутация: -1
Всего: -2



Спасибо Dov, вот этот вариант самый лучший, это я и имел ввиду.
 smile



Это сообщение отредактировал(а) Syltan - 18.9.2009, 20:11
PM MAIL   Вверх
bsa
Дата 18.9.2009, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196




M
bsa
Syltan, если ответ на вопрос получен, то пометь тему решенной

PM   Вверх
Syltan
Дата 18.9.2009, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 301
Регистрация: 31.8.2009

Репутация: -1
Всего: -2



Я не знаю как её пометить.
PM MAIL   Вверх
bsa
Дата 20.9.2009, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(Syltan @ 18.9.2009,  22:12)
Я не знаю как её пометить.

Наверху справа (под листочками "ответить", "новая тема", "опрос").
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0523 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.