Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2013, 18:07   #1
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию Тернаярная операция - тройное условие(Язык C)

Никак не могу разобраться, как записать условие?Что и как - я уже понял, а как это записывается с точки зрения синтаксиса?

Пример мой программы:
Код:
#include <stdio.h>
#include <conio.h>
#include <locale.h>

int
main()
{
    setlocale(LC_ALL, "rus");
    int x, y;
    printf("Введите значение x и y \r\n");
    scanf("%d%d", &x, &y);
    printf("%d\n", ((x > 0) && (y < 0)  ? x +y : (x > 0) && (y > 1) ? (x/(y - 1)  );
    getchar();
    return 0;
}

___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 08.10.2013 в 09:13.
East Undia Trading вне форума Ответить с цитированием
Старый 07.10.2013, 18:37   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Примерно так.
Код:
float rez;
if(x <= 0 && (y >= 0 || y <= 1)) rez = x-y;// исключаем остальные случаи
else y > 1 ? rez = x/(y-1) : rez = x + y;// Поскольку x больше нуля, то проверяем y > 1.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 07.10.2013 в 20:30.
Smitt&Wesson вне форума Ответить с цитированием
Старый 07.10.2013, 22:30   #3
Кащей
Форумчанин
 
Аватар для Кащей
 
Регистрация: 09.07.2013
Сообщений: 249
По умолчанию

Код:
int tern(int x, int y){
       return (x > 0 && y < 0) ? x + y : ((x > 0 && y > 1) ? x / (y - 1) : x - y);
}
()?():(()?():())
do not use your brain

Последний раз редактировалось Кащей; 07.10.2013 в 22:40.
Кащей вне форума Ответить с цитированием
Старый 07.10.2013, 23:51   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Ну, да. Можно и так. Скорее всего, что так и нужно.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 08.10.2013, 00:03   #5
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Цитата:
Сообщение от Кащей Посмотреть сообщение
Код:
int tern(int x, int y){
       return (x > 0 && y < 0) ? x + y : ((x > 0 && y > 1) ? x / (y - 1) : x - y);
}
()?():(()?():())
О майн готт. Чему вы детей учите? Такое условие мозг сломает.
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Старый 08.10.2013, 00:07   #6
Кащей
Форумчанин
 
Аватар для Кащей
 
Регистрация: 09.07.2013
Сообщений: 249
По умолчанию

Цитата:
Сообщение от ROD Посмотреть сообщение
О майн готт. Чему вы детей учите? Такое условие мозг сломает.
.
do not use your brain

Последний раз редактировалось Кащей; 08.10.2013 в 01:21.
Кащей вне форума Ответить с цитированием
Старый 08.10.2013, 08:27   #7
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Цитата:
Сообщение от Кащей Посмотреть сообщение
.
Нет, без шуток. "Условие" такого условия и, как следствие, вообще результат работы данной строчки кода труднопонимаем.
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Старый 08.10.2013, 11:30   #8
Shad0wF1rst
Форумчанин
 
Регистрация: 11.01.2013
Сообщений: 149
Смех

Цитата:
Сообщение от ROD Посмотреть сообщение
Нет, без шуток. "Условие" такого условия и, как следствие, вообще результат работы данной строчки кода труднопонимаем.
Согласен почему не использовать старое доброе if?!

Код:
int tern(int x, int y){
    if (x > 0 && y < 0) return x + y;
    else if (x > 0 && y > 1) return x / (y - 1);
           else return x - y;
}
Слов больше, но зато из них много знакомых, а не куча разных символов.
Может это и чушь, но это моя чушь и я ее никому не отдам.
Shad0wF1rst вне форума Ответить с цитированием
Старый 08.10.2013, 13:20   #9
Кащей
Форумчанин
 
Аватар для Кащей
 
Регистрация: 09.07.2013
Сообщений: 249
По умолчанию

Цитата:
Сообщение от ROD Посмотреть сообщение
Нет, без шуток. "Условие" такого условия и, как следствие, вообще результат работы данной строчки кода труднопонимаем.
Проблема не в том, что строчка сложная а в том что ты неправильно в отношении неё мыслиш.
Цитата:
Согласен почему не использовать старое доброе if?
Обфускация
do not use your brain

Последний раз редактировалось Кащей; 08.10.2013 в 17:29.
Кащей вне форума Ответить с цитированием
Старый 11.11.2013, 20:09   #10
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию

Написал вот так:
Код:
rezult=(x>0 && y<0)?x+y:((x>0 && y>1)?x/(y-1):x-y);
Почему, когда я беру числа в промежутке x>0, y>0, y>1 он не вычитает x-y, а просто пишет 0, при этом я исправил объявление y и x.Изначально они объявлены как целые - это ведь было неправильно, так?
East Undia Trading вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
повторная операция iKlev4s Microsoft Office Excel 5 23.05.2013 11:30
Цикл for. Задаю условие, при сверке условия происходит операция присвоения! Объясните! fly_in_net Общие вопросы C/C++ 2 17.04.2013 20:41
операция с файлами Иришка1 Помощь студентам 0 12.06.2012 21:58
операция SHL Anohorett Общие вопросы C/C++ 2 02.12.2009 23:27
Операция Ы SASHA50 Microsoft Office Excel 10 25.04.2008 12:38