// BlankConsoleLab.cpp : This file contains the 'main' function. Program execution begins and ends there. // #include #include #include using namespace std; const int MAX_INPUT_AMOUNT = 100; void ReadData(ifstream& input, int startPos[MAX_INPUT_AMOUNT], int endPos[MAX_INPUT_AMOUNT], int passengerCount[MAX_INPUT_AMOUNT], float distance[MAX_INPUT_AMOUNT], float fareAmount[MAX_INPUT_AMOUNT], float tollAmount[MAX_INPUT_AMOUNT], int& counter); void ProcessData(int startPos[MAX_INPUT_AMOUNT], int endPos[MAX_INPUT_AMOUNT], int passengerCount[MAX_INPUT_AMOUNT], float fareAmount[MAX_INPUT_AMOUNT], float tollAmount[MAX_INPUT_AMOUNT], float distance[MAX_INPUT_AMOUNT], float totalCost[MAX_INPUT_AMOUNT], float costPerMile[MAX_INPUT_AMOUNT], float& GrandTotal, int& totalPassengers, int& counter); void OutputData(int passengerCount[MAX_INPUT_AMOUNT], float fareAmount[MAX_INPUT_AMOUNT], float tollAmount[MAX_INPUT_AMOUNT], float distance[MAX_INPUT_AMOUNT], float totalCost[MAX_INPUT_AMOUNT], float costPerMile[MAX_INPUT_AMOUNT], float& GrandTotal, int& totalPassengers, int& counter); string getPadding(int input); //C:\Users\wythe\Desktop\Homework\C++\cst116-lab3-johnson\small.txt int main() { ifstream inputStream; while (!inputStream.is_open()) { string inputFilePath = ""; cout << "Please input the location of the data file.\n"; cin >> inputFilePath; cout << endl; if (inputFilePath[0] != 'C' || inputFilePath[1] != ':') { inputFilePath = "C:\\" + inputFilePath; } inputStream.open(inputFilePath); if (!inputStream.is_open()) { cout << "Invalid file path." << endl; } } int startPos[MAX_INPUT_AMOUNT] = {}; int endPos[MAX_INPUT_AMOUNT] = {}; int passengerCount[MAX_INPUT_AMOUNT] = {}; float distance[MAX_INPUT_AMOUNT] = {}; float fareAmount[MAX_INPUT_AMOUNT] = {}; float tollAmount[MAX_INPUT_AMOUNT] = {}; int counter = 0; ReadData(inputStream, startPos, endPos, passengerCount, distance, fareAmount, tollAmount, counter); float totalCost[MAX_INPUT_AMOUNT] = {}; float costPerMile[MAX_INPUT_AMOUNT] = {}; float GrandTotal = 0; int totalPassengers = 0; ProcessData(startPos, endPos, passengerCount, fareAmount, tollAmount, distance, totalCost, costPerMile, GrandTotal, totalPassengers, counter); OutputData(passengerCount, fareAmount, tollAmount, distance, totalCost, costPerMile, GrandTotal, totalPassengers, counter); } void ReadData(ifstream& input, int startPos[MAX_INPUT_AMOUNT], int endPos[MAX_INPUT_AMOUNT], int passengerCount[MAX_INPUT_AMOUNT], float distance[MAX_INPUT_AMOUNT], float fareAmount[MAX_INPUT_AMOUNT], float tollAmount[MAX_INPUT_AMOUNT], int& counter) { while (!input.eof()) { input >> startPos[counter]; input >> endPos[counter]; int passengers = 0; input >> passengers; if (passengers > 9) passengers = 9; passengerCount[counter] = passengers; input >> distance[counter]; input >> fareAmount[counter]; input >> tollAmount[counter]; counter++; } } void ProcessData(int startPos[MAX_INPUT_AMOUNT], int endPos[MAX_INPUT_AMOUNT], int passengerCount[MAX_INPUT_AMOUNT], float fareAmount[MAX_INPUT_AMOUNT], float tollAmount[MAX_INPUT_AMOUNT], float distance[MAX_INPUT_AMOUNT], float totalCost[MAX_INPUT_AMOUNT], float costPerMile[MAX_INPUT_AMOUNT], float& GrandTotal, int& totalPassengers, int& counter) { for (int i = 0; i <= counter; i++) { totalCost[i] = fareAmount[i] + tollAmount[i]; costPerMile[i] = distance[i] == 0 ? 0 : fareAmount[i] / distance[i]; GrandTotal += totalCost[i]; totalPassengers += passengerCount[i]; } } void OutputData(int passengerCount[MAX_INPUT_AMOUNT], float fareAmount[MAX_INPUT_AMOUNT], float tollAmount[MAX_INPUT_AMOUNT], float distance[MAX_INPUT_AMOUNT], float totalCost[MAX_INPUT_AMOUNT], float costPerMile[MAX_INPUT_AMOUNT], float& GrandTotal, int& totalPassengers, int& counter) { cout << setprecision(3); cout << "|Ride # |Passengers|Distance |Fare Cost| Toll $ |Total $ |$Per Mile|\n"; for (int i = 0; i <= counter; i++) { cout << "|" << i + 1 << getPadding(i + 1) << passengerCount[i] << getPadding(passengerCount[i]) << distance[i] << getPadding(distance[i]) << fareAmount[i] << getPadding(fareAmount[i]) << tollAmount[i] << getPadding(tollAmount[i]) << totalCost[i] << getPadding(totalCost[i]) << costPerMile[i] << getPadding(costPerMile[i]) << endl; } cout << "\n\n Grand Total: " << GrandTotal << "$\n Total Passengers: " << totalPassengers << endl; } string getPadding(int input) { string padding = " |"; if (input >= 10) padding = " |"; if (input >= 100) padding = " |"; if (input >= 1000) padding = " |"; return padding; }