Как эффективно переназначить числовые значения в массив символов в C ++ - PullRequest
3 голосов
/ 11 января 2020

ОК ie Док ie, я впервые здесь пишу, так что простите, если мое форматирование не очень хорошее. В настоящее время я учусь во втором классе C ++, и наша задача заключалась в том, чтобы создать игру ti c ta c toe с использованием одномерного массива. Способ, которым наш профессор хотел, требовал, чтобы массив использовал символы, а не только целые числа. У меня есть код для игры, но я хочу играть в новую игру после того, как кто-то выиграл или сыграл вничью. Для этого мне нужно избавиться от X и O, которые теперь хранятся в моем массиве. Моя проблема заключается в попытке создать al oop, чтобы соответствующим образом переназначить значения символов.

Я совершенно новичок в концепции массивов, и мое понимание определенно все еще, как минимум, 1012 *. Если я просто упускаю что-то, что упростит это, пожалуйста, помогите мне! В настоящее время он просто печатает случайные символы ascii, потому что не знает, что числа должны интерпретироваться как символы. Любые идеи? :)

Обновление: я нашел грубый способ переопределения значений, но похоже, что должен быть лучший способ.

// This is the initial board setup

char theBoard[SIZE] = {'0', '1', '2', '3', '4', '5', '6', '7', '8'};

// It is re-assigned values of 'X's and 'O's throughout the game
// By the end it looks more like : {X, O, X, O, O, X, X, X} if you can imagine

// My brute force method looks like this: 
void initializeBoard(char theBoard[], int SIZE)
{
    theBoard[0] = '0';
    theBoard[1] = '1';
    theBoard[2] = '2';
    theBoard[3] = '3';
    theBoard[4] = '4';
    theBoard[5] = '5';
    theBoard[6] = '6';
    theBoard[7] = '7';
    theBoard[8] = '8';
}

// And the for loop I was trying to use looked like this: 

void initializeBoard(char theBoard[], int SIZE)
{
    for(int i = 0; i < SIZE; i++)
        {
            theBoard[i] = i;
        }
}





1 Ответ

4 голосов
/ 11 января 2020

В C ++ 0 и '0' - это две разные вещи. Один - это целочисленное значение 0, а другой - целочисленное значение 48, которое совпадает с кодом ASCII для символа «0».

l oop, который вы пытаетесь записать, , просто:

void initializeBoard(char theBoard[], int SIZE)
{
    for(int i = 0; i < SIZE; i++)
        {
            theBoard[i] = '0' + i;
        }
}
...