Alright, mine's a long one. The error I keep on getting is bin_search local funtion defs are illegal.
Think there is something worng with my binary search. Anyone see what's worng with it?
I'm sapose to have it display
1. The number of searches completed
2. The number of successful searches
3. The percentage of successful searches
4. The average number of tests per search
#include <iostream>
#include <ctime>
usingnamespace std;
int bin_search(int a[], int n, int& target);
// sel sort
void selsort(int a[], int size)
{
int i, j, maxpos, temp;
for (i=0; i < size; i++)
{
maxpos = i;
for (j=maxpos+1; j < size; j++)
if (a[j] > a[maxpos])maxpos = j;
temp = a[i];
a[i] = a[maxpos];
a[maxpos] = temp;
}
}
int main()
{
int A[150];
int target;
int num_searches = 0;
int suc_search = 0;
int tests = 0;
srand((unsigned)time(NULL));
int random_integer;
// random nums
{
for (int i = 0; i < 150; i++)
A[i] = (rand()%200)+1;
// sorts
selsort(A,150);
for (int i = 0; i < 200; i++)
{
target = (rand()%200)+1;
num_searches++;
if (bin_search(A, 150, target)!=-1)
suc_search++; // sucessfull searches
}
int bin_search (int a[], int n, int& target)
{
// Precondition: array a is sorted in ascending order
int first = 0;
int last = n - 1;
int mid = (first + last) / 2;
while ((a[mid] != target) && (first <= last))
{
tests++;
if (target < a[mid])
last = mid - 1;
else
first = mid + 1;
mid = (first + last) / 2;
}
if (a[mid] == target) return mid;
return -1; // target not found
}
int report (double num_searches, double suc_search, double tests);
{
cout <<"there are ["<< num_searches<<"] num of searches" << endl;
cout <<"there are ["<< suc_search<<"] num of sucessfull searches" << endl;
cout <<"there are ["<< suc_search/num_searches<<"] num of average searches" << endl;
cout <<"there are ["<< tests/200<<"] percent of sucessfull searches" << endl;
system("pause");
cout << "Press Enter to exit." << endl;
}
}
}