首页 > 解决方案 > 无法将 int 转换为 int[][]

问题描述

我正在使用多维数组做一个问题。我在 main 中调用该函数,但收到此错误消息。这是我遇到的原始问题:

当地的一家动物园想要记录它的三只老虎在一个典型的一周内每天吃多少磅的食物。编写一个程序,将这些信息存储在一个二维 3 x 7 数组中,其中每一行代表不同的老虎,每列代表一周中不同的一天。该程序应该首先让用户输入每只老虎的数据。然后它应该创建一个包含以下信息的报告:

编码:

#include <iostream>
using namespace std;

const int TIGERS = 3;
const int DAYS = 7;
int food[TIGERS][DAYS];
void inputArray(int food[TIGERS][DAYS]);
float AvgTig(float);
float Least(float);
float most(float);

int main()
{
    float maximum;
    float minimum;
    float total = 0.0f;
    float average = 0.0f;
    float result = 0;

    inputArray(food);
    maximum = food[0][0];
    minimum = food[0][0];
    cout << "\n \n";
    AvgTig(result);
    cout << "\n \n";
    Least(minimum);
    cout << "\n \n";
    most(maximum);
    cout << "\n \n";

    system("PAUSE");

    return 0;

    //end program
}

void inputArray(int food[TIGERS][DAYS])
{
    int total = 0;
    for (int tig = 0; tig < TIGERS; tig++) {
        for (int day = 0; day < DAYS; day++) {
            cout << "TIGER " << (day + 1) << ", day " << (day + 1) << ": ";
            cin >> food[tig][day];
        }
        cout << endl;
    }
}

float AvgTig(float output)
{
    int total = 0;
    for (int i = 0; i < TIGERS; i++) {
        for (int day = 0; day < DAYS; day++) {
            total += food[i][day];
        }
        cout << endl;
    }
    output = total / (TIGERS * DAYS);
    cout << "Average food for Tigers in the days is :" << output << " ";
    return output;
}

float Least(float minimum)
{
    for (int least = 0; least < TIGERS; least++) {
        for (int day = 0; day < DAYS; day++) {
            if (food[least][day] < minimum)
                minimum = food[least][day];
        }
    }
    cout << "Minimum food eaten: " << minimum << " ";
    return minimum;
}

float most(float maximum)
{
    for (int most = 0; most < TIGERS; most++) {
        for (int day = 0; day < DAYS; day++) {
            if (food[most][day] > maximum)
                maximum = food[most][day];
        }
    }
    cout << " Maximum number of food is: " << maximum << " ";
    return maximum;
}

标签: c++

解决方案


在这条线上:

inputArray(food[TIGERS][DAYS]);

在 中main,您inputArray使用单个int不是整个food数组进行调用。事实上,连读这个职位food都是UB。

您需要像这样调用函数:

inputArray(food);

推荐阅读