1

3 つの異なる配列を受け入れる関数を作成しようとしています。これらの配列は、それぞれ string、double、および double 型です。この関数は、これらの配列にデータを入力してから、それらをメインに返します。ただし、すべての配列が同じデータ型を保持しているわけではないため、関数の戻り値の型として何を宣言すればよいかわかりません。配列を引数として受け入れる関数を以下に示します

void additems(string arry1[], double arry2[], double arry3[], int index)
{
/*************************  additems **************************
NAME: additems
PURPOSE: Prompt user for airport id, elevation, runway length.  Validate input and add to 3 seperate parallel arrays
CALLED BY: main
INPUT: airportID[], elevation[], runlength[], SIZE
OUTPUT: airporID[], elevation[], runlength[]
****************************************************************************/
    //This function will prompt the user for airport id, elevation, and runway     length and add them to 
    //separate parallel arrays
    for (int i=0; i<index; i++)
    {
        cout << "Enter the airport code for airport " << i+1 << ". ";
        cin >> arry1[i];
        cout << "Enter the maximum elevation airport " << i+1 << " flys at (in ft). ";
        cin >> arry2[i];
        while (arry2[i] <= 0)
        {
            cout << "\t\t-----ERROR-----";
            cout << "\n\t\tElevation must be greater than 0";
            cout << "\n\t\tPlease re enter the max elevation (ft). ";
            cin >> arry2[i];
        } 
        cout << "Enter the longest runway at the airport " << i+1 << " (in ft). ";
        cin >> arry3[i];
        while (arry3[i] <= 0)
        {
            cout << "\t\t-----ERROR-----";
            cout << "\n\t\tRunway length must be greater than 0";
            cout << "\n\t\tPlease re enter the longest runway length (ft). ";
            cin >> arry3[i];
        }
        cout << endl;
    }   

    return arry1, arry2, arry3;
   }

私の質問を検討してくれてありがとう

4

2 に答える 2

4

関数によって変更されるため、配列を返す必要はありません。このような関数に配列を渡すと、配列は参照によって渡されます。通常、データ型は値で渡されます (コピーされます) が、配列はポインタのように扱われます

したがって、単に return void、または必要に応じて、成功を示す何らかの値を返すことができます (それが適切な場合)。入力されたレコードの数を示すために整数を返したい場合があります (ユーザーがindexレコード未満を入力するオプションを持っている場合)。

于 2012-10-25T04:40:18.370 に答える
1

あなたはただ言うことができます

return;

または完全に省略します。渡された配列をその場で変更しているので、何も返す必要はありません。

于 2012-10-25T04:43:15.573 に答える