使用C ++将2D数组随机数生成器传递给main

时间:2014-11-17 20:17:52

标签: c++ arrays random multidimensional-array

大家好,我是C ++的新手,想知道你们是否可以帮助我。现在我只是按照书中的说法,老师告诉我这样做,其中一些东西可能看起来不一样。

我想做的是让我的void随机生成器将数字放入我的2D数组然后进入main。然后我将它传递到我的显示功能但由于某种原因我无法正常工作。你能帮助我吗?

编辑:好的,我认为它与我的随机数生成器有关,没有将数字放入数组但不确定原因。由于我的数字生成器可以找到1D数组。

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>

using namespace std;

//Globral Varaibles Must be on top 
const int max = 100;
const int min = 1;
const int COL = 4;
const int Rows = 3;

//Functions
void Population(int Array[][COL], int size);
void Show(const int Array[][COL], int max);

int main()
{
     int a[3][4];
     Population(a, Rows);
     Show(a, Rows);
}

void Population( int Array[][COL], int size)
{
    for (int index = 0; index < Rows; index++)
    {
        for (int Count = 0; Count < COL; Count++)
        {
               unsigned seed = time(0);
               Array[index][Count] = (rand() % (max - min + 1)) + min;
        }
    }
}

void Show(const int a[][COL], int Rows)
{
    for (int i = 0; i < Rows; i++)
    {
        for (int J = 0; J < COL; J++)
        {
            cout << setw(4) << a[i][J] << endl;
        }
    }
    cout << endl;
    cout << endl;
}

2 个答案:

答案 0 :(得分:0)

每次在population()中输入第二个for循环时,您似乎都在播种随机数生成器。你应该只在一个程序中为一个随机数生成器播种一次,接近开头。

尝试从population()中删除种子线,而不是使用

srand(time(NULL));

在你的主要开头()

答案 1 :(得分:0)

啊,我想出了问题所在。我一直误认为正在显示的是一个巨大的列,而不是将它分成行和列。

我必须在a [i] [J]部分之后有一个小空间,以便它可以分为行和列。

cout << setw(4) << a[a][J] << " ";

That_Knight_Guy感谢您的建议。现在我的生成器最终输出随机数。