Quelle que soit la valeur que je recherche, le programme indique qu'il n'est pas trouvé dans le fichier. Je ne peux pas comprendre ce qui ne va pas avec mon code.Problème avec la fonction de recherche binaire
int main()
{
int array1[MAX_NUMBER];
int length;
int number;
int location;
input (array1, MAX_NUMBER, length);
cout<<"Please enter a number to search for:"<<endl;
cin>>number;
location=search(array1, length, number);
if (location!=-1)
{
cout<<"The number "<<number<<" was found in the "<<location<<" position."<<endl;
}
else
{
cout<<"The number "<<number<<" was not found in the file."<<endl;
}
return 0;
}
void input(int a[], int size, int& number_used)
{
ifstream infile;
int input;
infile.open("numbers.txt");
if (infile.fail())
{
cout<<"Input file opening failed."<<endl;
exit(1);
}
int i;
for (i=0; i<=size; i++)
{
while (infile>>input)
{
a[i]=input;
cout<<a[i]<<endl;
}
}
number_used=i;
}
int search(const int a[], int number_used, int search_value)
{
int start=1;
int end=number_used;
int key=search_value;
while (start<=end)
{
int mid=((start+end)/2);
if (a[mid]==key)
{
return mid;
}
if (a[mid]>key)
{
end=mid-1;
}
else
{
start=mid+1;
}
}
return -1;
}
Mon problème est-il dans le code principal ou dans la fonction de recherche?
fichier d'entrée:
1
5
6
7
11
19
21
23
33
54
78
97
Par exemple, en tapant 19, la sortie est "Le numéro 19 n'a pas été trouvé dans le fichier."
Votre problème est que vous n'utilisez pas un débogueur –