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;
		
	}
}

Last edited by shabbir; 6Nov2006 at 10:47.. Reason: Code formating.