#include <iostream>
#include <string>
using namespace std;
// Declaration of the function indexvalue()
int *maxArr(int [], const int);
// Another function used to print out an error message
void
problem(string str) {
cout << str << endl;
exit(1);
}
const int Size = 10;
int main()
{
int a[Size] = {23, 45, 12, 76, 9, 131, 10, 8, 23, 4};
int *b, i;
string error1("Problem with maxArr(), wrong subscript");
string error2("Problem with maxArr(), output should be NULL");
// Call the function multiple times with different input
// Note the use of pointer arithmetic
if (maxArr(a,Size)!= a+5) problem(error1);
if (maxArr(a,Size-5)!= a+3) problem(error1);
if (maxArr(a+6,4)!= a+8) problem(error1);
if (maxArr(a,0)!= NULL) problem(error2);
// The function passed all the tests
cout << "The function passed all the tests in this program\n" << endl;
exit(0);
}
int *maxArr(int arr[], int size){
int max = 0;
int index = 0;
if ( size < 0)
return NULL;
for (int i = 0; i < size; i++) {
if (arr[i] > max )
{
max = arr[i];
index = i;
}
return arr + i;
}
}
maxArr() の仕様
この関数は、整数配列と要素数をパラメーターとして受け入れます。この関数は、配列の最大値を指す int のアドレスを返します。
maxArr() 関数の何が問題なのかを理解しようとしていますが、これまでに修正したのは、null ケースを処理するために if(size < 0) を if (size <= 0) に変更することだけです。 error1 メッセージを考慮して関数を修正する方法を考えてください。どんな助けでも大歓迎です。