I am relatively new to programming in general and C++ in particular and starting to learn, using the Malik book. Currently I am doing an exercise using a sequential search algorithm (Chapter 9).
Basically I initialize an int array of size 10 with zeros. Then element 7 is changed to 1. Via cin I collect a user input (integer) which is the number to be searched.
Now the problem is that the search function from the book is somehow not working. I added a function to see how the array looks like and there is definitely one element with value 1 that should be found, but it simply isn't. The function always returns -1 (element not found).
The program compiles, but doesn't work as it is supposed to.
I cannot find the mistake, please help :)
//********************************************************
// search algorithm for arrays
//********************************************************
#include <iostream>
usingnamespace std;
void initializeArray(int list[], int listSize);
int seqSearch(int list[], int listLength, int searchItem);
void printArray(int list[], int listSize);
int main()
{
int maximum = 10;
int array[maximum];
int result;
int input;
cout << "Enter number to search in array!" << endl;
cin >> input;
// set all array elements to 1;
initializeArray(array, maximum);
cout << "before change" << endl;
printArray(array, maximum);
// change array element No. 7 to 0
array[7] = 1;
cout << "after change" << endl;
printArray(array, maximum);
// search user input in array
result = seqSearch(array, maximum, input);
if (result = -1)
cout << "Item not found!" << endl;
else
cout << "Item found at position: " << result << "!" << endl;
return 0;
}
int seqSearch(int list[], int listLength, int searchItem)
{
int loc;
bool found = false;
loc = 0;
while (loc < listLength && !found)
if (list[loc] == searchItem)
found = true;
else
loc++;
if (found)
return loc;
elsereturn -1;
}
void initializeArray(int list[], int listSize)
{
int index;
for (index = 0; index < listSize; index++)
list[index] = 0;
}
void printArray(int list[], int listSize)
{
int index;
for (index = 0; index < listSize; index++)
cout << list[index] << endl;
}