Подмога,слепой не вижу что неправильно
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
int z, k;
cout << "Enter k: ";
cin >> k;
cout << "z = " << (k < 2) ? 2*k : (k >= 2 ^ k <= 6) ? 3*k : (k > 6 ^ k < 10) ? 4*k : (k >= 10) ? 5*k << endl;
return 0;
}
Ответы (2 шт):
Автор решения: Andrei
→ Ссылка
Попробуйте вот так:
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
int z, k;
cout << "Enter k: ";
cin >> k;
int a = (k < 2) ? 2*k : (k >= 2 ^ k <= 6);
int b = a ? 3*k : (k > 6 ^ k < 10);
int c = b ? 4*k : (k >= 10);
int d = 0;
if(с) d = 5*k;
cout << "z = " << d << endl;
return 0;
}
Или вот так:
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
int z, k;
cout << "Enter k: ";
cin >> k;
cout << "z = " << (((((k < 2) ? 2*k : (k >= 2 ^ k <= 6)) ? 3*k : (k > 6 ^ k < 10)) ? 4*k : (k >= 10)) ? 5*k : 0) << endl;
return 0;
}
Автор решения: Mikhailo
→ Ссылка
Первое. Приоритет тернарного оператора ниже, чем <<, так что надо брать все выражение в скобки. Само выражение не имеет части : ... после последнего ?. И последнее - вы явно напутали с оператором ^. Подозреваю, что это должен быть оператор &&. Так что правильно должно быть так
cout << "z = " <<
((k < 2) ? 2*k :
(k >= 2 && k <= 6) ? 3*k :
(k > 6 && k < 10) ? 4*k :
(k >= 10) ? 5*k : 0) << endl;
Последний 0 - это вместо вашего пропущенного окоончания, что там должно быть - я не знаю.