Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
Fobos315
2 / 2 / 0
Регистрация: 25.04.2014
Сообщений: 68
#1

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

20.07.2014, 21:54. Просмотров 1514. Ответов 20
Метки нет (Все метки)

Переписал с учебника простую задачку, однако на 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;   
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2014, 21:54
Ответы с готовыми решениями:

Тернарный оператор
Добрый день, как доказать, что нету тенарного оператора ? Я как понимаю,...

Тернарный оператор vs if/else
Зачем? Ведь, так элегантнее. Начало...

Засунуть в тернарный оператор
Помогите засунуть выражение if ( (i &lt; 0 || j &lt; 0) || (i &gt;= ROW || j &gt;= COL)...

Альтернатива if (.) {.} (тернарный оператор)
блин запамятовал как это делается пишут вместо стандартной формы что то типа y...

Тернарный оператор и наследование
Добрый день! Почему не компилируется этот код: class A{ }; class B...

20
kylroma
Одессит
213 / 75 / 37
Регистрация: 30.12.2013
Сообщений: 280
Записей в блоге: 1
Завершенные тесты: 2
20.07.2014, 22:01 #2
Та вроде нет ошибок. У меня компилируется.
0
Fobos315
2 / 2 / 0
Регистрация: 25.04.2014
Сообщений: 68
20.07.2014, 22:05  [ТС] #3
Ну я вроде как тоже не вижу, а Dev C++ видит)
0
Supernatural
604 / 203 / 48
Регистрация: 22.11.2010
Сообщений: 1,603
Записей в блоге: 1
20.07.2014, 22:08 #4
а что за ошибки? компилятор хоть пишет, что ему не нравится в коде?
0
kylroma
Одессит
213 / 75 / 37
Регистрация: 30.12.2013
Сообщений: 280
Записей в блоге: 1
Завершенные тесты: 2
20.07.2014, 22:08 #5
Да, у меня тоже dev c++ видит. И CodeBlocks видит. Но если использовать, компилятор в CodeBlocks от MS visual c++, то всё нормально.
0
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 тоже самое
0
Supernatural
604 / 203 / 48
Регистрация: 22.11.2010
Сообщений: 1,603
Записей в блоге: 1
20.07.2014, 22:18 #7
C++
1
(p<0||p>1)?(cout<<"Wrong value!":cout<<"p1 = ";
попробуй?
0
Fobos315
2 / 2 / 0
Регистрация: 25.04.2014
Сообщений: 68
20.07.2014, 22:33  [ТС] #8
так работает, только вы скобку забыли. Но теперь из программы не выходит если условие не выполнено.
0
Supernatural
604 / 203 / 48
Регистрация: 22.11.2010
Сообщений: 1,603
Записей в блоге: 1
20.07.2014, 23:18 #9
ах да, торопился выйти)

Добавлено через 7 минут
посмотрел в книге, образец условной компиляции выглядит: переменная=операнд1?операнд2:операнд3, как я понимаю тут нужны строго значения, но у тебя следуют последовательность операторов
0
Fobos315
2 / 2 / 0
Регистрация: 25.04.2014
Сообщений: 68
20.07.2014, 23:26  [ТС] #10
Supernatural у некоторых почему то работает. Не думаю что в учебнике в таком простом примере могли что то перепутать. Причем с объяснениями.
0
Supernatural
604 / 203 / 48
Регистрация: 22.11.2010
Сообщений: 1,603
Записей в блоге: 1
20.07.2014, 23:39 #11
наверное дело в компиляторе
0
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. С переводом понятно, сам смысл не понял))
0
Supernatural
604 / 203 / 48
Регистрация: 22.11.2010
Сообщений: 1,603
Записей в блоге: 1
21.07.2014, 00:44 #13
смена 0 со сбросом 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 и выскакивает ошибка. Попробуйте поменять операнды оператора "запятая" местами и отпишитесь
1
Fobos315
2 / 2 / 0
Регистрация: 25.04.2014
Сообщений: 68
21.07.2014, 12:49  [ТС] #15
IIARTEMII Вы были совершенно правы!
0
Psilon
Master of Orion
Эксперт .NET
5994 / 4847 / 901
Регистрация: 10.07.2011
Сообщений: 14,459
Записей в блоге: 5
Завершенные тесты: 4
21.07.2014, 13:32 #16
Fobos315, не знаю, кто пишет такие учебники, но за такие примеры руки надо отрывать.
1
Fobos315
2 / 2 / 0
Регистрация: 25.04.2014
Сообщений: 68
21.07.2014, 13:53  [ТС] #17
Psilon Васильев А.Н.
1
Psilon
21.07.2014, 14:18
  #18

Не по теме:

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

0
MrGluck
Модератор
Эксперт CЭксперт С++
8078 / 4930 / 1431
Регистрация: 29.11.2010
Сообщений: 13,357
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");
}
Книгу сжечь.
1
orange_fox
34 / 34 / 8
Регистрация: 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());
0
24.07.2014, 23:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.07.2014, 23:21

Вложенный тернарный оператор
Здравствуйте! Нужно вывести кол-во корней квадратного уравнения в зависимости...

Шахматы(заменить тернарный оператор) на if else
#include &lt;iostream&gt; #include &lt;Windows.h&gt; using namespace std; void main()...

Как работает тернарный оператор
Здравствуйте. Объясните, пожалуйста, что значит эта строка color = (color ==...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru