阵列滚动2个骰子

时间:2012-05-02 19:27:51

标签: c++

编写一个模拟两个模具滚动的程序。然后应计算这两个值的总和并将其放在单下标数组中。打印阵列。还可以找到12次出现的次数。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 13
int main()
{
    int face;   
    int arraysize=13;       
    int counter[13];
    int frequency[ SIZE ]= {13};
    for(int i=0; i<13; i++)
        counter[i] = 0;

    int die1; 
    int die2;



    srand( time( NULL ) );


    for ( int roll1 = 0; roll1 <=36000; roll1++ ) {
        die1 =  1 + rand() % 6;
        die2 =  1 + rand() % 6;
        counter[die1+die2]++;
        ++frequency[ face ];
    }

    printf("%4s%17s\n","Sum of Values","Frequency");

    for(int face=2; face<arraysize;face++)
    {
            printf("%8d%17d\n",face,frequency[ face ]);
     }       

    system("PAUSE");
    return 0;
}
PRİNT SCREEN
Sum of Values        Frequency
       2            36001
       3                0
       4                0
       5                0
       6                0
       7                0
       8                0
       9                0
      10                0
      11                0
      12                0

什么不对???

4 个答案:

答案 0 :(得分:5)

这一行

 ++frequency[ face ];

总是递增相同的位置,因为循环不会改变你应该做的事情face的值

++frequency[die1+die2];

另外,我不知道为什么frequencycounter有什么区别?

编辑:就像有人指出的那样face根本没有初始化(除非你删除了一些代码)。

答案 1 :(得分:2)

++frequency[ face ];

face尚未初始化。

答案 2 :(得分:0)

您似乎没有初始化face

然后您反复访问frequency[ face ]

答案 3 :(得分:0)

face尚未初始化。它总是将频率添加到相同位置,因此您只能得到两个骰子总和中的1个