将数组放入函数C ++中

时间:2016-11-03 04:10:08

标签: c++ arrays

我正在输出一个带有for循环的二维数组,如下所示:

void output(int data[50][8], string names[50]) {
    int amount = 0;
    amount = fillAndDisplay(data, names);`

    for (int i = 0; i < amount; i++) {
        cout << names[i] << " ";

        for (int j = 0; j < 8; j++) {
            cout << data[i][j] << " ";
        }

        cout << endl;

    }

    return;
}
在我的情况下,

amount等于5。

现在,我现在正在返回datanames,但它无效。我需要返回什么?另外,我应该使用什么数据类型的功能?我现在正在使用void,但我不确定这是否正确。

这是我的完整代码。它正在读取的文件是:

5 
Franks,Tom 2 3 8 3 6 3 5 
Gates,Bill 8 8 3 0 8 2 0 
Jordan,Michael 9 10 4 7 0 0 0 
Bush,George  5 6 5 6 5 6 5 
Heinke,Lonnie  7 3 8 7 2 5 7

以下是代码:

int fillAndDisplay(int data[50][8], string names[50]);

void sort(int data[50][8], string names[50]);

void output(int data[50][8], string names[50]);

int main()
{

int data[50][8];

string names[50];

int amount = 0;


 amount = fillAndDisplay(data, names);

 sort(data, names);

 output(data, names);

system("pause");
return 0;

}

int fillAndDisplay(int data[50][8], string names[50]) {

int const TTL_HRS = 7;
ifstream fin;
fin.open("empdata.txt");

if (fin.fail()) {
    cout << "ERROR";
}

int sum = 0;
int numOfNames;
fin >> numOfNames;

for (int i = 0; i < numOfNames; i++) {

    fin >> names[i];

    data[i][7] = 0;

    for (int j = 0; j < 7; j++) {
        fin >> data[i][j];
        data[i][TTL_HRS] += data[i][j];
    }
}

return numOfNames;

}

void sort(int data[50][8], string names[50]) {

int amount = 0;
int temp = 0;
bool hasSwapped = true;
string tempName;

amount = fillAndDisplay(data, names);

while (hasSwapped) {

    hasSwapped = false;

    for (int i = 0; i < amount - 1; ++i)
    {
        if (data[i][7] < data[i + 1][7]) {

            for (int j = 0; j <= 7; j++) {

                temp = data[i][j];
                data[i][j] = data[i + 1][j];
                data[i + 1][j] = temp;
            }
            tempName = names[i];
            names[i] = names[i + 1];
            names[i + 1] = tempName;

            hasSwapped = true;

        }

    }
}
}

void output(int data[50][8], string names[50]) {

int amount = 0;
amount = fillAndDisplay(data, names);

for (int i = 0; i < amount; i++) {
    cout << names[i] << " ";

    for (int j = 0; j < 8; j++) {
        cout << data[i][j] << " ";
    }

    cout << endl;

}


}

当打印出数组的代码在函数中打印出来时:

Franks,Tom 2 3 8 3 6 3 5 30
Gates,Bill 8 8 3 0 8 2 0 29
Jordan,Michael 9 10 4 7 0 0 0 30
Bush,George 5 6 5 6 5 6 5 38
Heinke,Lonnie 7 3 8 7 2 5 7 39
Press any key to continue . . .

但是当代码只在main中时会打印出来

Heinke,Lonnie 7 3 8 7 2 5 7 39
Bush,George 5 6 5 6 5 6 5 38
Jordan,Michael 9 10 4 7 0 0 0 30
Franks,Tom 2 3 8 3 6 3 5 30
Gates,Bill 8 8 3 0 8 2 0 29
Press any key to continue . . .

它应该打印出来。

0 个答案:

没有答案