如何在随机填充的二维数组中找到最高值

问题描述 投票:0回答:3

我正在制作一个程序,插入一个带有随机整数的二维数组,并找到最高值来显示它及其在数组中的坐标。

我使用三个文件:

  • utils.h
  • utils.cpp
  • 主.cpp。
#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 . . .

我唯一可以更改的是 utils.cpp。

c++ arrays random variable-assignment double-pointer
3个回答
3
投票

应该

fillTable
填充
table
吗?目前它没有 - 它只打印到
cout
。因此,
table
似乎仍未初始化。

所以,在

fillTable
中,而不是:

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

您可能想要类似的东西:

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

0
投票

fillTable
中你应该使用类似:

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

(请注意分隔数字的空格,您可能还想在每行后面插入

cout << endl;
。但我不确定
fillTable
是否也应该打印出这些值?)

此外,

displayTable
函数仅打印前十行/列(但这可能是故意的?)


0
投票

您只是输出随机数,而不是插入其中。 这样做

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

另外,当您找到最大值时,您会得到一个垃圾值,因为数组中没有存储实际值。

© www.soinside.com 2019 - 2024. All rights reserved.