Help - Binary Search

// This program demonstrates a Binary Search
// PLACE YOUR NAME HERE
#include <iostream>
using namespace std;
int binarySearch(int [], int, int); // function prototype
const int SIZE = 16;
int main()
{
int found, value;
int array[] = {34,19,19,18,17,13,12,12,12,11,9,5,3,2,2,0};
// 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;
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; // 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
}

I don't understand what this question is asking
I would greatly appreciate if someone could help me answer this question
Question: The variable middle is defined as an integer. The program contains
the assignment statement middle=first+(last-first)/2. Is the right side
of this statement necessarily an integer in computer memory? Explain how
the middle value is determined by the computer. How does this line of
code affect the logic of the program? Remember that first, last, and
middle refer to the array positions, not the values stored in those array
positions.
To us, that algebra would not always result in an integer. But in C++, diving integers will always return another integer - always. Can you think of how that would change your logic? If it has to return an integer, it'll either round up or down. C++, if the numerator and denominator are both integers, will always do one of those. Did your instructor go over which one? You could try outputting some division results to the console and observing the results.

Also, please use code tags
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
// This program demonstrates a Binary Search
// PLACE YOUR NAME HERE
#include <iostream>
using namespace std;
int binarySearch(int [], int, int); // function prototype
const int SIZE = 16;
int main()
{
  int found, value;
  int array[] = {34,19,19,18,17,13,12,12,12,11,9,5,3,2,2,0};
  // 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;
  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; // 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
      //I think you'll want to add something here
  }
  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
} 
So, middle is always an integer, but how it affects logic of the program?
Topic archived. No new replies allowed.