summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBold Demchig <[email protected]>2022-11-30 19:40:29 -0800
committerBold Demchig <[email protected]>2022-11-30 19:40:29 -0800
commit31bb061e6ec8aa48b85b3c9629930a37eadc9d93 (patch)
treef089a117f90b1861f2c8f963720da4488b114ea7
parentSetting up GitHub Classroom Feedback (diff)
downloadcst116-lab3-batbold74-31bb061e6ec8aa48b85b3c9629930a37eadc9d93.tar.xz
cst116-lab3-batbold74-31bb061e6ec8aa48b85b3c9629930a37eadc9d93.zip
Here is my Lab3
-rw-r--r--BlankConsoleLab/BlankConsoleLab.cpp143
-rw-r--r--BlankConsoleLab/BlankConsoleLab.vcxproj8
2 files changed, 140 insertions, 11 deletions
diff --git a/BlankConsoleLab/BlankConsoleLab.cpp b/BlankConsoleLab/BlankConsoleLab.cpp
index ed5f807..588ff5a 100644
--- a/BlankConsoleLab/BlankConsoleLab.cpp
+++ b/BlankConsoleLab/BlankConsoleLab.cpp
@@ -1,16 +1,145 @@
-// BlankConsoleLab.cpp : This file contains the 'main' function. Program execution begins and ends there.
-//
+/* CST 116 LAB3 completed by Bold D. */
#include <iostream>
-
-using namespace std;
-
-using std::cout;
+#include <fstream> // For the files
+#include <iomanip> // For manipulators & formatting options
+#include <string>
using std::cin;
+using std::cout;
using std::endl;
+using std::setw;
+using std::ios;
+
+using std::ifstream;
+using std::ofstream;
+
+int total_passengers = 0; // I set it as a global variable
+float grand_total_fare = 0; // global variable
+float Average_CPP = 0; // Average cost per person is sat a global variable
+
+const int MAX = 500;
+
+int ReadData(ifstream& inFile, int pick[], int drop[], int psgr[], float dist[], float fare[], float toll[]);
+void WriteOutputFile(ofstream& outFile, int pick[], int drop[], int psgr[], float dist[], float fare[], float toll[], int counter);
+void PrintTotalsAndSummary(ofstream& out, int totalRecords);
int main()
{
- cout << "Hello World!\n";
+
+ int pick[MAX];
+ int drop[MAX];
+ int psgr[MAX];
+ float dist[MAX];
+ float fare[MAX];
+ float toll[MAX];
+ float total[MAX]{};
+ int record_counter(0);
+ std::string file_name;
+
+ cout << " \t\tEnter one of the following: small.txt or large.txt: " << "\n\n" << "\t\t\t\t";
+ cin >> file_name;
+ cout << "\n";
+
+ ifstream inFile;
+ ofstream outFile("lab3_Report.txt"); // Notice how this automatically opens the file
+ inFile.open(file_name); // inFile.open() function opens file_name which was created before.
+
+ if (inFile.is_open()) //.is_open() checks if the file is open
+ {
+ record_counter = ReadData(inFile, pick, drop, psgr, dist, fare, toll); //ReadData() function called and it returns counter
+ inFile.close(); //If the file opened, it should be clsoed back.
+
+ if (outFile.is_open()) //It checks if lab3_Report.txt file is open or not
+ {
+ WriteOutputFile(outFile, pick, drop, psgr, dist, fare, toll, record_counter); //WriteOutputFile function is called
+ PrintTotalsAndSummary(outFile, record_counter); //PrintTotalsAndSummary function is called
+ outFile.close(); //It needs to be closed
+ }
+
+ else
+ {
+ cout << "Trouble Opening File";
+ cout << "\n\n\t\t ** About to EXIT NOW! ** ";
+ }
+
+ }
+ else
+ {
+ cout << "Trouble Opening File";
+ cout << "\n\n\t\t ** About to EXIT NOW! ** ";
+ }
+ return 0;
+}
+int ReadData(ifstream& inFile, int pick[], int drop[], int psgr[], float dist[], float fare[], float toll[])
+{
+ int counter = 0;
+ inFile >> pick[counter] >> drop[counter] >> psgr[counter] >> dist[counter] >> fare[counter] >> toll[counter]; // Priming Read
+
+ float total_fare[MAX]; //Here, I initialized the total_fare[MAX]
+ float cost_per_mile[MAX]; //Here, I initialized the cost per mile as well
+
+ while (!inFile.eof()) //While inFile or file_name is open
+ {
+ total_fare[counter] = fare[counter] + toll[counter]; //Here, total_fare[] is calculated.
+ cost_per_mile[counter] = fare[counter] / dist[counter]; //Here, cost per mile is calculated.
+
+ cout << setiosflags(ios::left) //It prints out the following arrays on the screen
+ << setw(5) << pick[counter] << resetiosflags(ios::left)
+ << setw(10) << drop[counter] << resetiosflags(ios::left)
+ << setw(12) << psgr[counter] << resetiosflags(ios::left)
+ << setw(14) << dist[counter] << resetiosflags(ios::left)
+ << setw(14) << fare[counter] << resetiosflags(ios::left)
+ << setw(14) << toll[counter] << resetiosflags(ios::left)
+ << setw(14) << total_fare[counter] //This line calculates total fare
+ << setw(14) << cost_per_mile[counter] // This line calculates the cost per mile.
+ << endl;
+
+ counter++;
+ inFile >> pick[counter] >> drop[counter] >> psgr[counter] >> dist[counter] >> fare[counter] >> toll[counter];
+ //It prints the above arrays from file file_name
+
+ }
+
+
+ for (int p = 0; p < counter; p++) {
+ total_passengers = total_passengers + psgr[p]; // This for loop adds up all passengers in psgr[].
+ grand_total_fare = grand_total_fare + total_fare[p]; // This loop adds up all total fare.
+ Average_CPP = Average_CPP + cost_per_mile[p]; // This loop adds up all cost per mile to Average cost per person.
+ }
+
+ return counter; //The actual or return value of ReadData function converts to int record_counter.
}
+void WriteOutputFile(ofstream& outFile, int pick[], int drop[], int psgr[], float dist[], float fare[], float toll[],
+ int counter)
+{
+ outFile << " Here is the Output File\n\n" << endl;
+ for (int r = 0; r <= counter - 1; r++)
+ {
+ outFile << setiosflags(ios::left) << setw(5)
+ << pick[r] << resetiosflags(ios::left)
+ << setw(10) << drop[r] << resetiosflags(ios::left)
+ << setw(12) << psgr[r] << resetiosflags(ios::left)
+ << setw(14) << dist[r] << resetiosflags(ios::left)
+ << setw(14) << fare[r] << resetiosflags(ios::left)
+ << setw(14) << toll[r] << resetiosflags(ios::left)
+ << setw(14) << toll[r] + fare[r] //This line prints out the total
+ << setw(14) << fare[r] / dist[r] //This line prints out the cost per mile
+ << endl;
+ }
+}
+
+void PrintTotalsAndSummary(ofstream& outFile, int totalRecords)
+{
+ // To screen
+ cout << "\n\n\t\t** Total Records: " << totalRecords << " **\n\n"
+ << "\t\t Total people transforted: " << total_passengers << "\n"
+ << "\t\t\t Total paid: $" << grand_total_fare << "\n"
+ << "\t\t Average cost per person: $" << Average_CPP << "\n";
+
+ // To file
+ outFile << "\n\n\t** Total Records: " << totalRecords << " **\n\n"
+ << "\t\t Total people transforted: " << total_passengers << "\n"
+ << "\t\t\t Total paid: $" << grand_total_fare << "\n"
+ << "\t\t Average cost per person: $" << Average_CPP << "\n";
+} \ No newline at end of file
diff --git a/BlankConsoleLab/BlankConsoleLab.vcxproj b/BlankConsoleLab/BlankConsoleLab.vcxproj
index db2e734..d2e3ee2 100644
--- a/BlankConsoleLab/BlankConsoleLab.vcxproj
+++ b/BlankConsoleLab/BlankConsoleLab.vcxproj
@@ -29,26 +29,26 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v142</PlatformToolset>
+ <PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v142</PlatformToolset>
+ <PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v142</PlatformToolset>
+ <PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v142</PlatformToolset>
+ <PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>