Подмога,слепой не вижу что неправильно

Рейтинг: -1Ответов: 2Опубликовано: 21.02.2023
#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;
}

Ответы

▲ 1

Первое. Приоритет тернарного оператора ниже, чем <<, так что надо брать все выражение в скобки. Само выражение не имеет части : ... после последнего ?. И последнее - вы явно напутали с оператором ^. Подозреваю, что это должен быть оператор &&. Так что правильно должно быть так

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 - это вместо вашего пропущенного окоончания, что там должно быть - я не знаю.

▲ 0

Попробуйте вот так:

#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;
}