Предполагается, что он имитирует 2 6-сторонние кости, добавляя +1 к элементу массива, знакомому с результатом. Например: [4] содержит количество 4-х кадров. По какой-то причине, независимо от того, сколько раз он катится, он дает мне 1 для каждого элемента массива. То есть: (а [2] = 1, А = [3] 1, а [4] = 1, и т.д.)Простой массив не работает правильно
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <ctime>
using namespace std;
int throwDice() // generates random number ranging 2-12
{
int x = (rand() % 6) + 1;
int p = (rand() % 6) + 1;
return x + p;
}
int main()
{
srand (time(NULL));
int y;
cout << "Roll dice how many times?" << endl;
cin >> y;
int a2[12]; // initializes and declares elements a[2] - a[12] with value 0
for (int i = 2; i <= 12; i++)
a2[i] = 0;
for (int i = 0; i <= y; i++) // runs random number generator, adds +1 to that element
{
a2[throwDice()]++;
}
for (int i = 2; i <= 12; i++) // prints how many results per element
cout << i << " = " << throwDice[i] << endl;
system("pause");
}
Вы забиваете свои индексы. Нет 'a2 [12]' - последним объектом в 'a2' является' a2 [11] '. –
Вместо использования массива, я предлагаю вам посмотреть, например. [ 'Станд :: unordered_map'] (http://en.cppreference.com/w/cpp/container/unordered_map). –
@JoachimPileborg - это похоже на идеальный случай для массива (после сортировки индексации). Зачем добавлять накладные расходы неупорядоченной карты? –