- 论坛徽章:
- 0
|
下面是一个function,我原意是用来分类列表的,当调用C,V,M,A的时候分别会询问F或者S,并显示具体number,而不是xx.dat下的列表顺序.可是我的code就是不能正常显示,但是不知道哪里错了.请各位帮我看看..
//============================================================================
void VehicleAnalysis (void)
{
char cVehicle;
char cMode;
cout << "Enter user selection of vehicle type C/V/M/A : " << endl;
cin >;>; cVehicle;
cout << "Enter selection of full report or summary F/S : " << endl;
cin >;>; cMode;
cout << endl;
if ((cVehicle == 'C') || (cVehicle == 'V') || (cVehicle == 'M'))
{
DisplayReport(cVehicle, cMode);
}
else if (cVehicle == 'A')
{
DisplayReport('C', cMode); cout << endl << endl;
DisplayReport('V', cMode); cout << endl << endl;
DisplayReport('M', cMode);
}
// wait for user
Continue();
}
//============================================================================
void DisplayReport (char cVehicleType, char cMode)
{
const int iMAX = 200; // maximun number of journey to process
ifstream fileJourney; // input file
int iDriver; // journey data
char cVehicle;
int iMins;
int iDistance;
int iIndex; // loop count
int iCJourCount; // count of CAR journeys
int iVJourCount; // count of VAN journeys
int iMJourCount; // count of MINIBUS journeys
int iCDriverArray [iMAX];
int iVDriverArray [iMAX];
int iMDriverArray [iMAX];
float fCJourValue[iMAX]; // array of car journey values
float fVJourValue[iMAX]; // array of van journey values
float fMJourValue[iMAX]; // array of minibus journey values
float fCAverageVal; // average value of car journey values
float fVAverageVal; // average value of van journey values
float fMAverageVal; // average value of minibus journey values
float fCTotalVal; // total value of car journey values
float fVTotalVal; // total value of van journey values
float fMTotalVal; // total value of minibus journey values
// open file and check status
fileJourney.open("journey.dat", ios::in);
if (fileJourney.bad())
{
cout << "Error opening file." << endl;
exit(-1);
}
//initialise
iCJourCount = 0;
iVJourCount = 0;
iMJourCount = 0;
// read first record
fileJourney >;>; iDriver >;>; cVehicle >;>; iMins >;>; iDistance;
// loop until end of file
while (!fileJourney.eof() && iCJourCount < iMAX && iVJourCount < iMAX && iMJourCount < iMAX)
{
if (cVehicle == 'C')
{
// store CAR journey values in arrays and increment journey count
iCDriverArray[iCJourCount] = iDriver;
fCJourValue[iCJourCount] = CalcEfficiency(iMins, iDistance);
iCJourCount++;
// sum up total value of car journey values
fCTotalVal = 0;
for (iIndex = 0; iIndex < iCJourCount; iIndex++)
{
fCTotalVal = fCTotalVal + fCJourValue[iIndex];
}
// calculate average value of CAR journey values
fCAverageVal = fCTotalVal / iCJourCount;
// read next record
fileJourney >;>; iDriver >;>; cVehicle >;>; iMins >;>; iDistance;
}
else if (cVehicle == 'V')
{
// store van journey values in arrays and increment journey count
iVDriverArray[iVJourCount] = iDriver;
fVJourValue[iVJourCount] = CalcEfficiency(iMins, iDistance);
iVJourCount++;
// sum up total value of VAN journey values
fVTotalVal = 0;
for (iIndex = 0; iIndex < iVJourCount; iIndex++)
{
fVTotalVal = fVTotalVal + fVJourValue[iIndex];
}
// calculate average value of VAN journey values
fVAverageVal = fVTotalVal / iVJourCount;
// read next record
fileJourney >;>; iDriver >;>; cVehicle >;>; iMins >;>; iDistance;
}
else if (cVehicle == 'M')
{
// store MINIBUS values in arrays and increment journey count
iMDriverArray[iMJourCount] = iDriver;
fMJourValue[iMJourCount] = CalcEfficiency(iMins, iDistance);
iMJourCount++;
// sum up total value of MINIBUS journey values
fMTotalVal = 0;
for (iIndex = 0; iIndex < iMJourCount; iIndex++)
{
fMTotalVal = fMTotalVal + fMJourValue[iIndex];
}
// calculate average value of MINIBUS journey values
fMAverageVal = fMTotalVal / iMJourCount;
// read next record
fileJourney >;>; iDriver >;>; cVehicle >;>; iMins >;>; iDistance;
}
}
// check whether journey limit reached before and of file
if ((iCJourCount == iMAX) || (iVJourCount == iMAX) || (iMJourCount == iMAX))
{
cout << "WARNING! Journey limit reached, further journeys ignored" << endl;
}
if (cMode == 'S')
{
if (cVehicle == 'C')
{
cout << "Summary of Car journey" << endl;
cout << "-----------------------" << endl;
cout << endl;
cout << "Number of Car journeys is " << iCJourCount << endl;
cout << "Average value is " << fCAverageVal;
}
else if (cVehicle == 'V')
{
cout << "Summary of Van journey" << endl;
cout << "----------------------------" << endl;
cout << endl;
cout << "Number of Van journeys is " << iVJourCount << endl;
cout << "Average value is " << fVAverageVal;
}
else if (cVehicle == 'M')
{
cout << "Summary of Minibus journey" << endl;
cout << "---------------------------------" << endl;
cout << endl;
cout << "Number of Minibus journeys is " << iMJourCount << endl;
cout << "Average value is " << fMAverageVal;
}
}
else if (cMode == 'F')
{
if (cVehicle == 'C')
{
cout << "Full report of Car journey" << endl;
cout << "---------------------------" << endl;
cout << endl;
for (iIndex = 0; iIndex < iCJourCount; iIndex++)
{
cout <<"Driver" << iCDriverArray[iCJourCount] << ": " << fCJourValue[iIndex] << endl;
}
cout << "Number of Car journeys is " << iCJourCount << endl;
cout << "Average value is " << fCAverageVal;
}
else if (cVehicle == 'V')
{
cout << "Full report of Van journey" << endl;
cout << "--------------------------------" << endl;
cout << endl;
for (iIndex = 0; iIndex < iVJourCount; iIndex++)
{
cout <<"Driver" << iVDriverArray[iCJourCount] << ": " << fVJourValue[iIndex] << endl;
}
cout << "Number of Van journeyns is " << iVJourCount << endl;
cout << "Average value is " << fVAverageVal;
}
else if (cVehicle == 'M')
{
cout << "Full report of Minibus journey" << endl;
cout << "-------------------------------------" << endl;
cout << endl;
for (iIndex = 0; iIndex < iMJourCount; iIndex++)
{
cout <<"Driver" << iMDriverArray[iCJourCount] <<": " << fMJourValue[iIndex] << endl;
}
cout << "Number of Minibus journeys is " << iMJourCount << endl;
cout << "Average value is " << fMAverageVal;
}
}
// close file
fileJourney.close();
}
//============================================================================ |
|