// Debugging Chapter 10 Levi Davis /****************************************************** * Debugging Exercise 1 * * 1) Build and run the program. * 2) Examine the code and the output and notice the use of parallel arrays. * 3) Insert breakpoints at Breakpoint 1, Breakpoint 2, and Breakpoint 3. * 4) Run to Breakpoint 1. * 5) Place a watch on varX, varY and varZ. Click on the '+' in the watch window to see the individual elements associated with each of the arrays. * 6) Continue running your program to Breakpoint 2. * 7) Add a watch on the array called name. Again, click on the '+' symbol. Notice how a multidimensional array is shown in the debugger, the null terminating characters location, and how a character is represented within each element of the array. * 8) Continue running the program to Breakpoint 3. * 9) Notice the contents of varX and varY now that you are back in the main function. * 10) Clear all the breakpoints. * 11) Stop debugging. * * Debugging Exercise 2 * * 1) Change the constant SIZE from 5 to 10. * 2) Change any literal containing a 5 to the constant SIZE. Notice the usefulness of the constant when changes need to be made to your code. * 3) Set a breakpoint at Breakpoint 4. Now on this breakpoint set the necessary condition so the loop breaks when x hits 8. (Hint: If you need help setting breakpoints based upon a condition refer to Chapter 8). * 4) Run to Breakpoint 4. * 5) Continue stepping into the remainder of the for loop until the flow returns back to main. * 6) Make sure your Watch window is visible and notice the contents of varY and varZ now that you are back in main. * 7) Stop debugging. * 8) Disable all breakpoints. * 9) Rebuild and execute the program and verify the results. * * Debugging Exercise 3 * * 1) Just before the call to the PrintFunction in main, add an assignment statement to change the first element in the array varZ to -99. * 2) Build and execute your code, verifying that the calculations are correct in relation to element 0 of varZ. * 3) Add a line to assign the contents of the second element of varX to 99 in FunctionTwo. * 4) Rebuild your program. * 5 Obviously there is a problem. Remove the const from the function declaration and header for varX. * 5) Now you should be able to build and execute your code. Do it. * 6) Set a breakpoint on Breakpoint 2. * 7) Re-enable Breakpoint 2. * 8) Run to Breakpoint 2 and make sure you have a watch on the variable name. * 9) Click on the '+'. Once you see all the elements within the array, change the 'Value' (in the Value field for the first element of the array directly within the Watch window to the character 'Z'. Notice how the value is updated by displaying the new ASCII value too. * 10) Stop debugging. * 11) Disable all breakpoints. * ********************************************************************/ #include #include using std::cin; using std::cout; using std::endl; using std::setw; void GetAndDisplayWelcomeInfo(); void FunctionOne(int varX[], int varY[]); void FunctionTwo(const int varX[], const int varY[], int varZ[]); void PrintFunction(const int varX[], const int varY[], const int varZ[]); const int SIZE = 10; int main() { int varX[SIZE]; int varY[SIZE]; int varZ[99]; // Notice how we used the const here! GetAndDisplayWelcomeInfo(); FunctionOne(varX, varY); FunctionTwo(varX, varY, varZ); PrintFunction(varX, varY, varZ); return 0; } void GetAndDisplayWelcomeInfo() { char name[2][20]; // First name in row 0, last name in row 1 cout << "Please enter your first name: "; cin >> name[0]; cout << "\nPlease enter your last name: "; cin >> name[1]; cout << "\n\n\tWelcome " << name[0] << " " << name[1] << "!\n\t Hope all is well \n\n"; } void FunctionOne(int varX[], int varY[]) { for (int x = 0; x < SIZE; x++) // NOTICE '<' NOT <= varX[x] = x; for (int x = 0; x < SIZE; x++) varY[x] = x + 100; } void FunctionTwo(int varX[], int varY[], int varZ[]) { for (int x = 0; x < SIZE; x++) // Notice the const SIZE here varZ[x] = varX[x] + varY[x]; } void PrintFunction(int varX[], int varY[], int varZ[]) { int x; cout << " \t x \t y \t z\n\n"; for (x = 0; x < SIZE; x++) cout << "\t" << setw(3) << varX[x] << "\t " << setw(3) << varY[x] << "\t " << setw(3) << varZ[x] << endl; } //i still can't get this darn thing to run - i don't know what i'm doing wrong, i've tried everything