2012-05-27 3 views
0

정렬 된 요소의 모양이 오름차순으로 나타나는 것을 찾는 데 도움이 필요합니다.배열의 요소 및 모양 번호를 찾으십시오.

다음 코드를 설정했지만 마지막 줄의 "expected parameter declarator"끝에 오류가 발생합니다. 또한 그것은 함수 binarySearch의 이전 프로토 타입이 없다는 것을 말하고 있습니다. 이것은 무엇을 의미합니까? 나는 그것을 보았고 처음에는 int binarySearch를 선언했지만 운이 없었다. 나는 왜이 코드가 실행되지 않는 지 정말로 알지 못한다. 그리고 나는 지난 두 시간 동안 디버깅을 보냈다.

#include <iostream> 
#include <algorithm> 
#include <vector> 

using namespace std; 


//sort then search 


int binarySearch(int arr[], int value, int left, int right) { 
    while (left <= right) { 
     int middle = (left + right)/2; 

     if (arr[middle] == value) 
      return middle; 
     else if (arr[middle] > value) 
      right = middle - 1; 
     else 
      left = middle + 1; 
    } 

    return -1; 

} 

int main() 
{ 
    int a[] = {12,3,4,4,4,5,6,7}; 

    int num; 

    num = sizeof(a)/sizeof(int); 

    for(int i=0; i<num; i++) 
     cout<<a[i]<<" "; 
    cout<<endl; 

    int value; 

    cout<<"Enter a value you want to find in the array."<<endl; 
    cin>>value; 

    cout<<"The element is at "<<int binarySearch(int a[], value, 0, int num); 
} 
+0

필요하지 않은 숙제 인 경우 자신의 이진 검색을 작성할 필요가 없습니다. 'std :: equal_range'는 당신이 필요로하는 것을 정확하게 줄 것입니다. –

+0

함수의 프로토 타입은'int binarySearch (int [], int, int, int);'줄입니다. 이들은 일반적으로 클래스 본문에서 찾을 수 있습니다. 경고의 한 가지 맛은 전역 함수를 정의하기 전에 경고가 없으면 경고합니다. – chris

답변

1

이것은 함수를 호출하는 방법이 아닙니다. 함수 정의 행을 복사하고 하나 또는 두 개의 인수를 바꿀 수는 없습니다. 해당 줄 바꾸기 :

cout<<"The element is at "<<binarySearch(a, value, 0, num); 

참고 :이 문제는 알고리즘 자체의 문제를 해결하는 것이 아니라 문제를 해결하는 데 도움이됩니다.

관련 문제