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

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

Войти
Регистрация
Восстановить пароль
 
Fleurisse
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 6
#1

Выдаёт ошибку - C++

20.09.2013, 14:19. Просмотров 316. Ответов 7
Метки нет (Все метки)

Разбираю примеры простеньких задачек в самоучителе по С++. При введение листинга одной из таких программ в компилятор столкнулась с ошибкой в строчке:
C++
1
(p<0||p>1)?(cout<<"Wrong value!"<<endl,exit(0)):cout<<"p1 = ";
Не понимаю, в чём проблема!

Вот сама программа целиком:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<iostream>
#include <cmath>
using namespace std;
int main(){
//Параметры задачи:
double p,p1,P,q;
int n;
//Ввод параметров задачи:
cout<<"p = ";
cin>>p;
//Проверка корректности значения p:
(p<0||p>1)?(cout<<"Wrong value!"<<endl,exit(0)):cout<<"p1 = ";
cin>>p1;
//Проверка корректности значения 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;
return 0;
}
Надеюсь на вашу помощь.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4391 / 3234 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
20.09.2013, 14:30     Выдаёт ошибку #2
Если хочется заморочиться с тернарным оператором, то пишите так:
C++
1
(p<0||p>1)?(void)(cout<<"Wrong value!"<<endl,exit(0)):(void)(cout<<"p1 = ");
А вообще используйте лучше if.
alsav22
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.09.2013, 16:31     Выдаёт ошибку #3
Цитата Сообщение от Fleurisse Посмотреть сообщение
компилятор столкнулась с ошибкой в строчке:
Что пишет?
Fyret
184 / 170 / 13
Регистрация: 30.07.2013
Сообщений: 359
20.09.2013, 16:43     Выдаёт ошибку #4
Обе ветки тернарного оператора должны возвращать значения одного типа. А у Вас в одному случае void, а в другом std::ostream&
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
20.09.2013, 16:56     Выдаёт ошибку #5
Цитата Сообщение от Fleurisse Посмотреть сообщение
(p<0||p>1)?(cout<<"Wrong value!"<<endl,exit(0)):cout<<"p1 = ";
если условие выполнится, то результат тернарной операции будет exit(0)
если не выполнится, то cout << "p1 = ";

и в чем смысл?
alsav22
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.09.2013, 17:01     Выдаёт ошибку #6
Цитата Сообщение от _ Посмотреть сообщение
если не выполнится, то cout << "p1 = ";
И дальше ввод значения p1. В этом и смысл: или выход, или ввод.

Добавлено через 1 минуту
У меня код работает (студия). Может от компилятора зависит.
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
20.09.2013, 17:46     Выдаёт ошибку #7
Цитата Сообщение от alsav22 Посмотреть сообщение
И дальше ввод значения p1. В этом и смысл: или выход, или ввод.
понятно. но все равно вот это
Цитата Сообщение от Fleurisse Посмотреть сообщение
(p<0||p>1)?(cout<<"Wrong value!"<<endl,exit(0)):cout<<"p1 = ";
даже не знаю как назвать. настоящий быдлокод. а потом удивляемся откуда лезут ошибки

вот то же самое, но читается намного легче:
C++
1
2
3
4
5
6
7
8
9
10
if (p<0 || p>1)
{
    cout<<"Wrong value!"<<endl;
    exit(0);
}
else
{
    cout<<"p1 = ";
    cin >> p1;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.09.2013, 10:54     Выдаёт ошибку
Еще ссылки по теме:

Выдаёт ошибку C++
C++ Выдаёт непонятную ошибку
Выдаёт ошибку в коде C++
C++ Выдаёт ошибку c4996
C++ Выдаёт ошибку

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

Или воспользуйтесь поиском по форуму:
Fleurisse
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 6
21.09.2013, 10:54  [ТС]     Выдаёт ошибку #8
Цитата Сообщение от _ Посмотреть сообщение
понятно. но все равно вот это

даже не знаю как назвать. настоящий быдлокод. а потом удивляемся откуда лезут ошибки

вот то же самое, но читается намного легче:
C++
1
2
3
4
5
6
7
8
9
10
if (p<0 || p>1)
{
    cout<<"Wrong value!"<<endl;
    exit(0);
}
else
{
    cout<<"p1 = ";
    cin >> p1;
}
Там упражнение именно для разбора тернарного оператора, поэтому if не использовалось, хоть с ним и проще)

Всем большое спасибо!!
Yandex
Объявления
21.09.2013, 10:54     Выдаёт ошибку
Ответ Создать тему
Опции темы

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