int 値の 1 次元配列と整数値の 2 つのパラメーターが渡される関数を作成するとします。この関数は、2 番目のパラメーターに値が最も近い配列内の値を見つけます。コードは機能しますが、1 ~ 5 の数字を入力すると出力が 0 になります。5 を超える数字を入力すると、正確な結果が得られ始めます。なぜこれが起こっているのかよくわかりませんが、これまでのコードは次のとおりです。
#include <iostream>
#include <cmath>
using namespace std;
const int MAX = 5;
int searchNearest(int anArray[],int key)
{
int value = abs(key - anArray[0]);
int num = 0;
for(int x = 0;x < MAX; x++)
{
if(value > abs(key - anArray[x]))
{
value = abs(key - anArray[x]);
num = anArray[x];
}
}
return num;
}
int main()
{
int A[MAX] = {3,7,12,8,10};
int search;
int nearest;
cout << "Enter a number to search: ";
cin >> search;
nearest = searchNearest(A,search);
cout << "The nearest number is: " << nearest << endl;
system("pause");
return 0;
}