| rm214 (5) | |
|
So I am working with arrays and the idea is that the function finds the element in the array (I need to test this function taken out of a larger program)of the value that is specified in "item". When the value is within the input file range, (the input file I am using has 20 integers) the function is supposed to cout the specified parameters: Either the number is not found in the array or the number is found at element ____ , and the number of comparisons made. My problem is when I enter a number larger than the file holds, say 25 if the file has 1-20, then the cout is supposed to show the maximum comparisons but instead it is just printing 0 for comparisons. I need it to show all comparisons even if the number is not contained in the file. Thanks for any help. #include <iostream> #include <fstream> using namespace std; int sCount;//Global variable for sequential search comparisons. int bsCount;//Global variable for binary search comparisons. int search(int A[], int lo, int hi, int item) { int index = lo; //Used as a subscript to search array. int position = -1; //To record position of search value. bool found = false; //Flag to indicate if the value was found. while(index < hi && !found) { if(A[index] == item) //If the value is found. { found = true; //Set the flag. position = index; //Record the values subscript. } index++; //Go to the next element. sCount++; } return position; //Return the position or -1. } /////////////////////////////////////////////////////////////MAIN int main() { const int size = 100; int A[size]; int results; int binResults; int item = 18; //Manually input value here. ifstream in_file; ofstream out_file; char inputfile[size]; char outputfile[size]; int itemsread= 0, itemsdisplay= 0; cout << "Please enter the input file name."; //Output file cin >> inputfile; in_file.open(inputfile); cout << "Please enter output file."; //Input file cin >> outputfile; cout << endl; out_file.open(outputfile); /*itemsread= store(A, size, in_file);//Function 1 call cout << itemsread << " Numbers were read from " << inputfile << endl;//Prints items read from input*/ int lo= 0; int hi = itemsread - 1; /*itemsdisplay= display(A, lo, hi, out_file);//Function 2 call itemsdisplay= display(A, lo, hi, cout); cout << itemsdisplay << " Numbers were written to file " << outputfile << endl;//Prints items read from input*/ ////////////////////////////////////////////////////////////////////////////// //search goes where item is results= search(A, lo, hi, item); if (results == -1) cout << "That number is not found in the array."; cout << "That number is found at element " << (results + 1) << " of the array via linear search." << endl; cout << "Comparisons made with sequential search: " << sCount << endl; /////////////////////////////////////////////////////////////////////////////// //search goes where item is /*binResults= binSearch(A, lo, hi, item); if (binResults == -1) cout << "That number is not found in the array."; else { cout << "That number is found at element " << (binResults + 1) << " of the array via binary search." << endl; cout << "Comparisons made with binary search: "<< bsCount << endl;*/ in_file.close(); out_file.close(); return 0; } | |
|
|
|