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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Fobos315
2 / 2 / 0
Регистрация: 25.04.2014
Сообщений: 68
#1

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

20.07.2014, 21:54. Просмотров 1212. Ответов 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;   
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kylroma
Одессит
196 / 67 / 19
Регистрация: 30.12.2013
Сообщений: 248
Записей в блоге: 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
286 / 142 / 28
Регистрация: 22.11.2010
Сообщений: 1,489
20.07.2014, 22:08     Простая задачка про тернарный оператор #4
а что за ошибки? компилятор хоть пишет, что ему не нравится в коде?
kylroma
Одессит
196 / 67 / 19
Регистрация: 30.12.2013
Сообщений: 248
Записей в блоге: 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
286 / 142 / 28
Регистрация: 22.11.2010
Сообщений: 1,489
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
286 / 142 / 28
Регистрация: 22.11.2010
Сообщений: 1,489
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
286 / 142 / 28
Регистрация: 22.11.2010
Сообщений: 1,489
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
286 / 142 / 28
Регистрация: 22.11.2010
Сообщений: 1,489
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
Эксперт .NET
5849 / 4746 / 628
Регистрация: 10.07.2011
Сообщений: 14,294
Записей в блоге: 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
Модератор
Эксперт CЭксперт С++
6997 / 4168 / 594
Регистрация: 29.11.2010
Сообщений: 11,047
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++ Является ли тернарный оператор оператором сравнения?
Тернарный оператор и множество ошибок в коде C++
C++ Используя тернарный оператор из трёх чисел найти среднее по значению

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

Или воспользуйтесь поиском по форуму:
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     Простая задачка про тернарный оператор
Ответ Создать тему
Опции темы

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