Форум программистов, компьютерный форум CyberForum.ru

Простая задачка про тернарный оператор - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Fobos315
2 / 2 / 0
Регистрация: 25.04.2014
Сообщений: 68
20.07.2014, 21:54     Простая задачка про тернарный оператор #1
Переписал с учебника простую задачку, однако на 10 и 12 строке показывает ошибки. Что тут не так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    double p,p1,P,q;
    int n;
    cout<<"p= ";
    cin>>p;
    (p<0||p>1)?(cout<<"Wrong value!"<<endl,exit(0)):cout<<"p1 = ";
    cin>>p1;
    (p1<0||p1>1)?(cout<<"Wrong value!"<<endl,exit(0)):cout<<"n= ";
    cin>>n;
    q=(1-p)*(1-p1);
    P=p*p1*(1-pow(q,n))/(1-q);
    cout<<"P= "<<P<<endl;
    system("PAUSE");
    return 0;   
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2014, 21:54     Простая задачка про тернарный оператор
Посмотрите здесь:

C++ Засунуть в тернарный оператор
Тернарный оператор vs if/else C++
C++ Шахматы(заменить тернарный оператор) на if else
C++ Альтернатива if (.) {.} (тернарный оператор)
Тернарный оператор: возврат значения C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kylroma
Одессит
 Аватар для kylroma
44 / 44 / 18
Регистрация: 30.12.2013
Сообщений: 203
Записей в блоге: 1
Завершенные тесты: 1
20.07.2014, 22:01     Простая задачка про тернарный оператор #2
Та вроде нет ошибок. У меня компилируется.
Fobos315
2 / 2 / 0
Регистрация: 25.04.2014
Сообщений: 68
20.07.2014, 22:05  [ТС]     Простая задачка про тернарный оператор #3
Ну я вроде как тоже не вижу, а Dev C++ видит)
Supernatural
285 / 141 / 28
Регистрация: 22.11.2010
Сообщений: 1,439
20.07.2014, 22:08     Простая задачка про тернарный оператор #4
а что за ошибки? компилятор хоть пишет, что ему не нравится в коде?
kylroma
Одессит
 Аватар для kylroma
44 / 44 / 18
Регистрация: 30.12.2013
Сообщений: 203
Записей в блоге: 1
Завершенные тесты: 1
20.07.2014, 22:08     Простая задачка про тернарный оператор #5
Да, у меня тоже dev c++ видит. И CodeBlocks видит. Но если использовать, компилятор в CodeBlocks от MS visual c++, то всё нормально.
Fobos315
2 / 2 / 0
Регистрация: 25.04.2014
Сообщений: 68
20.07.2014, 22:10  [ТС]     Простая задачка про тернарный оператор #6
10 56 C:\Users\flagship\Desktop\Test20.cpp [Error] second operand to the conditional operator is of type 'void', but the third operand is neither a throw-expression nor of type 'void'
и 12 тоже самое
Supernatural
285 / 141 / 28
Регистрация: 22.11.2010
Сообщений: 1,439
20.07.2014, 22:18     Простая задачка про тернарный оператор #7
C++
1
(p<0||p>1)?(cout<<"Wrong value!":cout<<"p1 = ";
попробуй?
Fobos315
2 / 2 / 0
Регистрация: 25.04.2014
Сообщений: 68
20.07.2014, 22:33  [ТС]     Простая задачка про тернарный оператор #8
так работает, только вы скобку забыли. Но теперь из программы не выходит если условие не выполнено.
Supernatural
285 / 141 / 28
Регистрация: 22.11.2010
Сообщений: 1,439
20.07.2014, 23:18     Простая задачка про тернарный оператор #9
ах да, торопился выйти)

