Monday, May 24, 2010

This prog is suppsed to read an input file containing records: vehicle code weight(codes are m,c and b)Help!!

#include%26lt;iostream%26gt;


#include%26lt;iomanip%26gt;


#include%26lt;fstream%26gt;


#include%26lt;cstring%26gt;


using namespace std;





void GetRates(float%26amp;, float%26amp;, float%26amp;, float%26amp;);





enum Vehicles{MOTORCYCLE, CAR, BUS, TRUCK};











int main()





{


float cycleRate;


float carRate;


float busRate;


float truckRate;


char code;


int weight;


ifstream inFile;


bool invalidData;





inFile.open("vehicleCode.dat");


if(!inFile)


{


cout%26lt;%26lt;"Unable to open input file, program abnormally ended"%26lt;%26lt;endl;


return 1;


}





inFile%26gt;%26gt;code%26gt;%26gt;weight;


{


if(code=='m')


code=MOTORCYCLE;


else if(code=='c')


code=CAR;


else if(code=='b')


code=BUS;


else if(code=='t')


code=TRUCK;


else


cout%26lt;%26lt;"Error: Invalid Vehicle type";





}


if(100%26lt;=weight%26amp;%26amp;weight%26lt;=99000)


invalidData=false;


else


cout%26lt;%26lt;"Error:Invalid weight(non integer)";


Vehicles code;





switch(code)


{


case MOTORCYCLE:cout%26lt;%26lt;"MOTORCYCLE";


break;


case CAR:cout%26lt;%26lt;"CAR";


break;


case BUS:cout%26lt;%26lt;"BUS";


break;


case TRUCK:cout%26lt;%26lt;"TRUCK";


default:cout%26lt;%26lt;"Invalid vehicle type";


}








GetRates(cycleRate, carRate, busRate, truckRate);





cout%26lt;%26lt;"ROAD TAX REPORT"%26lt;%26lt;endl;


cout%26lt;%26lt;"Vehicle Type:"%26lt;%26lt;" Weight:"%26lt;%26lt;" Rate:"%26lt;%26lt;" Tax Due:"%26lt;%26lt;endl;





if(code=='m')


cout%26lt;%26lt;code%26lt;%26lt;weight%26lt;%26lt;cycleRate%26lt;%26lt;weight*...


else if(code=='c')


cout%26lt;%26lt;code%26lt;%26lt;weight%26lt;%26lt;carRate%26lt;%26lt;weight*ca...


else if(code=='b')


cout%26lt;%26lt;code%26lt;%26lt;weight%26lt;%26lt;busRate%26lt;%26lt;weight*bu...


else if (code=='t')


cout%26lt;%26lt;code%26lt;%26lt;weight%26lt;%26lt;truckRate%26lt;%26lt;weight*...











return 0;


}





void GetRates(/*out*/ float%26amp; motorcycleRate,


/*out*/ float%26amp; carsRate,


/*out*/ float%26amp; busesRate,


/*out*/ float%26amp; trucksRate)





{


bool invalidData;


invalidData=true;


while(invalidData)


{


cout%26lt;%26lt;"Enter the tax rate for MOTORCYCLES(0.01-0.99)"%26lt;%26lt;endl;


cin%26gt;%26gt;motorcycleRate;





{





if(0.009%26lt;=motorcycleRate%26amp;%26amp;motorcycleRate...


invalidData=false;





else





cout%26lt;%26lt;"Warning: entry invalid, rate must be between 0.01 and 0.99"%26lt;%26lt;endl;





}


}


invalidData=true;


while(invalidData)


{





cout%26lt;%26lt;"Enter the tax rate for CARS(0.01-0.99)"%26lt;%26lt;endl;


cin%26gt;%26gt;carsRate;


{


if(0.009%26lt;=carsRate%26amp;%26amp;carsRate%26lt;=0.999)


invalidData=false;





else





cout%26lt;%26lt;"Warning: entry invalid, rate must be between 0.01 and 0.99"%26lt;%26lt;endl;





}


}


invalidData=true;


while(invalidData)


{


cout%26lt;%26lt;"Enter the tax rate for BUSES(0.01-0.99)"%26lt;%26lt;endl;


cin%26gt;%26gt;busesRate;


{





if(0.009%26lt;=busesRate%26amp;%26amp;busesRate%26lt;=0.999)


invalidData=false;





else





cout%26lt;%26lt;"Warning: entry invalid, rate must be between 0.01 and 0.99"%26lt;%26lt;endl;





}


}


invalidData=true;


while(invalidData)


{





cout%26lt;%26lt;"Enter the tax rate for TRUCKS(0.01-0.99)"%26lt;%26lt;endl;


cin%26gt;%26gt;trucksRate;


{





if(0.009%26lt;=trucksRate%26amp;%26amp;trucksRate%26lt;=0.999)


invalidData=false;





else





cout%26lt;%26lt;"Warning: entry invalid, rate must be between 0.01 and 0.99"%26lt;%26lt;endl;





}








}





}

This prog is suppsed to read an input file containing records: vehicle code weight(codes are m,c and b)Help!!
Looks like the problem is your switch statement. Code is a char, but your switch is looking for cases using the full strings.





switch(code)


{


case MOTORCYCLE:cout%26lt;%26lt;"MOTORCYCLE";


break;


case CAR:cout%26lt;%26lt;"CAR";


break;


case BUS:cout%26lt;%26lt;"BUS";


break;


case TRUCK:cout%26lt;%26lt;"TRUCK";


default:cout%26lt;%26lt;"Invalid vehicle type";


}





should be like (mind the caps too, id convert em to be safe):





switch(code)


{


case M:cout%26lt;%26lt;"MOTORCYCLE";


break;


case C:cout%26lt;%26lt;"CAR";


break;


case B:cout%26lt;%26lt;"BUS";


break;


case T:cout%26lt;%26lt;"TRUCK";


default:cout%26lt;%26lt;"Invalid vehicle type";


}
Reply:What problems are you having, and make sure you aren't having capitalization problems on your data.


No comments:

Post a Comment