Everything on the code runs just the way it needs to, except for one thing. It keeps looping even through the program should be over.
I have this code. Everything on the code runs just the way it needs to, except for one thing. It keeps looping even through the program should be over. Can anyone help figure this out. I've talked to three tutors on here and each one keeps telling me they can't help. Maybe someone else can.
#include <iostream>
#include <string>
#include <bits/stdc++.h>
using namespace std;
int binarySearch(string arrayA[], string search_value, int sizeA);
int main()
{
int sizeA = 10;
int index;
string arrayA[] = {"Mike","Joe","John","Drew","Jenn","Anne", "Susan", "Debra", "Candy", "Aaron"};
string search_value;
int number;
cout << "This program attempts to search for a user entered name." << endl;
for(index = 0; index <= sizeA - 1; index++)
{
cout << "Enter how many names you would like to search for: ";
cin >> number;
int arrayNumber[number];
for(int i=0;i<number;i++){
cout << "Please enter the names you would like to search for: ";
cin >> search_value;
int result = binarySearch(arrayA, search_value, sizeA);
if (result == -1)
cout << "The name " << search_value << " was not found within the array using binary search." << endl;
else
cout << "The name " << search_value << " was found within the array using binary search." << result;
}
}
}
int binarySearch(string arrayA[], string search_value, int sizeA)
{
sort(arrayA, arrayA + sizeA);
int left = 0 ;
int right = sizeA - 1;
while (left <= right)
{
int middle = left + (right - 1) / 2;
int res = 101;
if (search_value == (arrayA[middle]))
res = 0;
if (res == 0)
return middle;
if (search_value > (arrayA[middle]))
left = middle + 1;
else
right = middle - 1;
}
return -1;
}
Trending now
This is a popular solution!
Step by step
Solved in 4 steps with 2 images