Ввести порядковый нoмер игральной карты от(0 до 35) и определить масть и достоинство карты(не надо писать 36 if или switch)

110
14 декабря 2021, 04:00

Написала с 36 свитчами,нельзя использовать цикл и тд.Нужно ограничаться ифами и свитчами,буду рада помощи

#include<iostream>;
using namespace std;
void main()
{
    int a;
    cout << "Select a number of card:";
    cin >> a;
    if (a >= 1 && a <= 9) {
        cout << "Diamonds" << endl;
        switch (a) {
        case 1:
            cout << "Ace of diamonds" << endl;
            break;
        case 2:
            cout << "King of diamonds" << endl;
            break;
        case 3:
            cout << "Queen of diamonds" << endl;
            break;
        case 4:
            cout << "Jack of diamonds" << endl;
            break;
        case 5:
            cout << "Ten of diamonds" << endl;
            break;
        case 6:
            cout << "Nine of diamonds" << endl;
            break;
        case 7:
            cout << "Eight of diamonds" << endl;
            break;
        case 8:
            cout << "Seven of diamonds" << endl;
            break;
        case 9:
            cout << "Six of diamonds" << endl;
            break;
        }
    }
    else if (a > 9 && a <= 18) {
        cout << "Clubs" << endl;
        switch (a) {
        case 10:
            cout << "   Ace of clubs" << endl;
            break;
        case 11:
            cout << "King of clubs" << endl;
            break;
        case 12:
            cout << "Queen of clubs" << endl;
            break;
        case 13:
            cout << "Jack of clubs" << endl;
            break;
        case 14:
            cout << "Ten of clubs" << endl;
            break;
        case 15:
            cout << "Nine of clubs" << endl;
        case 16:
            cout << "Eight of clubs" << endl;
            break;
        case 17:
            cout << "Seven of clubs" << endl;
            break;
        case 18:
            cout << "Six of clubs" << endl;
            break;
        }
    }
    else if (a > 18 && a <= 27) {
        cout << "Hearts" << endl;
        switch (a) {
        case 19:
            cout << "   Ace of hearts" << endl;
            break;
        case 20:
            cout << "King of hearts" << endl;
            break;
        case 21:
            cout << "Queen of hearts" << endl;
            break;
        case 22:
            cout << "Jack of hearts" << endl;
            break;
        case 23:
            cout << "Ten of hearts" << endl;
            break;
        case 24:
            cout << "Nine of hearts" << endl;
        case 25:
            cout << "Eight of hearts" << endl;
            break;
        case 26:
            cout << "Seven of hearts" << endl;
            break;
        case 27:
            cout << "Six of hearts" << endl;
            break;
        }
    }
    else if (a > 27 && a <= 36) {
        cout << "Spades" << endl;
        switch (a) {
        case 28:
            cout << "   Ace of speads" << endl;
            break;
        case 29:
            cout << "King of speads" << endl;
            break;
        case 30:
            cout << "Queen of speads" << endl;
            break;
        case 31:
            cout << "Jack of speadss" << endl;
            break;
        case 32:
            cout << "Ten of speads" << endl;
            break;
        case 33:
            cout << "Nine of speads" << endl;
        case 34:
            cout << "Eight of speads" << endl;
            break;
        case 35:
            cout << "Seven of speads" << endl;
            break;
        case 36:
            cout << "Six of speads" << endl;
            break;
        }
    }
}
Answer 1

Отлично. Итак, карты идут так: масть

diamonds      1- 9     0
clubs        10-18     1
hearts       19-27     2 
speads       28-36     3

Т.е. номер масти (самая правая колонка) получается из номера карты как

(a-1)/9

Теперь посмотрим на достоинство

Ace       0
King      1
Queen     2
...
Six       8

Получить его можно как (a-1)%9.

Итак,

const char * suit[] = {"diamonds","clubs","hearts","speads" };
const char * vals[] = { "Ace", "King", "Queen","Jack", "Ten", "Nine",
                        "Eight","Seven","Six" };
....
cout << vals[(a-1)%9] << " of " << suit[(a-1)/9] << endl;

Примерно так (не компилировал, писал прямо в ответ...)

Ничего страшного, что ни одного if вообще не понадобилось? :)

READ ALSO
SendMessage всем окнам с определенным классом

SendMessage всем окнам с определенным классом

Допустим у меня есть 3 запущенных параллельно окна с одним и тем же классомПри клике в одном из них я хочу отсылать с помощью SendMessage информацию...

76
Qt C++ QComboBox Palette - установка цвета (background-color)

Qt C++ QComboBox Palette - установка цвета (background-color)

Как без использования styleSheet изменить background-color QComboBox ? Используя вот такой код:

172
Метод, считывающий данные из потока ввода и возвращающий char[n]

Метод, считывающий данные из потока ввода и возвращающий char[n]

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

80