1

我知道我的代码还没有完成,但我没有要求它完成。它应该输入 3 只猴子一周内吃掉的食物和其他东西。但我遇到了一个障碍。当我将 cin 放在磅Eaten 函数中时,它给了我一个错误(错误:没有运算符“<<”与这些操作数匹配)。我没有正确传递数组是为什么它不起作用吗?谢谢你的帮助

#include <iomanip>
#include <iostream>
using namespace std;

//Global Constants
const int NUM_MONKEYS = 3;
const int DAYS = 7;

//Prototypes
void poundsEaten(const double[][DAYS],int, int);
void averageEaten();
void least();
void most();

int main()
{
    //const int NUM_MONKEYS = 3;
    //const int DAYS = 7;
    double foodEaten[NUM_MONKEYS][DAYS]; //Array with 3 rows, 7 columns

    poundsEaten(foodEaten, NUM_MONKEYS, DAYS);

    system("pause");
    return 0;
}

void poundsEaten(const double array[][DAYS], int rows, int cols)
{
    for(int index = 0; index < rows; index++)
    {
        for(int count = 0; count < DAYS; count++)
        {
            cout << "Pounds of food eaten on day " << (index + 1);
            cout << " by monkey " << (count + 1);
            cin >> array[index][count];
            // Here is where i get the error
        }
    } 
}
4

2 回答 2

0

您已声明array包含const doubles。它们是恒定的,因此您无法像尝试使用cin >> array[index][count];. 只需将参数声明更改为:

double array[][DAYS]

也许您应该考虑何时以及为什么应该将变量声明为const.

为了避免以后的混淆,这里值得一提的是,没有数组类型参数之类的东西。上面的参数实际上转化为:

double (*array)[DAYS]

但是,您的代码被适当地编写以使用它(您将rows 的数量传递给函数)。

于 2013-04-09T17:28:27.440 回答
0

你声明:

const double array[][DAYS],

但是,在poundsEaten函数内部,您要求用户输入信息以填写array,这意味着array它不是 const,因此是错误的。从参数中删除const限定符,以便array可以通过用户输入进行更改。

void poundsEaten(double array[][DAYS], int rows, int cols)

顺便说一句:不要array用作数组的变量名,使用一些其他名称以获得良好实践。同时,在你的函数cols内部不使用。poundsEaten

于 2013-04-09T17:29:12.253 回答