Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   Parallel Arrays (http://www.go4expert.com/forums/parallel-arrays-t1806/)

Rdrnnr62 4Nov2006 20:43

Parallel Arrays
 
Need help loading parallel arrays from a data file. My display is skipping the first 27 lines and starting from element [28]. The search methods are working fine until I search for an element that has not been loaded. Please help.
Code:

#include <fstream>
using namespace std;
class EmployeeData
{
        private:
                int empID [200];
                double empPayRate [200];
                int empCt;
                int index;
                double payRate;
                int found;
                int mid;
                int seqCt;
                int binCt;


        public:
                EmployeeData();
                void loadArrays();
                void printArray();
                int seqSearch(int);
                int binSearch(int);
                void displaySeqSearchResults();
                void displayBinSearchResults();
};



EmployeeData::EmployeeData()
{
        empCt = 0;
        seqCt = 0;
        binCt = 0;
        payRate = 0.0;
        for(int empCt = 0; empCt < 200; ++empCt)
        {
                empID [index] = 0;
       
        }
}

void EmployeeData::loadArrays()
{
        ifstream employee;

        employee.open("employee.dat");
        if(employee.is_open())
        {
                employee      >>        empID[empCt]
                            >>        empPayRate[empCt];
                                       

                while(!employee.eof())
                {
                        index = empCt;
                        empCt = empCt + 1;
                        employee            >>        empID[empCt]
                                    >>        empPayRate[empCt];
                                               
                }
                employee.close();
        }

        else
        {
                empCt = -1;
                Console::WriteLine("\nFile Failed To Open");
        }
}
int EmployeeData::seqSearch(int reqEmpID)
{
        found = -1;
        index = 0;
        seqCt = 0;

        for(index = 0; index < empCt; ++index)
        {
                ++seqCt;

                if(reqEmpID == empID[index])
                {
                        found = empID[index];
                        payRate = empPayRate[index];
                        return found;
                }
        }
        return found;
}
int EmployeeData::binSearch(int reqEmpID)
{
        int first = 0;
        int last = empCt - 1;
        int found = 0;

        while(first <= last && found == 0)
        {
                mid = (first + last) / 2;
                ++binCt;

                if(empID[mid] == reqEmpID)
                {
                        found = 1;
                        payRate = empPayRate[mid];
                        mid = empID[mid];
                }

                        if(empID[mid] < reqEmpID)
                        {
                                first = mid + 1;
                        }
                        else
                        {
                                last = mid - 1;
                        }
                if(found == 0)
                {
                        mid = -1;
                }
                else
                {
                        return mid;
                }
               
        }
}
void EmployeeData::displaySeqSearchResults()
{
        if(found == -1)
        {
                Console::Write("\nSequential could not find employee.");
        }
        else
        {
                Console::WriteLine("\nSequential found employee {0} and the pay Rate is {1}",
                        found.ToString("D0"), payRate.ToString("C2"));
                Console::WriteLine("\nSequential took {0} searches to find employee.",
                        seqCt.ToString("D0"));
        }
       
}
void EmployeeData::displayBinSearchResults()
{
        if(mid == -1)
        {
                Console::Write("\nBinary could not find employee.");
        }
        else
        {
                Console::WriteLine("\nBinary found employee {0} and the pay rate is {1}",
                        mid.ToString("D0"), payRate.ToString("C2"));
                Console::WriteLine("\nBinary took {0} searches to find employee.",
                        binCt.ToString("D0"));
        }
}
void EmployeeData::printArray()
{
        while(index < empCt)
        {
                Console::WriteLine("\nEmployee #{0} Pay Rate {1} ",
                        empID[index].ToString("D0"), empPayRate[index].ToString("C2"));
                ++index;
               
        }
}



All times are GMT +5.5. The time now is 05:35.