I have this C++ code that contains the following errors:
1. readBinaryFile
was not declared in this scope
2. ret
was not declared in this scope
3. recursiveBinarySearch
was not declared in this scope.
Can someone please help me understand why these errors are coming up?
Thank you in advance.
BinarySearch.h
#ifndef BINARYSEARCH_H
#define BINARYSEARCH_H
using namespace std;
class BinarySearch
{
public:
char readBinaryFile(char *fileName);
int recursiveBinarySearch(int start_index, int end_index, int targetValue);
};
#endif
BinarySearch.cpp
#include<iostream>
#include<fstream>
#include<cstdlib>
#include<vector>
using namespace std;
//vector to dynamically store large number of values...
vector<unsigned int> ret;
//variable to count the number of comparisions...
int n=0;
//method to read file....
void readBinaryFile(char* fileName)
{
ifstream read(fileName);
unsigned int current;
if(read!=NULL)
while (read>>current) {
ret.push_back(current);
}
}
//recursive binary search method
void recursiveBinarySearch(int start_index, int end_index, int targetValue)
{
int mid = (start_index+end_index)/2;
if(start_index>end_index)
{
cout<<n<<":-"<<endl;
return ;
}
if(ret.at(mid)==targetValue)
{
n++;
cout<<n<<":"<<mid<<endl;
return ;
}
else if(ret.at(mid)<targetValue)
{
n=n+2;//upto here two comparisions have been made..so adding two
start_index=mid+1;
return recursiveBinarySearch(start_index,end_index,targetValue) ;
}
else
{
n=n+2;
end_index=mid-1;
return recursiveBinarySearch(start_index,end_index,targetValue) ;
}
}
BinarySearch_test.cpp
#include "BinarySearch.h"
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
char a[] ="dataarray.bin";
//assuming that all integers in file are already in sorted order
readBinaryFile(a);
int targetValue;
cout<<"Enter a Value to search:";
cin>>targetValue;
recursiveBinarySearch(0,ret.size()-1,targetValue) ;
return 0;
}