aboutsummaryrefslogtreecommitdiff
path: root/CST116F2021-Lab8/CST116F2021-Lab8.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'CST116F2021-Lab8/CST116F2021-Lab8.cpp')
-rw-r--r--CST116F2021-Lab8/CST116F2021-Lab8.cpp324
1 files changed, 323 insertions, 1 deletions
diff --git a/CST116F2021-Lab8/CST116F2021-Lab8.cpp b/CST116F2021-Lab8/CST116F2021-Lab8.cpp
index ece7ad8..933ba61 100644
--- a/CST116F2021-Lab8/CST116F2021-Lab8.cpp
+++ b/CST116F2021-Lab8/CST116F2021-Lab8.cpp
@@ -1,9 +1,331 @@
//Code by Jordan Harris-Toovy for OIT's CST116 lab 8, November 2021
+
+//13b - 11.9 Learn by Doing Exercises # 1:
+/*
#include <iostream>
using namespace std;
+#define MAX_VAL 15
+
+void bubSort(float[MAX_VAL], int);
+float findMedian(float[MAX_VAL], int);
int main()
{
- //WIP - Do not grade unitl this line is replaced
+ float testArray[MAX_VAL] = { 6.9, 3.34, 1.99, 2.16, 6.88, 0.64, 7.93, -9.24, -9.88, 7.08, -0.9, 4.78, -7.91, -0.56, 5.17 };
+
+ cout << "From the array: ";
+ for (int idx = 0; idx < MAX_VAL; idx++)
+ {
+ cout << testArray[idx] << " ";
+ }
+
+ cout << "\nThe median is: ";
+
+ cout << findMedian(testArray, MAX_VAL) << endl;
+
+ return (0);
+}
+
+void bubSort(float arr[MAX_VAL], int len)
+{
+ int pass = 0;
+ float hold = 0.0F;
+
+ while (pass <= len)
+ {
+ for (int idx = 0; idx < (len - 1); idx++)
+ {
+ if (arr[idx] > arr[idx + 1])
+ {
+ hold = arr[idx + 1];
+ arr[idx + 1] = arr[idx];
+ arr[idx] = hold;
+
+ pass = 0;
+ }
+ else
+ {
+ pass++;
+ }
+ }
+ }
+}
+
+float findMedian(float arr[MAX_VAL], int len)
+{
+ bubSort(arr, len);
+ int center = int(floor((len / 2)));
+
+ if ((len % 2) != 0)
+ {
+ return arr[center];
+ }
+ else
+ {
+ return ((arr[center] + arr[center - 1]) / 2);
+ }
+}
+*/
+
+//13c - 11.13 Debugging Exercise:
+/********************************************************************
+* File: Chapter 11 Debug.cpp
+*
+* General Instructions: Complete each step before proceeding to the
+* next.
+*
+* Debugging Exercise 1
+*
+* 1) Make your own data file like Troy 12, with the next person on the
+* next line and save it to a directory you create on your drive.
+* 2) Under the Project menu, select Add Existing Item and
+* add the input file you just placed on your drive to your
+* current project. Make sure your Solution Explorer window
+* is visible. If not, you can display it by selecting Solution
+* Explorer (or Ctrl+Alt+L).
+* 3) Open the input file by simply double clicking the name of the
+* file in your Solution Explorer.
+* 4) Build and execute the program.
+* 5) Update the file paths below to correctly represent the path you
+* created.
+* 6) Rebuild and execute the program.
+* 7) Examine the code and the output and notice the use of
+* parallel arrays.
+* 8) Add the output file created via the execution of
+* your program to your Project. Execute your program again
+* and notice how Visual Studio has rewritten your output file
+* and asks if you would like to reload the file (select Yes).
+* 9) Examine the contents of both the input and the output file.
+* 10) Fix all the problems in your code that exist in relation to
+* the output. Verify that your output is appropriate for your
+ input file.
+* 11) Build and execute your code until you have all errors
+* removed and all the output is correct.
+*
+* Debugging Exercise 2
+*
+* 1) Replace the double slashes (\\) in the input file open statement
+* with only a single slash
+* (i.e., inFile.open("C:\TEMP\Chap_11_data.txt").
+* 2) Build your code, noticing the impact of the invalid path you
+* created in the previous step.
+* 3) Replace the backslashes as they were.
+* 4) Change both the input and output filenames so they are
+* invalid.
+* 5) Update the file related error messages within the code
+* to also provide the specific name of the file that is having a
+* problem.
+* 6) Rebuild and execute your program to verify that your messages
+* are correct.
+* 7) Correct the path names.
+* 8) Build and execute your code and carefully check your
+* output on both the console and in the output file.
+*
+********************************************************************/
+/*
+#include <iostream>
+#include <fstream> // For the files!!!!
+#include <iomanip> // For manipulators & formatting options
+using std::cin;
+using std::cout;
+using std::endl;
+using std::setw;
+using std::ios;
+
+using std::ifstream;
+using std::ofstream;
+
+const int EMPLOYEES = 20;
+const int MAX = 21;
+
+int ReadData(ifstream& inFile, ofstream& outFile, char name[][MAX], int age[]);
+void WriteOutputFile(ofstream& outFile, char name[][MAX], int age[],
+ int counter);
+void PrintTotalsAndSummary(ofstream& out, int totalRecords);
+
+int main()
+{
+ char name[EMPLOYEES][MAX];
+ int age[EMPLOYEES];
+ int record_counter(0);
+
+ ifstream inFile;
+
+ // Notice how this automatically opens the file
+ ofstream outFile("C:\\Users\\jorda\\source\\repos\\cst115-lab8-JordanHT-OIT\\CST116F2021-Lab8\\Report.txt");
+
+ inFile.open("C:\\Users\\jorda\\source\\repos\\cst115-lab8-JordanHT-OIT\\CST116F2021-Lab8\\Data.txt");
+
+ if (inFile.is_open())
+ {
+ record_counter = ReadData(inFile, outFile, name, age);
+ inFile.close();
+
+ if (outFile.is_open())
+ {
+ WriteOutputFile(outFile, name, age, record_counter);
+ PrintTotalsAndSummary(outFile, record_counter);
+ outFile.close();
+ }
+ else
+ {
+ cout << "Cannot open Report.txt";
+ cout << "\n\n\t\t ** Exiting ** ";
+ }
+ }
+ else
+ {
+ cout << "Cannot open Data.txt";
+ cout << "\n\n\t\t ** Exiting ** ";
+ }
+ return 0;
+}
+int ReadData(ifstream& inFile, ofstream& outFile, char name[][MAX], int age[])
+{
+ int counter = 0;
+ inFile >> name[counter] >> age[counter]; // Priming Read
+
+ while (!inFile.eof())
+ {
+ cout << setiosflags(ios::left) << setw(25)
+ << name[counter] << resetiosflags(ios::left)
+ << setw(4) << age[counter] << endl;
+ counter++;
+ inFile >> name[counter] >> age[counter];
+ }
+
+ return counter;
}
+void WriteOutputFile(ofstream& outFile, char name[][MAX], int age[], int counter)
+{
+ outFile << " Here is the Output File" << endl;
+ for (int r = 0; r < counter; r++)
+ {
+ outFile << setiosflags(ios::left) << setw(25)
+ << name[r] << setw(4)
+ << resetiosflags(ios::left) << age[r]
+ << endl;
+ }
+}
+void PrintTotalsAndSummary(ofstream& outFile, int totalRecords)
+{
+ // To screen
+ cout << "\n\n\t** Total Records: " << totalRecords << " **\n"
+ << "\t\t The End \n";
+
+ // To file
+ outFile << "\n\n\t** Total Records: " << totalRecords << " **\n"
+ << "\t\t The End \n";
+}
+*/
+
+//13c - 11.14 Programming Exercises #1:
+
+#include <iostream>
+#include <fstream>
+#include <iomanip>
+using namespace std;
+#define MAX_LENGTH 20
+#define MAX_ENTRIES 15
+
+int getInput(ifstream&, char[MAX_ENTRIES][MAX_LENGTH], char[MAX_ENTRIES][MAX_LENGTH], char[MAX_ENTRIES][12], float[MAX_ENTRIES], int[MAX_ENTRIES], char[MAX_ENTRIES]);
+void displayInfo(char[MAX_ENTRIES][MAX_LENGTH], char[MAX_ENTRIES][MAX_LENGTH], char[MAX_ENTRIES][12], float[MAX_ENTRIES], int[MAX_ENTRIES], float[MAX_ENTRIES], float[MAX_ENTRIES], char[MAX_ENTRIES], float[MAX_ENTRIES], int);
+
+int main(void)
+{
+ char firstName[MAX_ENTRIES][MAX_LENGTH], lastName[MAX_ENTRIES][MAX_LENGTH], wageType[MAX_ENTRIES], socials[MAX_ENTRIES][12];
+ float baseWage[MAX_ENTRIES]{ 0 }, normalPay[MAX_ENTRIES]{ 0 }, overtimePay[MAX_ENTRIES]{ 0 }, totalPay[MAX_ENTRIES]{ 0 };
+ int hours[MAX_ENTRIES]{ 0 }, entries = 0;
+
+ //Define and open all the I/O files
+ ifstream inputData;
+ inputData.open("C:\\Users\\jorda\\source\\repos\\cst115-lab8-JordanHT-OIT\\CST116F2021-Lab8\\Data2.txt");
+
+ if (!inputData.fail())
+ {
+ entries = getInput(inputData, firstName, lastName, socials, baseWage, hours, wageType);
+ inputData.close();
+ }
+ else //Exit if the file cannot be opened
+ {
+ cout << endl << "Failed to open data file" << endl;
+ return (1);
+ }
+
+ for (int idx = 0; idx < entries; idx++)
+ {
+ if (hours[idx] > 40)
+ {
+ normalPay[idx] = baseWage[idx] * 40.0F;
+ overtimePay[idx] = baseWage[idx] * 1.5F * (hours[idx] - 40);
+ }
+ else
+ {
+ normalPay[idx] = baseWage[idx] * hours[idx];
+ }
+
+ totalPay[idx] = overtimePay[idx] + normalPay[idx];
+
+ if (wageType[idx] == 'F') //Pay union fees
+ {
+ totalPay[idx] -= 5.0F;
+ }
+ }
+
+ displayInfo(firstName, lastName, socials, baseWage, hours, normalPay, overtimePay, wageType, totalPay, entries);
+
+ return (0);
+}
+
+//Reads the contents in an input file via a filestream. Returns the number of records read.
+int getInput(ifstream& dataFile, char fName[MAX_ENTRIES][MAX_LENGTH], char lName[MAX_ENTRIES][MAX_LENGTH], char SSN[MAX_ENTRIES][12], float baseWage[MAX_ENTRIES], int hours[MAX_ENTRIES], char status[MAX_ENTRIES])
+{
+ int linesRead = 0;
+
+ dataFile >> fName[0] >> lName[0] >> SSN[0] >> baseWage[0] >> hours[0] >> status[0];
+
+ while (!dataFile.eof())
+ {
+ linesRead++;
+ dataFile >> fName[linesRead] >> lName[linesRead] >> SSN[linesRead] >> baseWage[linesRead] >> hours[linesRead] >> status[linesRead];
+ }
+
+ return (linesRead);
+}
+
+//Displays all relevant employee payment information.
+void displayInfo(char fName[MAX_ENTRIES][MAX_LENGTH], char lName[MAX_ENTRIES][MAX_LENGTH], char SSN[MAX_ENTRIES][12], float baseWage[MAX_ENTRIES], int hours[MAX_ENTRIES], float normalPay[MAX_ENTRIES], float overtimePay[MAX_ENTRIES], char status[MAX_ENTRIES], float totalPay[MAX_ENTRIES], int entries)
+{
+ cout << left;
+ cout << "Payment overviewer MK1\n\n" << setw(MAX_LENGTH) << "First name" << setw(MAX_LENGTH) << "Last name" << setw(16) << "SSN" << setw(8) << "Wage" << setw(8) << "Hours" << setw(20) << "Straight-time pay" << setw(16) << "Overtime Pay" << setw(12) << "Status" << setw(16) << "Total pay" << endl;
+
+ for (int idx = 0; idx < (MAX_LENGTH * 2 + 90); idx++) //Adjust spacing as needed
+ {
+ cout << char(205);
+ }
+
+ cout << endl;
+
+ for (int idx = 0; idx < entries; idx++)
+ {
+ cout << setw(MAX_LENGTH) << fName[idx];
+ cout << setw(MAX_LENGTH) << lName[idx];
+ cout << setw(16) << SSN[idx]; //Adjust spacing as needed
+ cout << fixed << setprecision(2) << setw(8) << baseWage[idx];
+ cout << setw(8) << hours[idx];
+ cout << fixed << setprecision(2) << setw(20) << normalPay[idx];
+ cout << fixed << setprecision(2) << setw(16) << overtimePay[idx];
+
+ if (status[idx] == 'F')
+ {
+ cout << setw(12) << "Fulltime";
+ }
+ else
+ {
+ cout << setw(12) << "Parttime";
+ }
+
+ cout << fixed << setprecision(2) << setw(16) << totalPay[idx] << endl;
+ }
+} \ No newline at end of file