Переписать код используя оператор switch

В зависимости от стажа работы на предприятии внедрена надбавка к окладу размере для работников

от 5 до 10 лет – 10%;

от 10 от 15 лет – 15%;

свыше 15 лет – 20%.

Составить программу, которая по заданному стажу работы определить размер надбавки в процентах.

#include <iostream>

    using namespace std;
    int main()
    {
        int a;
        cout << "Напишите свой опыт работы: ";
        cin >> a;
        bool p = (a >= 5 && a <= 10);
        cout << p;
        switch (a >= 5 && a <= 10)
        {
        case true:
            cout << "Надбавка 10%" << endl;
            break;}
    
        switch (a > 10 && a <= 15) {
        case true:
            cout << "Надбавка 15%";
            break;}
    
        switch (a > 15) {
        case true:
            cout << "Надбавка 20%";
            break;}
    }

Препод говорит, что код написан неправильно, хотя в компиляторе все выводится правильно.


Ответы (1 шт):

Автор решения: Zhihar

можно так:

using namespace std;
int main()
{
    int age;
    cout << "Напишите свой опыт работы: ";
    cin >> age;

    switch ((int)((age < 0 ? 0 : age) / 5))
    {
        case 0:
            break;
            
        case 1:
            cout << "Надбавка 10%" << endl;
            break;
        
        case 2:
            cout << "Надбавка 15%";
            break;

        default:
            cout << "Надбавка 20%";
    }
    
    return 0;
}
→ Ссылка