2013-04-09 236 views
1

我知道我的代码还没完成,我没有要求完成它。它应该输入一周内吃了3只猴子的食物和其他东西。但我碰到了一个障碍。它给了我一个错误(错误:没有运算符“< <”匹配这些操作数)当我把cin放在磅的功能。我没有通过阵列正确的是,为什么它不工作?感谢C++将2d数组传递给函数

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

回答

0

您已经声明array含有const double小号任何帮助。他们是不变的,所以你不能写信给他们,因为你正在试图用cin >> array[index][count];。只要改变参数声明:

double array[][DAYS] 

也许你应该考虑何时以及为什么要声明一个变量作为const

为了避免后面的混淆,在这里值得一提的是,没有数组类型参数这样的事情。以上参数实际上被转换为:

double (*array)[DAYS] 

但是,你的代码被恰当地写入与这个工作(你传递的row s到该函数的数量)。

0

声明:

const double array[][DAYS], 

然而,内poundsEaten功能,你要求用户输入信息填写array,这意味着array不是const的,因此,错误。从参数中删除const限定符,以便可以通过用户输入更改array

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

BTW:不要使用array为变量名的数组,使用一些其他的名字很好的做法。 同时,您的poundsEaten函数中不会使用cols