Печать символов в виде чисел в std :: cout - PullRequest
0 голосов
/ 06 марта 2012

Я не понимаю мою проблему здесь. Мой список на получение значений фракции и числа кажется правильным. Но есть проблема с моим выводом. Дает мне только цифры и никаких букв, чтобы показать, в какой они фракции.

Операторы, которые печатают числа, внизу, как этот:

cout << "Your first Card is "
     << numberBoxListHead_ptr->getNumber()
     << factionHead_ptr->getLetter()
     << endl;

Вот полный код:

#include <iostream>
#include <conio.h>
using namespace std;

//The Class where the List depends on it.
class NumberBox
{
private:

    int number;
    char letter;

public:

    NumberBox *next_ptr;
    void setNumber(int number)
    {
        this->number = number;
    }

    void setLetter(char letter)
    {
        this->letter = letter;
    }


    int getNumber()
    {
        return number;
    }

    char getLetter()
    {
        return letter;
    }
};

int main()
{
    int number[4];
    char faction[4];

    NumberBox *factionHead_ptr = new NumberBox();
    NumberBox *factionBody1_ptr = new NumberBox();
    NumberBox *factionBody2_ptr = new NumberBox();
    NumberBox *factionBody3_ptr = new NumberBox();
    NumberBox *factionTail_ptr = new NumberBox();

    NumberBox *numberBoxListHead_ptr = new NumberBox();
    NumberBox *numberBoxListBody1_ptr = new NumberBox();
    NumberBox *numberBoxListBody2_ptr = new NumberBox();
    NumberBox *numberBoxListBody3_ptr = new NumberBox();
    NumberBox *numberBoxListTail_ptr = new NumberBox();

    cout << "Please give the number for the first Card" << endl;
    cin >> number[0];
    if(number[0] > 0 && number[0] < 13)
    {
        numberBoxListHead_ptr->setNumber(number[0]); /* <--- Setting for the first input, which is the number */
    }
    else
    {
        cout << " Invalid " << endl;
        exit(1);
    }
    cout << "Please Give the faction for the first Card" << endl;
    cin >> faction[0];
    if(faction [0] == 's' || faction [0] == 'c' || faction [0] == 'h' || faction [0] == 'd')
    {
        if(faction[0] == 's')
        {
            factionHead_ptr->setLetter('s');
        }
        else if(faction[0] == 'c')
        {
            factionHead_ptr->setLetter('c');
        }
        else if(faction[0] == 'h')
        {
            factionHead_ptr->setLetter('h');
        }
        else if(faction[0] == 'd')
        {
            factionHead_ptr->setLetter('d');
        }
    }
    else
    {
        cout << "Invalid" << endl;
        exit(1);
    }


    cout << "Please give the number for the Second Card" << endl;
    cin >> number[1];
    if(number[1] > 0 && number[1] < 13)
    {
        numberBoxListBody1_ptr->setNumber(number[1]); /* <--- Setting for the second input, which is the number */
    }
    else
    {
        cout << " Invalid " << endl;
        exit(1);
    }
    cout << "Please Give the faction for the second Card" << endl;
    cin >> faction[1];
    if(faction[1] == 's' || faction[1] == 'c' || faction [1] == 'h' || faction [1] == 'd')
    {
        if(faction[1] == 's')
        {
            factionHead_ptr->setLetter('s');
        }
        else if(faction[1] == 'c')
        {
            factionHead_ptr->setLetter('c');
        }
        else if(faction[1] == 'h')
        {
            factionHead_ptr->setLetter('h');
        }
        else if(faction[1] == 'd')
        {
            factionHead_ptr->setLetter('d');
        }
    }
    else
    {
        cout << "Invalid" << endl;
        exit(1);
    }
    cout << "Please give the number for the Third Card" << endl;
    cin >> number[2];
    if(number[2] > 0 && number[2] < 13)
    {
        numberBoxListBody2_ptr->setNumber(number[2]); /* <--- Setting for the third input, which is the number */
    }
    else
    {
        cout << " Invalid " << endl;
        exit(1);
    }
    cout << "Please Give the faction for the Third Card" << endl;
    cin >> faction[2];
    if(faction[2] == 's' || faction[2] == 'c' || faction [2] == 'h' || faction [2] == 'd')
    {
        if(faction[2] == 's')
        {
            factionHead_ptr->setLetter('s');
        }
        else if(faction[2] == 'c')
        {
            factionHead_ptr->setLetter('c');
        }
        else if(faction[2] == 'h')
        {
            factionHead_ptr->setLetter('h');
        }
        else if(faction[2] == 'd')
        {
            factionHead_ptr->setLetter('d');
        }
    }
    else
    {
        cout << "Invalid" << endl;
        exit(1);
    }
    cout << "Please give the number for the fourth Card" << endl;
    cin >> number[3];
    if(number[3] > 0 && number[3] < 13)
    {
        numberBoxListBody3_ptr->setNumber(number[3]); /* <--- Setting for the fourth input, which is the number */
    }
    else
    {
        cout << " Invalid " << endl;
        exit(1);
    }
    cout << "Please Give the faction for the fourth Card" << endl;
    cin >> faction[3];
    if(faction[3] == 's' || faction[3] == 'c' || faction [3] == 'h' || faction [3] == 'd')
    {
        if(faction[3] == 's')
        {
            factionHead_ptr->setLetter('s');
        }
        else if(faction[3] == 'c')
        {
            factionHead_ptr->setLetter('c');
        }
        else if(faction[3] == 'h')
        {
            factionHead_ptr->setLetter('h');
        }
        else if(faction[3] == 'd')
        {
            factionHead_ptr->setLetter('d');
        }
    }
    else
    {
        cout << "Invalid" << endl;
        exit(1);
    }
    cout << "Please give the number for the Fifth Card" << endl;
    cin >> number[4];
    if(number[4] > 0 && number[4] < 13)
    {
        numberBoxListTail_ptr->setNumber(number[4]); /* <--- Setting for the fifth input, which is the number */
    }
    else
    {
        cout << " Invalid " << endl;
        exit(1);
    }

    cout << "Please Give the faction for the fifth Card" << endl;
    cin >> faction[4];
    if(faction[4] == 's' || faction[4] == 'c' || faction [4] == 'h' || faction [4] == 'd')
    {
        if(faction[4] == 's')
        {
            factionHead_ptr->setLetter('s');
        }
        else if(faction[4] == 'c')
        {
            factionHead_ptr->setLetter('c');
        }
        else if(faction[4] == 'h')
        {
            factionHead_ptr->setLetter('h');
        }
        else if(faction[4] == 'd')
        {
            factionHead_ptr->setLetter('d');
        }
    }
    else
    {
        cout << "Invalid" << endl;
        exit(1);
    }

    //This would be the list for the value of the card.

    numberBoxListHead_ptr->next_ptr = numberBoxListBody1_ptr; /* <--- From Head to Body1 */
    numberBoxListBody1_ptr->next_ptr = numberBoxListBody2_ptr; /* <--- From Body1 to Body2 */
    numberBoxListBody2_ptr->next_ptr = numberBoxListBody3_ptr; /* <--- From Body2 to Body3 */
    numberBoxListBody3_ptr->next_ptr = numberBoxListTail_ptr; /* <--- From Body3 to BodyTail */

    //This Would be the list for the faction of the card.

    factionHead_ptr->next_ptr = factionBody1_ptr; /* <--- From Head to Body1 */
    factionBody1_ptr->next_ptr = factionBody2_ptr; /* <--- From Body1 to Body2 */
    factionBody2_ptr->next_ptr = factionBody3_ptr; /* <--- From Body2 to Body3 */
    factionBody3_ptr->next_ptr = factionTail_ptr; /* <--- From Body3 to BodyTail */

    int counter;
    for(counter = 0; counter < 4; counter++)
    {
        if(counter == 0)
        {
            cout << "Your first Card is " << numberBoxListHead_ptr->getNumber() << factionHead_ptr->getLetter() << endl;
        }
        if(counter == 1)
        {
            cout << "Your Second Card is " << numberBoxListBody1_ptr->getNumber() << factionBody1_ptr->getLetter() << endl;
        }
        if(counter == 2)
        {
            cout << "Your third Card is " << numberBoxListBody2_ptr->getNumber() << factionBody2_ptr->getLetter() << endl;
        }
        if(counter == 3)
        {
            cout << "Your fourth Card is " << numberBoxListBody3_ptr->getNumber() << factionBody3_ptr->getLetter() << endl;
        }
        if(counter == 4)
        {
            cout << "Your fifth Card is " << numberBoxListTail_ptr->getNumber() << factionTail_ptr->getLetter() << endl;
        }
    }
    getch();
}

1 Ответ

3 голосов
/ 06 марта 2012
int getLetter()

Это неправильно в этом случае.letter - это символ, убедитесь, что вы возвращаете символ, если хотите, чтобы он был напечатан в виде буквы.

char getLetter() { ... }

Если вы вернете int, std::cout напечатает его числовое значение простокак это делается для ранга карты.Если вы вернете char, он напечатает соответствующий символ, а не его числовое значение.

(Ваш код нуждается в серьезной работе по рефакторингу. Создайте функции для обработки ввода масти и ранга и используйте их повторнофункции. Затем выясните, как сделать цикл для чтения четырех карт.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...