2012-08-26 88 views
0

我正在制作一个程序,该程序插入一个带有随机整数的二维数组,并定位显示它的最高值并且它是数组中的坐标。我正在使用三个文件。 utils.h,utils.cpp和main.cpp。我的程序显示了一个数组,但它不正确,尽管我所有的研究都是这样,但我无法弄清楚为什么。任何帮助,将不胜感激。这是一个大学任务,我知道我的教授希望main和utils.h保持原样,所以我可以改变的唯一东西就是utils.cpp。感谢您的时间。用C++中的随机数填充二维数组

#include "utils.h" 

void fillTable(int table[ROW_COL_SIZE][ROW_COL_SIZE]) { 
    for(int i = 0; i < ROW_COL_SIZE; i++) { 
     for(int c = 0; c < ROW_COL_SIZE; c++) { 
      cout << rand() % table[i][c]; 
     } 
    } 
} 

void findLargest(int table[ROW_COL_SIZE][ROW_COL_SIZE], int& largestRow, 
       int& largestCol) { 
    largestRow = 0; 
    largestCol = 0; 

    for (int i = 0; i < ROW_COL_SIZE; i++) { 
     for (int j = 0; j < ROW_COL_SIZE; j++) { 
      if(table[i][j] > table[largestRow][largestCol]) { 
       largestRow = i; 
       largestCol = j; 
      } 
     } 
    } 
} 

void displayTable(int table[ROW_COL_SIZE][ROW_COL_SIZE]) { 
    for (int i = 0; i < 10; i++) { 
     for (int j = 0; j < 10; j++) { 
      cout << table[i][j]; 
     } 
    } 
} 

这是我得到的输出。

55302337713078127332504421405961229072248303443307961481223132483391855019110600 
92808812679236602328231529150663269913935376911094217591887215022974011255316512 
71103276228950168692675422850260269511370054042617128509148242205517590190271332 
93168530667935211606208729747118402681321223203422069312038223266476231187148148 
05966618422064721159313592422312213211891498452701498229001417726265175102184575 
4298481247015001631326472115171254718059341323252489617888241851323216308-858993 
460-858993460-858993460-858993460-858993460-858993460-858993460-858993460-858993 
460-858993460-858993460-858993460-858993460-858993460-858993460-858993460-858993 
460-858993460-858993460-858993460-858993460-858993460-858993460-858993460-858993 
460-858993460-858993460-858993460-858993460-858993460-858993460-858993460-858993 
460-858993460-858993460-858993460-858993460-858993460-858993460-858993460-858993 
460-858993460-858993460-858993460-858993460-858993460-858993460-858993460-858993 
460-858993460-858993460-858993460-858993460-858993460-858993460-858993460-858993 
460-858993460-858993460-858993460-858993460-858993460-858993460-858993460-858993 
460-858993460-858993460-858993460-858993460-858993460-858993460-858993460-858993 
460-858993460-858993460-858993460-858993460-858993460-858993460-858993460-858993 
460-858993460-858993460-858993460-858993460-858993460-858993460-858993460-858993 
460-858993460-858993460-858993460-858993460-858993460-858993460-858993460-858993 
460-858993460-858993460-858993460The largest value located at [0] [0] is: -85899 
3460 
Press any key to continue . . . 
+0

srand(time(0))? – Rapptz

+0

只是所以你知道,'rand()%N'不是偶数分布。 – tenfour

+0

除非表中的值发生变化,fillTable还可以在填充表时跟踪最大值。 –

回答

3

应该fillTable填写table?目前它不 - 它只打印到cout。因此,table似乎仍未初始化。

所以,在fillTable代替,:

cout << rand() % table[i][c]; 

你可能想是这样的:

table[i][c] = rand(); 
+0

这个答案是一个评论,但现在它是一个答案!好多了! – quamrana

+0

这确实有帮助。非常感谢你。我试图进一步改进它。 –

0

fillTable你应该使用类似:

table[i][c] = rand() % MAX_VALUE; // MAX_VALUE is the largest value +1 you want to generate 
cout << table[i][c] << " "; 

(注用空格分隔数字,你可能还想插入一个每行后面有。但我不知道,如果fillTable也应打印出来的值?)

另外,displayTable功能只打印前十行/列(不过这可能是故意的吗?)

0

你只是做了随机数字输出,并没有插入它。 像这样做

table [i][c] = rand() % table [i][c] ; 

另外,您得到一个垃圾值,当你发现最大的价值,因为没有存储在阵列中没有实际价值。