1

私は自分のコードが完成していないことを知っていますが、それを行うように求めていません。3 匹のサルが 1 週間で食べたエサなどを入力することになっています。しかし、私は思わぬ障害にぶつかりました。cinをlbsEaten関数に入れると、エラーが発生します(エラー:これらのオペランドに一致する演算子「<<」はありません)。配列を正しく渡していないので、機能していませんか? 助けてくれてありがとう

#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

あなたは宣言します:

const double array[][DAYS],

ただし、poundsEaten関数内では、 に入力する情報をユーザーに入力するように求めています。これは、が const ではないため、エラーでarrayあることを意味します。ユーザー入力によって変更できるように、パラメータから修飾子をarray削除します。constarray

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

arrayところで:配列の変数名として使用しないでください。良い習慣のために他の名前を使用してください。一方、関数cols内では使用されません。poundsEaten

于 2013-04-09T17:29:12.253 に答える
0

arraysを含むと宣言しましconst doubleた。それらは一定であるため、 でやろうとしているように書き込むことはできませんcin >> array[index][count];。パラメータ宣言を次のように変更するだけです。

double array[][DAYS]

おそらく、いつ、なぜ変数を として宣言する必要があるかを考える必要がありますconst

後の混乱を避けるための余談ですが、ここで言及する価値があるのは、配列型パラメーターのようなものは存在しないということです。上記のパラメーターは、実際には次のように変換されます。

double (*array)[DAYS]

ただし、コードはこれで動作するように適切に記述されています (row関数に s の数を渡しました)。

于 2013-04-09T17:28:27.440 に答える