2013-04-09 234 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