В основном цель этой программы состоит в том, чтобы прочитать до 100 имен из файла, отсортировать с помощью пузырьковой сортировки, а затем найти введенное имя с помощью двоичного поиска.
Вроде бы все работает, за исключением того, что когда я ввожу имя, которое есть в списке, ничего не происходит, мне просто предлагают ввести имя еще раз.
Произнесите имя из списка Элвисом Пресли. Мне предлагают ввести имя. Я печатаю Элвиса Пресли. Я ДОЛЖЕН принять, что Элвис Пресли — твой друг. Не происходит. Любая помощь приветствуется.
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void bubblesort(string[], const int);
void search(string[], const int);
int sub = 0;
int main()
{
const int maxsize = 100;
string friendArray[maxsize];
ifstream friends;
friends.open("myFriends.dat");
while (sub < maxsize && getline(friends, friendArray[sub]))
sub++;
bubblesort(friendArray, sub);
search(friendArray, maxsize);
system("pause");
return 0;
}
void bubblesort(string *array, const int size)
{
bool swap;
string temp;
do
{
swap = false;
for (int count = 1; count < (size - 1); count++)
{
if(array[count-1] >array[count])
{
temp = array[count-1];
array[count-1] = array[count];
array[count] = temp;
swap = true;
}
}
}
while(swap);
}
void search(string *array, int size)
{
int first = 0;
int last = size - 1;
int middle;
string name;
bool friends = false;
do
{
cout<<"Please enter a name or END to terminate:";
cin>>name;
}
while(!friends && first <= last && name != "END");
{
middle = (first + last) / 2;
if (array[middle] == name)
{
friends = true;
cout<<array[middle]<<" is my friend."<<endl;
}
else if (array[middle] > name)
last = middle - 1;
else
last = middle + 1;
}
}