简体   繁体   中英

Cannot convert int to int[][]

I am doing aa problem using Multi-dimensional Arrays. I call the function in main but I get this Error message. This is the Original Problem I have:

A local zoo wants to keep track of how many pounds of food each of its three tigers eats each day during a typical week. Write a program that stores this information in a two-dimensional 3 x 7 array, where each row represents a different tiger and each column represents a different day of the week. The program should first have the user input the data for each tiger. Then it should create a report that includes the following information:

  • Average amount of food eaten by each of the tigers during the week.
  • Average amount of food eaten by all the tigers per day for each day.
  • The least amount of food eaten during the week by any tiger.
  • The greatest amount of food eaten during the week by any tiger.

the code:

#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;
}

On this line:

inputArray(food[TIGERS][DAYS]);

in main , you are calling inputArray with a single int , and not the entire food array. In fact, even reading this position in food is UB.

You need to call the function like this:

inputArray(food);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM