2013-05-22 4 views
0

나는 int 값의 1 차원 배열과 정수 값의 두 매개 변수를 전달하는 함수를 작성한다고 가정합니다. 이 함수는 두 번째 매개 변수에 가장 가까운 값을 배열에서 찾습니다. 내 코드는 작동하지만 숫자 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; 

} 

답변

5

를 원래의 코드에서, 숫자 1-5 배열의 첫 번째 요소에 가장 가까운 수 있습니다. 이 때문에 if 문에있는 코드는 실행되지 않으며 num을 반환하면 초기 값인 0이 반환됩니다. 이 문제를 해결하려면 num을 다르게 초기화하십시오.

int num = anArray[0]; // <-- used to be 0 
+0

아 나는 뭔가를 간과하고 있다는 것을 알았습니다. 도와 주셔서 감사합니다! – Nick

+1

@Nick 디버거 (또는'printf' 또는'cout' 문 사용)로 진단하기가 꽤 쉽습니다. 또한 코드를 쳐다 보는 것보다 훨씬 실망 스럽습니다. – sfstewman

관련 문제