Добавлено через 7 минут
посмотрел в книге, образец условной компиляции выглядит: переменная=операнд1?операнд2:операнд3, как я понимаю тут нужны строго значения, но у тебя следуют последовательность операторов
Fobos315
2 / 2 / 0
Регистрация: 25.04.2014
Сообщений: 68
20.07.2014, 23:26  [ТС]     Простая задачка про тернарный оператор #10
Supernatural у некоторых почему то работает. Не думаю что в учебнике в таком простом примере могли что то перепутать. Причем с объяснениями.
Supernatural
285 / 141 / 28
Регистрация: 22.11.2010
Сообщений: 1,439
20.07.2014, 23:39     Простая задачка про тернарный оператор #11
наверное дело в компиляторе
Fobos315
2 / 2 / 0
Регистрация: 25.04.2014
Сообщений: 68
20.07.2014, 23:46  [ТС]     Простая задачка про тернарный оператор #12
cut
Вот нашел что то похожее на мою проблему, только не понял к какому там выводу пришли. В частности что значит это and if i replace the last 0 with throw 0, it will compile successfully. С переводом понятно, сам смысл не понял))
Supernatural
285 / 141 / 28
Регистрация: 22.11.2010
Сообщений: 1,439
21.07.2014, 00:44     Простая задачка про тернарный оператор #13
смена 0 со сбросом 0, что это могло значить....)))
IIARTEMII
20 / 20 / 3
Регистрация: 14.06.2012
Сообщений: 95
Завершенные тесты: 1
21.07.2014, 02:02     Простая задачка про тернарный оператор #14
Цитата Сообщение от Fobos315 Посмотреть сообщение
second operand to the conditional operator is of type 'void'
Оператор "запятая" возвращает правый операнд. Тернарный оператор возвращает результат, зависящий от первого операнда. При true, тернарный оператор возвращает exit(...), а exit возвращает void - вы возвращаете void и выскакивает ошибка. Попробуйте поменять операнды оператора "запятая" местами и отпишитесь
Fobos315
2 / 2 / 0
Регистрация: 25.04.2014
Сообщений: 68
21.07.2014, 12:49  [ТС]     Простая задачка про тернарный оператор #15
IIARTEMII Вы были совершенно правы!
Psilon
Master of Orion
 Аватар для Psilon
5738 / 4686 / 619
Регистрация: 10.07.2011
Сообщений: 14,160
Записей в блоге: 5
Завершенные тесты: 4
21.07.2014, 13:32     Простая задачка про тернарный оператор #16
Fobos315, не знаю, кто пишет такие учебники, но за такие примеры руки надо отрывать.
Fobos315
2 / 2 / 0
Регистрация: 25.04.2014
Сообщений: 68
21.07.2014, 13:53  [ТС]     Простая задачка про тернарный оператор #17
Psilon Васильев А.Н.
Psilon
21.07.2014, 14:18
  #18

Не по теме:

Fobos315, спасибо, осталось узнать его домашний адрес

MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,419
24.07.2014, 02:15     Простая задачка про тернарный оператор #19
Простой пример на тернарный оператор:
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
 
int main()
{
    int x;
    std::cout << "Enter x: ";
    std::cin >> x;
    std::cout << "x is " << (x % 2 ? "odd" : "even");
}
Книгу сжечь.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.07.2014, 23:21     Простая задачка про тернарный оператор
Еще ссылки по теме:

C++ Тернарный оператор - найти ошибку в коде
C++ Является ли тернарный оператор оператором сравнения?
C++ Как работает тернарный оператор

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

Или воспользуйтесь поиском по форуму:
orange_fox
 Аватар для orange_fox
34 / 34 / 6
Регистрация: 06.04.2014
Сообщений: 189
24.07.2014, 23:21     Простая задачка про тернарный оператор #20
Как насчёт, всегда возвращать один и тот же тип?
C++
1
(p<0 || p>1) ? (cout << "Wrong value!" << endl, exit(0)) : (cout << "p1 = ", void());
Yandex
Объявления
24.07.2014, 23:21     Простая задачка про тернарный оператор
Ответ Создать тему
Опции темы

Текущее время: 11:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru