0

ランダムな整数の2次元配列を挿入し、それを表示するための最大値とその配列内の座標を見つけるプログラムを作成しています。私は3つのファイルを使用しています。utils.h、utils.cpp、およびmain.cpp。私のプログラムは配列を表示しますが、それは正しくなく、すべての研究にもかかわらず、その理由を理解することはできません。どんな助けでもいただければ幸いです。これは大学の課題であり、私の教授はmainとutils.hをそのままにしておくことを望んでいるので、変更できるのはutils.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 . . .
4

3 に答える 3

3

fillTable記入する必要がありtableますか?現在はそうではありません-に出力するだけcoutです。したがって、初期化されていないようにtable見えます。

したがって、fillTableの代わりに:

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

あなたはおそらく次のようなものが欲しいでしょう:

table[i][c] = rand();
于 2012-08-26T17:16:40.080 に答える
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関数は最初の10行/列のみを出力します(ただし、これは意図的なものである可能性がありますか?)

于 2012-08-26T17:21:08.917 に答える
0

乱数を出力するだけで、挿入することはありません。このようにしてください

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

PLus配列に実際の値が格納されていないため、最大値を見つけたときにガベージ値を取得しています。

于 2012-08-26T17:22:33.847 に答える