作者nt827 (社会人)
看板C_and_CPP
标题Re: [问题] 用c产生一个乱数矩阵并检查是否重复
时间Sat Oct 10 13:51:20 2009
原文吃光光
问题又来了
如果想把5x5矩阵 变成一个 N X N 的乱数矩阵 我修改了之前的程式码 可是又失败了
程式码如下
int i, j, k, n;
int a[n][n];
int size = n*n;
int *num = new int[size];
printf("请输入所要产生乱数矩阵 NXN 之大小\n");
scanf("%d",&n);
srand(time(NULL));
for(i = 0 ; i < size ; i++)
{
num[i] = i + 1;
}
for(i = 0 ; i < n ; i++)
{
for(j = 0 ; j < n ; j++)
{
k = rand() % size;
a[i][j] = num[k];
num[k] = num[--size];
}
}
delete [] num;
然後编译的时候又出现了程式出现发生问题,必须关闭.......
请问各位大大 是哪里出了问题?
还有如何把一个未知数目的矩阵 传入副程式呀
例如
void search(int a [][这里不是要填已知的数目吗?])
好多问题~"~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.116.13.125
1F:推 VictorTom:1. 你的n还没被输入你就已经要拿来开array了. 10/10 14:54
2F:→ VictorTom:2. a阵列要动态的开[n][n], 一样要用动态配置的.... 10/10 14:54
3F:→ VictorTom:3. 传入array, 最简单的方式就是传它的头的address, 然 10/10 14:55
4F:→ VictorTom: 後另外传入有多长的size可以用. 10/10 14:55
5F:→ nt827:产生乱数矩阵以解决,传入副程式还在尝试~"~ 10/10 15:02
6F:推 VictorTom:老实说我觉得你不把它变成一维的传进去, 要搞动态多维的 10/10 15:07
7F:→ VictorTom:会变得很麻烦, 因为动态多维在写二维以上指标时你没办法 10/10 15:08
8F:→ nt827:不知道该怎麽做...可以教我吗? 10/10 15:08
9F:→ VictorTom:在compile time时知道指标要怎麽写, 再者, 动态配置的多 10/10 15:08
10F:→ VictorTom:维阵列你也不能保证其连续性. 10/10 15:09
11F:→ VictorTom:最简单的方式, 把它们变成一维阵列再传. 我不明白你的 10/10 15:09
12F:→ VictorTom:search()非收二维阵列不可的理由; 非要用多维, 目前想到 10/10 15:10
13F:→ VictorTom:比较简单的作法就是, 跑回圈分多次传, 每次也只传一维. 10/10 15:11
14F:→ VictorTom:非要一次搞传动态多维阵列, 有请板上其他强者解答Orz 10/10 15:11
15F:→ nt827:您的意思是在把它变回一维在传? 我把他传进去的目的是要 10/10 15:12
16F:→ nt827:行 列 跟 对角线相加 这样可以做得出来吧... 10/10 15:13
17F:→ VictorTom:基本上, 把阵列的头和n传进去, 一维阵列也可以用数学的 10/10 15:17
18F:→ VictorTom:方式算出行/列/对角等阵列index; 动态二维就是传head** 10/10 15:18
19F:→ VictorTom:进去再搞吧我想@_@" 10/10 15:19