1

割り当ての 1 つで、配列の要素またはすべての要素を出力するオーバーロードされた関数printを作成する必要があります。配列全体を印刷しても問題ありません。

for( int i = 0; i < size; i++)
    cout << list [ i ] <<endl;

しかし、特定の要素を 1 つだけ出力する同じ関数を作成するにはどうすればよいでしょうか? 私が見る方法は、1 つの要素またはすべての数字のどちらを印刷するかをユーザーに尋ねることです。それとも、ここで何か不足していますか?

4

2 に答える 2

1

配列全体の印刷

print (const int *arr) const
{
   // code you have written
}

特定の配列要素の印刷

print (const int *arr, const int index)const // overloaded function
{
  // validate index and print arr[index]
   if (index >=0 && index<size)
       cout << *(arr+index)

}
于 2012-12-01T17:05:07.347 に答える
0

(オーバーロードについて話しているので、C++を使用していると思います。)

別の関数をオーバーロードする関数は、もはや同じ関数ではありません。あなたの場合、1 つの要素を出力する 1 つの関数が必要になります。言い換えれば、1つだけint

void print(int num)
{ cout << num << endl; }

次に、範囲を取り、それを出力するオーバーロードを提供します。

(範囲内では、end要素は「範囲の終わりの 1 つ後」を参照し、出力されるべきではないことに注意してください。)

void print(int* begin, int* end)
{
    while (begin != end) {
        cout << *begin << endl;
        // Or if you want to follow correct decomposition design:
        // print(*begin);
        ++begin;
    }
}

2 つの機能の使用法:

int array[3] = {1, 2, 3};
print(array[0]);
print(array, array + 3);
于 2012-12-01T17:10:54.263 に答える