0

2D 配列を生成するループがあり、この生成によって作成された値を関数に渡して、他の計算を実行したいと考えています。私はC++の初心者なので、明確な説明が大いに役立ちます。これが私のコードです:

for (int car = 1; car <= 27; car++) {

    int test[27][3] = {{car, mpg[car], speed[car]}};

    float speed = speed[car];

    timeGen(speed);

    cout << car << "\t" << mpg[car] << "\t" << speed[car] << endl;
}

これはtimeGen機能です:

float timeGen(float x)
{
int distance = 50;
float speed = x;
float time = distance/x;
return time;
}

すべてが正常に機能するように見えますが、「添字には配列またはポインター型が必要です」というエラーが表示されます。それらが何を意味するのか、私は少し混乱しています。このインデックスへのポインターを作成し、timeGen関数でポインターを呼び出すように指示していますか? 説明は素晴らしいでしょう!

どうもありがとうございました。また、値mpgspeedは、正常に動作するコードの別の部分から取得されます。私が今抱えている問題を解決する方法についての指示は、素晴らしいでしょう!

4

2 に答える 2

0

speedを定義する前に名前を付けた配列があっても、float speedこの定義の直後に範囲外になります。これを試して:

float Cur_speed = speed[car];
timeGen(Cur_speed);

また

timeGen(speed[car]); // without the float speed

もう 1 つのことは、各反復で の新しいインスタンスを作成していることですtest。本当に欲しいのは、単一のtest配列を持つことです。

int test[27][3];
for (int car = 0; car < 27; car++) {
 test[car][0] = car;
 test[car][1] = mpg[car];
 test[car][2] = speed[car];

27 要素の配列であることを確認しmpg、常に 0 から 26 までのインデックスを使用しますspeed。配列についても同じです。と言うときは、定義により合計 3 つの要素を持つtest[car][0]の最初の要素を意味します。test[car]基本的に、行test[car][X] = Y;は でやりたいことと同じことを行いますがtest[27][3] = {{car, mpg[car], speed[car]}}、その構文は最初に配列を宣言したときにのみ機能します。そして、あなたがそれを書く方法は、27個の要素すべてを同じデータで初期化します.

于 2013-02-28T06:24:04.820 に答える