Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Hello, Can someone help me with this please? I need an object to call the recurs

ID: 3839917 • Letter: H

Question

Hello,

Can someone help me with this please? I need an object to call the recursiveBinarySearch and I need to declare ret but I am unsure how to. The following errors came up:

1. 'ret' was not declared in this scope in BinarySearch_test.cpp

2. 'recursiveBinarySearch' was not declared in this scope in BinarySearch_test.cpp

Here is the code:

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

BinarySeach.cpp


#include "BinarySearch.h"
#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) ;
}
}

BinarySeach_test.cpp

#include "BinarySearch.h"
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
BinarySearch x;
char a[] = "dataarray.bin";
x.readBinaryFile(a);
  
int targetValue;
cout << "Enter a Value to search:";
cin >> targetValue;


recursiveBinarySearch(0, ret.size()-1, targetValue) ;
  
  
return 0;
  
}

Explanation / Answer

soln--

you should use the :: operator while implementing class member function

void BinarySearch::recursiveBinarySearch(int start_index, int end_index, int targetValue)

{

...

}

and the array a[] which you are giving to BinarySearch object x is actually your ret , you change the name of a[] to ret[].

Your program will get rid of the errors you are showing.

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote