2015-08-21 5 views
2

Я пытаюсь подсчитать количество символов в 2D-сетке с использованием 2 for петель. Код выглядит следующим образом:Подсчитайте количество символов в двумерной сетке C

int number_of_boxes(int player, int height, int width, char**gameBoard){ 
int boxCount, i , a; 
    for(i=0; i < (height*2) + 1 ; i++){ 
    for (a = 0 ; a < (width * 2) + 1 ; a++){ 
     if(gameBoard[i][a] == (char)(player + 64)) boxCount++; 
    } 
    } 
return boxCount; 
} 

переменной player является индексом для каждого игрока, но в сетке они показывают ASCII символы.

1 = A, 2 = B и т. Д., Добавив 64 к индексу и обрабатывая его как char. Состояние if предназначено для проверки каждого символа в массиве массивов для символа ASCII и добавления в счетчик, если он находит экземпляр одного.

По какой-то причине if утверждение в этой функции путь проходит слишком много раз, и функция возвращает 122 или 120 когда только возможно максимум 4. Является ли мое заявление if неправильным?

+3

boxCount неинициализирован. Он содержит стоимость мусора. –

+0

Ах, это исправлено, не могу поверить, что я пропустил это, спасибо. –

+0

вместо использования 65 ... используйте 'A'. Делает код более понятным –

ответ

2

Вы не инициализировали boxCount.

int boxCount, i , a; 

Поэтому boxCount в настоящее время хранит некоторую стоимость мусора. Я думаю, именно поэтому вы предполагаете, что оператор if выполняется много раз. Попробуйте инициализировать boxCount.

int boxCount=0, i , a; 
0

Вы пропустили инициализацию boxCount:

Заменить

int boxCount, i , a; 

с

int boxCount=0, i , a; 

Поскольку приращение неинициализированных значений является неопределенным.

Смежные вопросы