CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 3 of 3
  1. #1
    Join Date
    Oct 2015
    Posts
    13

    [RESOLVED] My out put is telling me that numbers in the array are not in the array.

    The program worked correctly when the numbers were in descending order, but when I changed the array to ascending order it is giving me wrong output.

    Code:
    #include<iostream>
    using namespace std;
    
    int binarySearch(int [], int, int);  // function prototype
    
    const int SIZE = 16;
    
    int main()
    {
    	int found, value;
    	int array[] = { 0,2,2,3,5,9,11,12,12,12,13,17,18,19,19,34 };
    // array to be searched
    	
    	cout << "Enter an integer to search for:" << endl;
    	cin >> value;
    
    	found = binarySearch(array, SIZE, value); //function call to perform the binary search
    	                                          //on array looking for an occurrence of value
    	if (found == -1)
    		cout << "The value " << value << " is not in the list" << endl;
    	else
    	{
    		cout << "The value " << value << " is in position number "
    		     << found + 1 << " of the list" << endl; 
    	}
    
    		system("pause");
    	return 0;
    }
    
    
    //*******************************************************************
    //                     binarySearch
    //
    // task:		  This searches an array for a particular value
    // data in:       List of values in an orderd array, the number of 
    //                elements in the array, and the value searched for
    //                in the array
    // data returned: Position in the array of the value or -1 if value
    //                not found
    //
    //*******************************************************************
    int binarySearch(int array[],int numElems,int value) //function heading
    {
    	int first = 0;				    // First element of list
    	int last = numElems - 1;	    // last element of the list
    	int middle = 0;                 // variable containing the current 
    	                                // middle value of the list
    	
    	while (first <= last)
    	{
    		middle = first + (last - first) / 2; 
    		   
    	if (array[middle] == value)
    		return middle;		       // if value is in the middle, we are done
    	                                 
    	else if (array[middle]<value)
    		last = middle - 1;		   // toss out the second remaining half of
    								   // the array and search the first 
    	else
    		first = middle + 1;		   // toss out the first remaining half of
    								   // the array and search the second
    	}
    	
    	return -1;					   // indicates that value is not in the array
    }

  2. #2
    GCDEF is offline Elite Member Power Poster
    Join Date
    Nov 2003
    Location
    Florida
    Posts
    12,635

    Re: My out put is telling me that numbers in the array are not in the array.

    Think about how a binary search works. It depends on the array being sorted and making decisions based on whether the value at the array position is greater than or less than the value you're seeking. Obviously the action you take would be different based on the order of the array.

  3. #3
    Join Date
    Oct 2015
    Posts
    13

    Re: My out put is telling me that numbers in the array are not in the array.

    Ohhhh now I understand. I thought of something like what you said before coming here but wasn't sure on which line to modify. I modified "else if (array[middle]<value)" to "else if (array[middle]>value)" and got my desired output. Thank You.

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured