diff options
Diffstat (limited to 'CST116F2021-Lab8/CST116F2021-Lab8.cpp')
| -rw-r--r-- | CST116F2021-Lab8/CST116F2021-Lab8.cpp | 324 |
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 |