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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2019, 14:14   #1
NimGeneral
Новичок
Джуниор
 
Регистрация: 03.11.2019
Сообщений: 11
По умолчанию Учебная программа атака подводной лодки

Всем привет, учусь по самоучителю, в книге приведен код программы, я переписал и перепроверил уже 100 раз и всеравно программа не работает, объясните пожалуйста что я сделал не так.

Код:
#include <iostream>
#include <cmath>

using namespace std;

int main()
{
	double p, p1, P, q;
	int n;
	//setlocale(LC_ALL, "Rus");
		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;
	return 0;
}
NimGeneral вне форума Ответить с цитированием
Старый 03.11.2019, 15:32   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Вам же компилятор все написал:
Цитата:
prog.cpp:13:68: error: second operand to the conditional operator is of type ‘void’, but the third operand is neither a throw-expression nor of type ‘void’
(p < 0 || p>1) ? (cout << "Wrong value!" << endl, exit(0)) : cout << "p1 = ";
~~~~~^~~~~~~~~~
prog.cpp:15:70: error: second operand to the conditional operator is of type ‘void’, but the third operand is neither a throw-expression nor of type ‘void’
(p1 < 0 || p1>1) ? (cout << "Wrong value!" << endl, exit(0)) : cout << "n = ";
Если не понятно, то идете в https://en.cppreference.com/w/cpp/la...operator_other и читаете про опереатор запятая и тернарный оператор.
p51x вне форума Ответить с цитированием
Старый 03.11.2019, 16:00   #3
NimGeneral
Новичок
Джуниор
 
Регистрация: 03.11.2019
Сообщений: 11
По умолчанию

За ссылку спасибо, про тернарный оператор я знал, за запятую почитал, понял что это все из за "exit (0)" но почему в учебнике привели такой код? и как мне сделать программу рабочей? в 13 строке написано: если р<0 то выводим текст Wrong value! потом переходим на новую строку "endl" и выходим с консоли "exit(0)" (ноль в скобках значит что программа завершила работу корректно), если р>1 тогда введите р1, может я что то не так понимаю???

Я учусь в ВС 19, а книжка за 17 год, вполне вероятно из за этого, может подскажет кто литературу другую что бы почитать там как это реализовать?

Последний раз редактировалось NimGeneral; 03.11.2019 в 16:18.
NimGeneral вне форума Ответить с цитированием
Старый 03.11.2019, 16:14   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Используйте if
p51x вне форума Ответить с цитированием
Старый 03.11.2019, 16:24   #5
NimGeneral
Новичок
Джуниор
 
Регистрация: 03.11.2019
Сообщений: 11
По умолчанию

if (p < 0, p==1) cout << "Wrong value!" << endl;
else cout << "p1 = ";

правильно?

просто if это следующая глава, а мне бы освоить именно то что я уже прочитал, я ведь для себя хочу понять.
Но с другой стороны вы ведь более опытный человек, возможно не стоит заострять на этом свое внимание и переходить как раз таки к if ?? ведь по идее это тоже самое только проще ( на мой взгляд).

Последний раз редактировалось NimGeneral; 03.11.2019 в 16:34.
NimGeneral вне форума Ответить с цитированием
Старый 03.11.2019, 16:32   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
Сообщение от NimGeneral Посмотреть сообщение
а книжка за 17 год
Выкидывайте эту книжку нафик. Этот код с ошибками компилятора гуляет по форумам с 2013 года и если есть новое переиздание с неисправленным кодом...

Цитата:
Сообщение от NimGeneral Посмотреть сообщение
правильно?
конечно, нет. хотя бы потому что откуда-то вдруг равенство появилось
p51x вне форума Ответить с цитированием
Старый 03.11.2019, 16:36   #7
Desc
Участник клуба
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 1,063
По умолчанию

Цитата:
Сообщение от NimGeneral Посмотреть сообщение
если р<0 то выводим текст Wrong value!
Две вертикальные черточки - оператор логического или.
Вопросительный знак - когда p<0 или p>1 выполняется Wrong value!..
I am not a wizard, I am just learning.
Desc вне форума Ответить с цитированием
Старый 03.11.2019, 16:53   #8
NimGeneral
Новичок
Джуниор
 
Регистрация: 03.11.2019
Сообщений: 11
По умолчанию

Цитата:
Вопросительный знак - когда p<0 или p>1 выполняется Wrong value!..
, вот поэтому и равенство поставил, иначе как то глупо выходит, нам подходит только значение 1...

Обидно конечно про книгу узнать сейчас((( 800 рублей заплатил
NimGeneral вне форума Ответить с цитированием
Старый 03.11.2019, 16:54   #9
NimGeneral
Новичок
Джуниор
 
Регистрация: 03.11.2019
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Desc Посмотреть сообщение
когда p<0 или p>1
я в том сообщении просто не дописал это, спешил, извините
NimGeneral вне форума Ответить с цитированием
Старый 03.11.2019, 17:07   #10
Desc
Участник клуба
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 1,063
По умолчанию

Цитата:
Сообщение от NimGeneral Посмотреть сообщение
Обидно конечно про книгу узнать сейчас
Возможно главу не внимательно прочли, но это только возможно.
Иногда в некоторых книгах в конце главы приписка или сноски по тексту - *в таком-то листинге (примере) сознательно допущена ошибка, дабы Вы читатель лучше усвоили преподнесенный материал, тему встречал такое.
I am not a wizard, I am just learning.
Desc вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дано скорость лодки, скорость течения реки, время движения, определить путь S, пройденный лодкой (на Delphi) zhora-011 Помощь студентам 1 06.09.2013 22:05
Учебная группа bufalo WPF, UWP, WinRT, XAML 0 22.05.2012 18:45
Бываю подводной лодкой cobkrs Помощь студентам 15 11.11.2010 17:16
Система прерываний. Учебная ЭВМ JEENDream Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 22.06.2010 16:15
учебная практика Ghetto Помощь студентам 11 26.03.2009 06:59