2
Contributors
4
Replies
5
Views
12 Years
Discussion Span
Last Post by Narue
0

>The error I keep on getting is bin_search local funtion defs are illegal.
You should listen to that error. It's telling you that you can't have a function definition nested inside of another function definition. bin_search is defined inside main, so that's illegal. What about report, you say? It's inside of main too, but because you terminated it with a semicolon, that makes it a declaration, which is perfectly legal. For proper operation you may want to fix that as well.

0

>The error I keep on getting is bin_search local funtion defs are illegal.
You should listen to that error. It's telling you that you can't have a function definition nested inside of another function definition. bin_search is defined inside main, so that's illegal. What about report, you say? It's inside of main too, but because you terminated it with a semicolon, that makes it a declaration, which is perfectly legal. For proper operation you may want to fix that as well.

Then should I move it outside the main or where to? Thes reprot would be wong too?

0

Then should I move it outside the main or where to? Thes reprot would be wong too?

Ok, I moved the bin_search out, now I get the error "n undeclared identifier." But whe I try to declare it, I jsut get more error. So where do I declare it?

#include <iostream> 
#include <ctime> 


using namespace std; 




	 int  bin_search(int a[], int tests, 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;
        }
        
}



// bin search

int bin_search (int  a[], inttests,  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  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  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 succfull searches"  << endl;
cout <<"there are ["<< suc_search/num_searches<<"] num of average searches"  << endl;
cout <<"there are ["<< tests/200<<"] percent of succfull searches"  << endl;

	  system("pause");

	cout << "Press Enter to exit." << endl;
	
}
}
}
0

n is the size of the array, it's not terribly difficult to figure out how to get it into bin_search. hint: pass it as an argument.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.