// BlankConsoleLab.cpp : This file contains the 'main' function. Program execution begins and ends there. // CST116 Aaron Hill #include #include #include #include using namespace std; int pickUp[50]; int dropOff[50]; int passengerCount[50]; float distanceTravelled[50]; float fareAmount[50]; float tollAmount[50]; float costPerMile[50]; double totalFare[50]; int numEntries; int ReadData(ifstream& file) { // Takes a file input, reads the arrays in the file, and puts them in the corresponding array in the program. // t is the number of entries found. Starts at -1 because the loop begins with an increment. int t = -1; while (!file.eof()) { t++; file >> pickUp[t] >> dropOff[t] >> passengerCount[t] >> distanceTravelled[t] >> fareAmount[t] >> tollAmount[t]; // Below are the calculations for the total fare and cost per mile. totalFare[t] = fareAmount[t] + tollAmount[t]; if (distanceTravelled[t] != 0) { costPerMile[t] = fareAmount[t] / distanceTravelled[t]; } else costPerMile[t] = 0; // Special case for 0 miles ; prevents divide by 0 error. } t++; // Increment outside of the loop. Arrays begin at 0, but the returning value is the total number of objects, hence +1 at the end. return t; } void GenerateTotals(int numEntries) { // Loops through the arrays times the amount of entries found in the file. (This value is passed in.) // Two local variables are initialized at 0 and each value from the arrays is added to the appropriate variable. int totalPassengers = 0; double totalPaid = 0; for (int i = 0; i <= numEntries; i++) { totalPassengers += passengerCount[i]; totalPaid += totalFare[i]; } // Just printing the basic statistics. cout << "TOTAL PASSENGERS: " << totalPassengers << endl; cout << "TOTAL PAID: $" << totalPaid << endl; cout << "AVG COST PER PERSON: $" << totalPaid / totalPassengers << endl; cout << "TOTAL TRIPS: " << numEntries << endl; } int main() { // Some initialization ifstream inFile; string fileName; cout << fixed << setprecision(2); char choice = 'Y'; // Body contained within a loop to allow the user to enter another file. while (choice == 'Y') { // Until the user enters a valid file name, the program will not continue. while (!inFile.is_open()) { cout << "Please enter your data file name with the .txt extension:" << endl; cin >> fileName; inFile.open(fileName); if (inFile.is_open()) { cout << "\nOpened " << fileName << endl; } else { cout << "\nFailed to open " << fileName << endl; } cout << endl; } // Fetching the # of entries and setting the values used in the program through ReadData(). int numEntries = ReadData(inFile); // Printing basic statistics GenerateTotals(numEntries); // Asking the user if they want to show a table of the file they read in choice = 'A'; while (choice != 'Y' && choice != 'N') { cout << "\nWould you like to display a table? Y/N" << endl; cin >> choice; } if (choice == 'Y') { // Table headers cout << left << setw(10) << "\nENTRY" << setw(10) << "PICKUP" << setw(10) << "DROPOFF" << setw(10) << "#PASS" << setw(10) << "DIST" << setw(10) << "FARE$" << setw(10) << "TOLL$" << setw(10) << "TOTAL$" << setw(10) << "$/MILE" << endl; // Table values for (int i = 0; i < numEntries; i++) { cout << left << setw(10) << i + 1 << setw(10) << pickUp[i] << setw(10) << dropOff[i] << setw(10) << passengerCount[i] << setw(10) << distanceTravelled[i] << setw(10) << fareAmount[i] << setw(10) << tollAmount[i] << setw(10) << totalFare[i] << setw(10) << costPerMile[i] << endl; } } // Finally, asking the user if they want to open another file. choice = 'A'; while (choice != 'Y' && choice != 'N') { cout << "\nWould you like to open another file? Y/N" << endl; cin >> choice; } // Stops reading the file and preps for the next potential loop. inFile.close(); cout << endl; } }