//CST116_Lab3_joetraver.ccp #include #include #include using std::cin; using std::cout; using std::endl; using std::setw; using std::setprecision; using std::fixed; using std::ios; using std::ifstream; using std::ofstream; const int MAX = 100; // Functions used int ReadData(ifstream& inFile, int pick[], int drop[], int psgr[], float dist[], float fare[], float toll[], float tfare[], float CPM[]); void WriteOutputFile(ofstream& outFile, int pick[], int drop[], int psgr[], float dist[], float fare[], float toll[], float tfare[], float CPM[], int counter); void PrintTotalsAndSummary(ofstream& outFile, int totalRecords); void PassengerCount(ofstream& outFile, int psgr[], int counter, int &pplt); void TotalPaid(ofstream& outFile, float tfare[], int counter, float &paid); void AverageCostPerPerson(ofstream& outFile, float paid, int pplt, float ACM); int main() { // All variables int pick[MAX]; int drop[MAX]; int psgr[MAX]; float dist[MAX]; float fare[MAX]; float toll[MAX]; int counter = 0; float tfare[MAX]; float CPM[MAX]; int pplt = 0; float paid = 0; float ACM = 0; int record_counter(0); ifstream inFile; // Report file location ofstream outFile("C:\\TEMP\\lab3_report.txt"); // Read file location inFile.open("C:\\TEMP\\lab3_data.txt"); // Check to ensure read file has been opened if (inFile.is_open()) { // Establishes the amount of records present and defines the loop counters // Places the values in each feild in arrays record_counter = ReadData(inFile, pick, drop, psgr, dist, fare, toll, tfare, CPM); inFile.close(); // Check to ensure report file is accessable if (outFile.is_open()) { // Writes values to report with calculations WriteOutputFile(outFile, pick, drop, psgr, dist, fare, toll, tfare, CPM, record_counter); PassengerCount(outFile, psgr, record_counter, pplt); TotalPaid(outFile, tfare, record_counter, paid); AverageCostPerPerson(outFile, paid, pplt, ACM); PrintTotalsAndSummary(outFile, record_counter); outFile.close(); } // Failsafe Error message else { cout << "Trouble Opening File"; cout << "\n\n\t\t ** About to EXIT NOW! ** "; } } // Failsafe Error message else { cout << "Trouble Opening File"; cout << "\n\n\t\t ** About to EXIT NOW! ** "; } return 0; } // Read and store data from file int ReadData(ifstream& inFile, int pick[], int drop[], int psgr[], float dist[], float fare[], float toll[], float tfare[], float CPM[]) { int counter = 0; inFile >> pick[counter] >> drop[counter] >> psgr[counter] >> dist[counter] >> fare[counter] >> toll[counter]; cout << setiosflags(ios::left) << "Pickup location" << resetiosflags(ios::left) << setw(24) << "Drop-off location" << resetiosflags(ios::left) << setw(15) << "# of ppl" << resetiosflags(ios::left) << setw(17) << "Distance" << resetiosflags(ios::left) << setw(11) << "Fare" << resetiosflags(ios::left) << setw(15) << "Toll" << resetiosflags(ios::left) << setw(16) << "Total Fare" << resetiosflags(ios::left) << setw(18) << "Cost Per Mile" << resetiosflags(ios::left) << endl << endl; while (!inFile.eof()) { tfare[counter] = fare[counter] + toll[counter]; if (dist[counter] == 0) CPM[counter] = 0; else CPM[counter] = fare[counter] / dist[counter]; cout << fixed << setprecision(2) << setiosflags(ios::left) << setw(10) << pick[counter] << resetiosflags(ios::left) << setw(20) << drop[counter] << resetiosflags(ios::left) << setw(20) << psgr[counter] << resetiosflags(ios::left) << setw(19) << dist[counter] << resetiosflags(ios::left) << setw(14) << fare[counter] << resetiosflags(ios::left) << setw(14) << toll[counter] << resetiosflags(ios::left) << setw(14) << tfare[counter] << resetiosflags(ios::left) << setw(14) << CPM[counter] << resetiosflags(ios::left) << endl; counter++; inFile >> pick[counter] >> drop[counter] >> psgr[counter] >> dist[counter] >> fare[counter] >> toll[counter]; } return counter; } // Writes the report from the given file // Formats data for external file void WriteOutputFile(ofstream& outFile, int pick[], int drop[], int psgr[], float dist[], float fare[], float toll[], float tfare[], float CPM[], int counter) { outFile << "\n\n\t\t\t\t\t\t\t Here is the Output File" << endl << endl; outFile << setiosflags(ios::left) << "Pickup location" << resetiosflags(ios::left) << setw(24) << "Drop-off location" << resetiosflags(ios::left) << setw(15) << "# of ppl" << resetiosflags(ios::left) << setw(17) << "Distance" << resetiosflags(ios::left) << setw(11) << "Fare" << resetiosflags(ios::left) << setw(15) << "Toll" << resetiosflags(ios::left) << setw(16) << "Total Fare" << resetiosflags(ios::left) << setw(18) << "Cost Per Mile" << resetiosflags(ios::left) << endl << endl; for (int i = 0; i < counter; i++) { outFile << fixed << setprecision(2) << setiosflags(ios::left) << setw(10) << pick[i] << resetiosflags(ios::left) << setw(20) << drop[i] << resetiosflags(ios::left) << setw(20) << psgr[i] << resetiosflags(ios::left) << setw(19) << dist[i] << resetiosflags(ios::left) << setw(14) << fare[i] << resetiosflags(ios::left) << setw(14) << toll[i] << resetiosflags(ios::left) << setw(14) << tfare[i] << resetiosflags(ios::left) << setw(14) << CPM[i] << resetiosflags(ios::left) << endl; } } // Sums passengers transported // Places value in report and command prompt void PassengerCount(ofstream& outFile, int psgr[], int counter, int &pplt) { for (int i = 0; i < counter; i++) { pplt = pplt + psgr[i]; } cout << endl << "\t\t\t\t\t\tTotal number of passengers transported: " << pplt << endl; outFile << fixed << setprecision(2) << endl << "\t\t\t\t\t\tTotal number of passengers transported: " << pplt << endl; } // Sums the total fairs paid // Places value in report and command prompt void TotalPaid(ofstream& outFile, float tfare[], int counter, float &paid) { for (int i = 0; i < counter; i++) { paid = paid + tfare[i]; } cout << fixed << setprecision(2) << "\t\t\t\t\t\tTotal fairs paid: $" << paid << endl; outFile << fixed << setprecision(2) << "\t\t\t\t\t\tTotal fairs paid: $" << paid << endl; } // Average fair per person transported // Places value in report and command prompt void AverageCostPerPerson(ofstream& outFile, float paid, int pplt, float ACM) { ACM = paid / pplt; cout << "\t\t\t\t\t\tAverage cost per person: $" << ACM << endl; outFile << fixed << setprecision(2) << "\t\t\t\t\t\tAverage cost per person: $" << ACM << endl; } // Prints file foot note with entry count void PrintTotalsAndSummary(ofstream& outFile, int totalRecords) { cout << "\n\n\t\t\t\t\t\t** Total Records: " << totalRecords << " **\n" << "\t\t\t\t\t\t\t The End \n"; outFile << "\n\n\t\t\t\t\t\t** Total Records: " << totalRecords << " **\n" << "\t\t\t\t\t\t\t The End \n"; }