// File: CST116-Lab_4-Billingsley // Summary: A compilation of all coding exercises in lab 4 // Author: Logan Billingsley // Date: 10/20/2021 /* #include #include using namespace std; void set_time(int&, int&, int&, int&, int&); // Get Variables void dis_time(int, int, int, int, int); // Display Varibles int main() { // 9.7 Page 217 -- I spent way to long on this, and it's badly over engineered, but I'm proud. // Set Variables int hrs; // Hours int mnt; // Minutes int sec; // Seconds int apm; // AM or PM int mlt; // Military or Standard int loop;// Does the loop // Functions set_time(hrs, mnt, sec, apm, mlt); dis_time(hrs, mnt, sec, apm, mlt); // Loop Functions do { cout << "\t\tMenu:\n\n" << "1. Select New Time\n" << "2. Change Display\n" << "3. Quit\n\n" << "Please input menu option: "; cin >> loop; cout << "\n\n"; switch (loop) { case 1: set_time(hrs, mnt, sec, apm, mlt); dis_time(hrs, mnt, sec, apm, mlt); break; case 2: dis_time(hrs, mnt, sec, apm, mlt); break; default: cout << "Exiting Program\n\n"; loop = 0; break; } } while (loop != 0); return 0; } void set_time(int& hrs, int& mnt, int& sec, int& apm, int& mlt) // 9.7 Page 217 -- Time for a lot of "do.. while" and "if.. else" statements! { int c1 = 0, // Variables used to keep track of checks 1-5 c2 = 0, c3 = 0, c4 = 0, c5 = 0; cout << "\t\tSet the time in either Military or Standard Time:\n\n"; do // Loop until hrs is validated { cout << "Please input the current hour: "; // Get Hours cin >> hrs; if (hrs >= 0 && hrs < 24) // Make sure hrs is in a valid range for either Military or Standard Time { c1 = 1; // Mark that check 1 passed do { cout << "Please input the current minute: "; // Get Minute cin >> mnt; if (mnt >= 0 && mnt < 60) // Make sure mnt is in a valid range { c2 = 1; do { cout << "Please input the current second: "; // Get Second cin >> sec; if (sec >= 0 && sec < 60) // Make sure mnt is in a valid range { c3 = 1; do { if (hrs == 0 || hrs > 12) // Check to see if time has to be in the form of Military Time { cout << "Automatically set to Military Time\n"; mlt = 1; } else // If not, ask which format { cout << "Please input if time is Standard (0) or Military/24H-Standard (1) Time: "; cin >> mlt; } if (mlt == 0 || mlt == 1) { c4 = 1; do { if (mlt == 1) // If Military Time { if (hrs / 12 == 1) apm = 1; else apm = 0; } else // If Standard Time { cout << "Please input if time is AM (0) or PM (1): "; cin >> apm; } if (apm == 0 || apm == 1) c5 = 1; } while (c5 == 0); // Check 5 } else cout << "Invalid format\n\n"; } while (c4 == 0); // Check 4 } else cout << "Invalid second\n\n"; } while (c3 == 0); // Check 3 } else cout << "Invalid minute\n\n"; } while (c2 == 0); // Check 2 } else cout << "Invalid hour\n\n"; } while (c1 == 0); // Check 1 cout << "Thank you for inputting the time.\n\n"; return; } void dis_time(int hrs, int mnt, int sec, int apm, int mlt) // 9.7 Page 216 -- Time to display the time! { int dis; int thr = hrs; // Used to convert Military to Standard time and back int c1 = 0; // Used for check 1 do { cout << "Do you want to display the time in Standard (0), Military (1), or 24H-Standard (2) Time: "; cin >> dis; switch (dis) { case 0: c1 = 1; if (mlt == 0) // If both Input and Display are Standard Time { cout << "The time is: " << hrs << ':' << setfill('0') << setw(2) << mnt << ':' << setfill('0') << setw(2) << sec << ' '; if (apm == 0) cout << "AM"; else cout << "PM"; } else // If Input is't Standard Time but Display is { thr %= 12; if (thr == 0) thr = 12; cout << "The time is: " << thr << ':' << setfill('0') << setw(2) << mnt << ':' << setfill('0') << setw(2) << sec << ' '; if (apm == 0) cout << "AM"; else cout << "PM"; } break; case 1: c1 = 1; if (mlt == 1) // If input is 24 Hour Standard and Display is Military cout << "The time is: " << setfill('0') << setw(2) << hrs << setfill('0') << setw(2) << mnt << setfill('0') << setw(2) << sec; else // If Input is Standard Time and Display is Military { if (apm == 0) // If Input is AM cout << "The time is: " << setfill('0') << setw(2) << thr << setfill('0') << setw(2) << mnt << setfill('0') << setw(2) << sec; else // If Input is PM { thr += 12; // Shift time to night if (thr == 24) // Roll over midnight to 0 thr = 0; cout << "The time is: " << setfill('0') << setw(2) << thr << setfill('0') << setw(2) << mnt << setfill('0') << setw(2) << sec; } } break; case 2: c1 = 1; if (mlt == 1) // If both Input and Display are 24 Hour Standard cout << "The time is: " << hrs << ':' << setfill('0') << setw(2) << mnt << ':' << setfill('0') << setw(2) << sec; else // If Input is Standard Time and Display is 24 Hour Standard { if (apm == 0) // If Input is AM cout << "The time is: " << thr << ':' << setfill('0') << setw(2) << mnt << ':' << setfill('0') << setw(2) << sec; else // If Input is PM { thr += 12; // Shift time to night if (thr == 24) // Roll over midnight to 0 thr = 0; cout << "The time is: " << thr << ':' << setfill('0') << setw(2) << mnt << ':' << setfill('0') << setw(2) << sec; } } break; default: c1 = 0; // If input is not valid cout << "Invalid Display Type.\n\n"; break; } cout << "\n\n"; } while (c1 == 0); // Check 1 } */ /******************************************************************** * File: Chapter 9 Debug.cpp * * General Instructions: Complete each step before proceeding to the * next. * * Debugging Exercise 1 * * 1) Insert a breakpoint on the lines indicated in the code. * 2) Run to Breakpoint 1. * 3) Place a watch on age and days. * 4) Add another watch using &age for the name. This will display * the address of age. * 5) Write down the address of age. * 6) Step Into the code for the function GetAge. * 7) The execution continues to the function header for GetAge. * 8) Step into one more time. * 9) Why did the address of age and value change? - Becuase it's moved into a function without using pass by reference. * 10) Step over the cout and cin statements. * 11) Verify the value entered is stored properly in age. * 12) Step into until the flow returns to main. * 13) Step over one more time. * 14) Why didn't the value entered get transferred back to main? - Becuase it's not passed the value by reference, or called by "age = GetAge();" the value doesn't pass on. * 15) Stop debugging and fix the error. * 16) Run to Breakpoint 1. * 17) Step over the function call to GetAge. * 18) Verify that the value entered was returned and stored * correctly from GetAge. * 19) Stop debugging. * * Debugging Exercise 2 * * 1) Run to Breakpoint 1. * 2) Step over the call to GetAge. * 3) Step into CalcDays. * 4) Step into one more time so that the current line is the * calculation. * 5) Why is age greyed out in your watch window? - Becauase CalcDays doesn't have access to age. * 6) Stop debugging. * * Debugging Exercise 3 * * 1) Run to Breakpoint 2. * 2) When asked, enter the value of 20 for your age. * 3) Verify that the variable age is 20 and the variable days * is 7300. * 4) Step into the PrintResults function. * 5) Age is 7300? Not even Ralph is that old. * 6) Why did the values for both variables change? - Becuase the function had it reversed from the call. The function needed to be "(int age, int days)" instead of "(int days, int age)" * 7) Stop debugging and fix the error. * * Debugging Exercise 4 * * 1) Run to Breakpoint 2. * 2) Display your Call Stack window. * 3) View the contents of the window and notice that the top * function on the stack is main. * 4) Step into the PrintResults function. * 5) Notice that the call stack now shows PrintResults on top of * the stack. ********************************************************************/ /* #include using std::cout; using std::cin; using std::endl; const int DAYS_PER_YEAR = 365; int GetAge(); int CalcDays(int age); void PrintResults(int age, int days); int main() { int age = 0; int days = 0; // Breakpoint 1 // Put breakpoint on the following line age = GetAge(); days = CalcDays(age); // Breakpoint 2 // Put breakpoint on the following line PrintResults(age, days); return 0; } int GetAge() { int age; cout << "Please enter your age: "; cin >> age; return age; } int CalcDays(int years) { int days; days = years * DAYS_PER_YEAR; return days; } void PrintResults(int age, int days) { cout << age << "! Boy are you old!\n"; cout << "Did you know that you are at least " << days << " days old?\n\n"; } *//* #include using namespace std; int main() { char UL = 218, // Upper-Left LL = 192, // Lower-Left UR = 191, // Upper-Right LR = 217, // Lower-Right TB = 196, // Top and Bottom SD = 179; // Left and Right int width = 0, length = 0; do { cout << "Please input the width of the rectangle in characters: "; cin >> width; if (width < 2) { cout << "\nWidth cannot be less than 2 characters."; width = 0; } else if (width > 50) { cout << "\nWidth cannot be greater than 50 characters."; width = 0; } cout << endl << endl; } while (width == 0); width *= 2; width--; do { cout << "Please input the length of the rectangle in characters: "; cin >> length; if (length < 2) { cout << "\nLength cannot be less than 2 characters."; length = 0; } else if (length > 50) { cout << "\nLength cannont be greater than 50 characters."; length = 0; } cout << endl << endl; } while (length == 0); for (int y = length; y > 0; y--) { if (y == length) //Top Line { cout << UL; for (int x = width - 2; x > 0; x--) { cout << TB; } cout << UR; } else if (y == 1) { cout << LL; for (int x = width - 2; x > 0; x--) { cout << TB; } cout << LR; } else { cout << SD; for (int x = width - 2; x > 0; x--) { cout << ' '; } cout << SD; } cout << endl; } return 0; }*/ /* #include using namespace std; int main() { int var_a = 1, var_b = 2, var_c = 3; //return (void); - no error //int return; - syntacial error as it's tryingto make return a variable, but it cannot. //return var_a; - no error //return (var_a, var_b, var_c); - runtime error. Only returns var_c //return (var_a + var_b); - no error //return; - no error //return (true); - no error //return('A', 'B'); - runtime error. Only shows ascii value of 'B' }*/ #include #include using namespace std; void GetInputs(float&, int&); void CalcRaise(float&, int&); int CalcBonus(int); void PrintCalculations(int, float, int); int main() { float salary; int years; int bonus; GetInputs(salary, years); CalcRaise(salary, years); bonus = CalcBonus(years); PrintCalculations(years, salary, bonus); return 0; } void GetInputs(float& salary, int& years) { cout << "What is the employee's Salary? "; cin >> salary; cout << endl; cout << "How many years has the employee worked? "; cin >> years; cout << endl; return; } void CalcRaise(float& salary, int& years) { if (years > 10) salary += salary * .1; else if (years >= 5) salary += salary * .05; else salary += salary * .02; return; } int CalcBonus(int years) { int bonus; bonus = (years / 2) * 500; return bonus; } void PrintCalculations(int years, float salary, int bonus) { cout << "Becuase the employee has worked " << years << " years:\n" << "Their new salary is $" << salary << endl << "They recieve a bonus of $" << bonus << endl; }