значение в массиве, похоже, не увеличивается после цикла for c ++ - PullRequest
0 голосов
/ 23 июля 2011

Я точно знаю, что оператор if if ( (roll == i) && (result == true) ) является истинным много раз в течение 2500 итераций, но когда я вывожу winRolls[1] или любой другой индекс winRolls после того, как более высокий уровень для цикла завершает свои 2500 итераций,значение winRolls[1] и все остальные индексы всегда имеют максимальное значение 1. Это как-то связано с характеристикой массивов c ++ или я что-то упускаю?

int winRolls[10]      
for (int i = 0; i < 2500; i++)
{
    for (int j = 1; j < 10; j++)
        if ( (roll == j) && (result == true) )
        {
            winRolls[roll] = winRolls[roll] + 1;
        }
}
cout << winRolls[1] << endl;
cout << winRolls[2] << endl; 
cout << winRolls[3] << endl;

Ответы [ 3 ]

0 голосов
/ 23 июля 2011

Где вы инициализируете winRolls?Если вы не инициализируете, но все равно увеличиваете его содержимое, вы можете получить мусорные значения (значения, которые различаются при каждом запуске программы).Кроме того, как roll == i будет верно много раз в течение 25000 итераций?Если вы не обновляете значение roll (которое я не вижу в коде), этот внутренний цикл будет выполняться только один раз или, возможно, никогда, в зависимости от того, какое значение roll имеет.

0 голосов
/ 23 июля 2011

Попробуйте cout << winRolls[roll] << endl; в конце.

Вы увеличиваете значение в winRolls[roll] каждый раз.

Похоже, код здесь верный.Ваша проблема может заключаться в другом месте вашего кода.

0 голосов
/ 23 июля 2011

Ваш код имеет несколько проблем.

winRolls размер равен [10], и вы получаете доступ к нему на основе i (вместо j, который имеет правильный предел для winRolls).Если roll == i равно true, например, 1000, то вы получаете доступ вне диапазона массива.Что не поможет вам получить желаемый результат, а также вы введете неопределенное поведение .

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