LAB: WHILE LOOPS IN C++

Similar documents
LAB: FOR LOOPS IN C++

Computer Programming. Basic Control Flow - Loops. Adapted from C++ for Everyone and Big C++ by Cay Horstmann, John Wiley & Sons

Chapter Four: Loops. Slides by Evan Gallagher. C++ for Everyone by Cay Horstmann Copyright 2012 by John Wiley & Sons. All rights reserved

Chapter Four: Loops II

Multiple Choice (Questions 1 13) 26 Points Select all correct answers (multiple correct answers are possible)

Why Is Repetition Needed?

LAB: INTRODUCTION TO FUNCTIONS IN C++

More about Loops and Decisions

LAB: STRUCTURES, ARRAYS,

To become familiar with array manipulation, searching, and sorting.

REPETITION CONTROL STRUCTURE LOGO

Chapter 3. More Flow of Control. Copyright 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley

3 The L oop Control Structure

Functions. Computer System and programming in C Prentice Hall, Inc. All rights reserved.

Multiple Choice (Questions 1 13) 26 Points Select all correct answers (multiple correct answers are possible)

University of Technology. Laser & Optoelectronics Engineering Department. C++ Lab.

Discussion 1H Notes (Week 3, April 14) TA: Brian Choi Section Webpage:

Unit 7. 'while' Loops

Review Chapter 6 in Bravaco. Short Answers 1. This type of method does not return a value. a. null b. void c. empty d. anonymous

Islamic University of Gaza Computer Engineering Dept. C++ Programming. For Industrial And Electrical Engineering By Instructor: Ruba A.

Chapter 5: Control Structures II (Repetition) Objectives (cont d.) Objectives. while Looping (Repetition) Structure. Why Is Repetition Needed?

4.1. Chapter 4: Simple Program Scheme. Simple Program Scheme. Relational Operators. So far our programs follow a simple scheme

5.1. Chapter 5: The Increment and Decrement Operators. The Increment and Decrement Operators. The Increment and Decrement Operators

Add Subtract Multiply Divide

Programming Language. Control Structures: Repetition (while) Eng. Anis Nazer Second Semester

Looping. Arizona State University 1

CSCE 206: Structured Programming in C++

The American University in Cairo Computer Science & Engineering Department CSCE Dr. KHALIL Exam II Spring 2010

Announcements. Lab Friday, 1-2:30 and 3-4:30 in Boot your laptop and start Forte, if you brought your laptop

C++ Programming: From Problem Analysis to Program Design, Third Edition

Week 2. Relational Operators. Block or compound statement. if/else. Branching & Looping. Gaddis: Chapters 4 & 5. CS 5301 Spring 2018.

Chapter 5. Repetition. Contents. Introduction. Three Types of Program Control. Two Types of Repetition. Three Syntax Structures for Looping in C++

COMP 110 Programming Exercise: Simulation of the Game of Craps

C++ Programming: From Problem Analysis to Program Design, Fourth Edition. Chapter 5: Control Structures II (Repetition)

C Functions. 5.2 Program Modules in C

Building on the foundation. Now that we know a little about cout cin math operators boolean operators making decisions using if statements

LAB: SWITCH STATEMENTS

Repetition Structures

LOOPS. Repetition using the while statement

Repetition, Looping CS101

Loops and Files. of do-while loop

Functions and Recursion

Expressions, Input, Output and Data Type Conversions

Information Science 1

Multiple Choice (Questions 1 14) 28 Points Select all correct answers (multiple correct answers are possible)

Chapter Goals. Contents LOOPS

Function Call Stack and Activation Records

Compiling C++ Programs Flow Control in C++ CS 16: Solving Problems with Computers I Lecture #3

1- Write a single C++ statement that: A. Calculates the sum of the two integrates 11 and 12 and outputs the sum to the consol.

Mobile Computing Professor Pushpendra Singh Indraprastha Institute of Information Technology Delhi Java Basics Lecture 02

Chapter 3 - Functions

Functions in C++ Problem-Solving Procedure With Modular Design C ++ Function Definition: a single

Problem Solving through Programming In C Prof. Anupam Basu Department of Computer Science & Engineering Indian Institute of Technology, Kharagpur

The American University in Cairo Department of Computer Science & Engineering CSCI &09 Dr. KHALIL Exam-I Fall 2011

CS 106 Introduction to Computer Science I

Condition-Controlled Loop. Condition-Controlled Loop. If Statement. Various Forms. Conditional-Controlled Loop. Loop Caution.

Superior University. Department of Electrical Engineering CS-115. Computing Fundamentals. Experiment No.5. for loop and do-while loop

Information Science 1

LESSON 3 CONTROL STRUCTURES

Designing Loops and General Debug Pre-Defined Functions in C++ CS 16: Solving Problems with Computers I Lecture #6

Chapter 3. More Flow of Control. Copyright 2008 Pearson Addison-Wesley. All rights reserved.

do { statements } while (condition);

Chapter 3. More Flow of Control

Total 100. The American University in Cairo Computer Science & Engineering Department CSCE 106. Instructor: Final Exam Fall Section No.

Multiple Choice (Questions 1 14) 28 Points Select all correct answers (multiple correct answers are possible)

Tutorial 12 Craps Game Application: Introducing Random Number Generation and Enumerations

6 Functions. 6.1 Focus on Software Engineering: Modular Programming TOPICS. CONCEPT: A program may be broken up into manageable functions.

More About WHILE Loops

Name SECTION: 12:45 2:20. True or False (12 Points)

Repetition CSC 121 Fall 2014 Howard Rosenthal

CSci 1113 Lab Exercise 5 (Week 6): Reference Parameters and Basic File I/O

C++ PROGRAMMING. For Industrial And Electrical Engineering Instructor: Ruba A. Salamh

Lecture 04 FUNCTIONS AND ARRAYS

Chapter 3 Problem Solving and the Computer

Chapter Overview. More Flow of Control. Flow Of Control. Using Boolean Expressions. Using Boolean Expressions. Evaluating Boolean Expressions

Structured Programming. Flowchart Symbols. Structured Programming. Selection. Sequence. Control Structures ELEC 330 1

o Counter and sentinel controlled loops o Formatting output o Type casting o Top-down, stepwise refinement

Introduction to C++ 2. A Simple C++ Program. A C++ program consists of: a set of data & function definitions, and the main function (or driver)

Objectivities. Experiment 1. Lab6 Array I. Description of the Problem. Problem-Solving Tips

Basic program The following is a basic program in C++; Basic C++ Source Code Compiler Object Code Linker (with libraries) Executable

Recognize the correct ordering of decisions in multiple branches Program simple and complex decision

Introduction to C++ (using Microsoft Visual C++)

Introduction to Programming using C++

Functions that Return a Value. Approximate completion time Pre-lab Reading Assignment 20 min. 92

STUDENT LESSON A12 Iterations

PIC 10A Flow control. Ernest Ryu UCLA Mathematics

The while Loop 4/6/16 4

Programming Basics and Practice GEDB029 Decision Making, Branching and Looping. Prof. Dr. Mannan Saeed Muhammad bit.ly/gedb029

Chapter 17 - Notes Recursion

STUDENT OUTLINE. Lesson 8: Structured Programming, Control Structures, if-else Statements, Pseudocode

Lecture 5. Review from last week. Selection Statements. cin and cout directives escape sequences

Chapter 5: Control Structures II (Repetition)

Lesson 2 Variables and I/O

CS 101 Computer Programming and utilization. Dr Deepak B Phatak Subrao Nilekani Chair Professor Department of CSE, Kanwal Rekhi Building IIT Bombay

Concepts Review. 2. A program is the implementation of an algorithm in a particular computer language, like C and C++.

CPE 112 Spring 2015 Exam II (100 pts) March 4, Definition Matching (8 Points)

WARM UP LESSONS BARE BASICS

Chapter 2. C++ Basics. Copyright 2014 Pearson Addison-Wesley. All rights reserved.

Chapter 2. C++ Basics

Chapter Overview. C++ Basics. Variables and Assignments. Variables and Assignments. Keywords. Identifiers. 2.1 Variables and Assignments

Transcription:

LAB: WHILE LOOPS IN C++ MODULE 2 JEFFREY A. STONE and TRICIA K. CLARK COPYRIGHT 2014 VERSION 4.0

PALMS MODULE 2 LAB: WHILE LOOPS IN C++ 2 Introduction This lab will provide students with an introduction to the fundamentals of conditional repetition in the C++ programming language. The focus of this lab is on how to solve complex problems using the C++ while statement. At the end of this module, students will Be able to solve simple problems using C++ while statement Understand the structure of C++ while statement These exercises have two different types of answers. Some questions ask for answers to specific questions; you should collect these answers in a Microsoft Word document. Other exercises ask you to write code; for these exercises, structure your storage drive in the following manner. There should be a palms folder, and within that folder there should be a LabWhile folder. All coding exercises (and related folders) for this lesson should be placed in the LabWhile folder. As always, be sure to properly document your code. Consult the C++ Coding Guidelines document for proper coding standards. Use good design principles and design the solution before attempting to write code. All programs should make use of multiple functions besides main() (use the input/process/output cycle as your guide). Think about how each problem actually involves more than one subproblem. At a minimum, you must construct functions aligned with the input-process-output steps. Let s begin! Part 1: Conditional Repetition in C++ Many operations in computer programs (as in real life) involve repeating a sequence of events. Consider the simple act of buying groceries. When you bring groceries up to the grocery store clerk, he or she will scan each item and place it into a grocery bag. The act of scanning the item you wish to buy is repeated for each item in your shopping cart until your cart is empty. Similarly, the act of placing the item purchased into a grocery bag is repeated until there are no more items. In algorithms and computer programming, the process of repeatedly performing the same set of operation until a specific condition is false is known as conditional repetition. Conditional repetition is the repeated execution of a statement or a sequence of statements. This repetition of statements continues while a specified condition is true. Like conditional selection, conditional repetition involves making a decision. In the grocery store example, the decision is whether to scan the next item. This decision is made by checking the shopping cart: if the cart is not empty, continue; if the cart is empty, stop.

PALMS MODULE 2 LAB: WHILE LOOPS IN C++ 3 Once again, conditional expressions are used to determine the next step. However, unlike with conditional selection, the decision process may be repeated multiple times. If the conditional expression is true, a set of nested statements are executed. At the end of this execution, flow of control returns back to the original condition, and the process repeats. Only when the conditional expression is false does this loop end. The process of conditional repetition is often represented in algorithms and programs with the use of while statements, sometimes called while loops. These compound statements execute a statement or a series of statements as long as a specified condition is true. C++ provides a while statement to implement conditional repetition. The general form for a while loop is as follows: while ( /* conditional expression */ ) one or more statements to execute if the condition is true The loop behavior is controlled by the conditional expression enclosed in parentheses. Similar to an if statement, the conditional expression is evaluated first. If the expression evaluates to true, then the statements inside the loop body ( i.e., inside ) are executed in order. After making a pass through the loop body, the whole process is repeated control loops back around to the conditional expression. The conditional expression is evaluated again, and if it succeeds, then the statements inside the loop body are executed again. This process repeats until the conditional expression evaluates to false. For example, consider the while loop in the C++ code below: cout << "Please enter a number between 0 and 100: "; cin >> user_input; while ((user_input < 0) (user_input > 100)) cout << "Invalid input please try again." << endl; cout << "Please enter a number between 0 and 100: "; cin >> user_input; The user is prompted for a number between 0 and 100. If the user enters a valid number, then the while loop condition will fail (be false) and the code inside the loop body will not execute. However, if the user entered a number outside the requested range, the while loop condition will fail and he/she will be told of his/her mistake and will be prompted for a new number. This cycle will repeat until the user enters a valid number. It is important to note if a conditional expression never becomes false the loop will repeat forever. This loop behavior is called an infinite loop. It appears to the user as a non-responsive or hanging program.

PALMS MODULE 2 LAB: WHILE LOOPS IN C++ 4 Watch and listen to the While Loops in C++ podcast below: Exercise 1: Create a new C++ Project called CompoundInterest. Add a new C++ code file called CompoundInterest.cpp to the project, and type the following code into the new file: / Name: CompoundInterest.cpp Author: Jeffrey A. Stone Purpose: Displays the growth of a bank account, given a starting balance and an interest rate, if the interest is compounded. Interest rates are input as numbers less than zero (e.g. 5.9% is input as 0.059). / #include <iostream> #include <iomanip> using namespace std;

PALMS MODULE 2 LAB: WHILE LOOPS IN C++ 5 / FUNCTION NAME: main PARAMETERS: None RETURN TYPE: int PURPOSE: Entry point for the application. / int main() double interest_rate = 0.0; double balance = 0.0; int year = 0; stores the interest rate stores the user balance time counter (in years) prompt the user and input two values cout << "Enter a starting balance and interest rate, " << "separated by a space: "; cin >> balance >> interest_rate; set up the output for two digits of precision... cout.setf(ios::fixed); cout.precision(2); while (year <= 10) increment the time counter... year++; compute the new balance for this year... balance = balance + (balance * interest_rate); show the balance each year... cout << setw(4) << year << setw(15) << balance << endl; return "success" to the operating system... return 0; Compile and run the program. Remember that interest rates are numbers in the range 0-1: for example, 7.6% is really 0.076. You should input the 0.076 into this program. Exercise 2: Examine the CompoundInterest program. How many times does the loop repeat in other words, how many times do the statements in the loop body execute? How many times is the conditional expression evaluated? Note: The answers to these two questions are not the same. Exercise 3: Perform some research, either in your textbook or on the Web, to determine what the setw code statement does. What effect does it have in a program?

PALMS MODULE 2 LAB: WHILE LOOPS IN C++ 6 Sentinel Values The conditional expression used to control the number of loop iterations (cycles) often involves a special value which signals the loop to stop. These values are called sentinel values, because they act as a signal when these values are encountered the loop should stop. For example: while (factor!= 1000)... The sentinel value in this example is 1000. When the variable factor assumes the value 1000, the loop will end. Part 3: Counter-Based Loops Suppose you wanted to write a function to sum the integers from one (1) up to and including some higher integer (e.g. 10, 20, etc). You could do this by using a counter variable. A counter variable is a simply variable (usually an integer) which keeps track of the number of loop iterations. The counter variable is tested before each iteration for a sentinel value. When the sentinel value has been reached, the loop terminates. A counter-based while loop to compute a sum of integers is as follows: int sumofintegers( int terminal_int ) int count = 1; acts as the counter variable int sum = 0; stores the sum while (count <= terminal_int) add the value of the counter to our sum... sum = sum + count; add one to the counter... count = count + 1; return sum; return the summation... The Binomial Coefficient and Factorials In algebra, the binomial coefficient is symbolized as: ( n r )

PALMS MODULE 2 LAB: WHILE LOOPS IN C++ 7 And is defined by the following formula, given integer values of n and r (both > 0): n! r! (n r)! The exclamation mark (!) means factorial, which is a mathematical concept expressed as follows: The factorial of a given integer is the product of that integer and all the integers which precede, down to and including 1. For example: 5! = (5 4 3 2 1) = 120 In the case of the binomial coefficient formula, we have three uses of factorial in conjunction with multiplication and division. Since we are repeating a similar iterative calculation (a factorial) three times, this problem lends itself to the use of a function. The use of a function allows us to write one set of code for the calculation that can be called three times with different arguments. The use of a while loop is warranted here, since the factorial s calculation is actually a repeated multiplication. Suppose we wanted to write a C++ program to compute the value of this coefficient. Our program would take two inputs at the beginning: Inputs Data Type Restrictions Value of n int [1 10] Value of r int [1 10] Our program would also need to aware of the following conditions: When r is equal to n, the value of the binomial coefficient is 1. Note: 0! = 1. When r is greater than n the formula does not apply and this situation should be considered an error condition (requiring a suitable message for the end user). Once the input is finished, our program would calculate the binomial coefficient and display it to the user. An example dialog between the program and the user would look like the following: Enter the value of n: 5 Enter the value of r: 3 The binomial coefficient for n=5, r=3 is 10.

PALMS MODULE 2 LAB: WHILE LOOPS IN C++ 8 Exercise 4: Create a new C++ Project called Binomial. Add a new C++ code file called Binomial.cpp to the project, and construct the program described above. Here is some test data you can use to assess your program: n r Binomial Coefficient 5 1 5 7 2 21 4 2 6 4 4 1 4 7 <Your Error Message> Compile, Build, and Test your program to verify it works as expected. Part 4: The Game of Craps Suppose we wanted to simulate a game of craps, a game of chance involving dice. The rules of craps are as follows: Craps is played by a single player. The player rolls two die (each a fair die, containing faces 1, 2, 3, 4, 5, and 6). The sum of each roll is what's important. Rolling a 7 or an 11 on the first throw of the dice results in a "win" for the player. If the sum of the dice is 2, 3, or 12 on the first throw, the player "loses". If the player doesn t "win" or "lose" on the first throw, the player has the option to continue rolling the dice. o The sum of the dice from the first throw becomes the players' "point" value. The goal is to roll the dice until the "point" value is rolled again (a "win", i.e. "making your point"). o If a 7 is rolled before the "point" value is rolled again, the player "loses". Simulating this game would necessarily involve a conditional repetition structure, as the process of rolling the dice repeats some number of times. Exercise 5: Create a C++ program to simulate a game of craps and keep track of how long it takes a user to "win" or "lose". Your program should begin by rolling the dice; if the player wins, display an appropriate message to the user, something like: Congratulations, you win! If the player does not win, display an appropriate message indicating a loss. If the player neither wins nor loses, ask the user if he/she wishes to continue:

PALMS MODULE 2 LAB: WHILE LOOPS IN C++ 9 Continue (Y/N)? If the user elects to continue, roll the dice again. Repeat this process (rolling the dice, checking for a win/loss, and asking the user to continue) until the user wins or loses. Regardless of the outcome, display a count of the number of rolls that have occurred. To simulate a die roll you can use the rolldie() function, as shown below. You will need to write this function into your code: / FUNCTION NAME: rolldie PARAMETERS: None RETURN TYPE: int PURPOSE: Returns a random integer in the range [1 6]. int rolldie() static bool initialized = false; if (!initialized) Set the seed value for generating random numbers. srand((unsigned)time(0)); set the flag initialized = true; This computes a random integer between low and high using the Standard C++ rand() function. Get the random number. int rand_num = rand(); Convert the number to a number in the range [1..6]) rand_num = (rand_num % (6-1 + 1)) + 1; return the integer in the range [low high]... return rand_num;

PALMS MODULE 2 LAB: WHILE LOOPS IN C++ 10 Part 4: Amortization, Input Validation, and While Loops Suppose we wanted to construct a C++ program to display a payment schedule for a bank loan. Bank loans are commonly taken to provide for big-ticket purchases like a house or a car. Loan terms and payment amounts vary based on interest rates, bank promotions, and other factors. A payment schedule is used to show the distribution of payments over the life of a loan. Each payment has two components the amount applied to the principal, or the loan amount, and the amount paid for interest on the loan. Calculating a loan payment schedule involves a series of calculations over time; as a result, constructing a payment schedule involves the concept of conditional repetition. The program you will write will have four inputs: Input Data Type Range of Valid Values Principal double Must be greater than zero Annual Interest Rate double Must be in the range [1-100] Term of the Loan int Must be in the range [10-30] Payments per Year int Must be in the range [1-12] Each of these inputs requires the user to enter values which fall within a given range. Two methods are used in combination to restrict the input the user provides. First, the prompt given by the program should include a description of the valid range of acceptable input values. Second, we can use while loops to force the user to enter in an acceptable value. A while loop allows the program to check the user input for validity: if the input is invalid, the user can be informed of his or her error and be given an opportunity to re-enter the value. For example, the following function would be used to enforce the restrictions on the principal input described above:

PALMS MODULE 2 LAB: WHILE LOOPS IN C++ 11 FUNCTION NAME: inputprincipal PARAMETERS: None RETURN TYPE: double PURPOSE: Grabs the loan amount from the user. Restricts the input to be > 0. double inputprincipal() bool valid_input = false; double input_value = 0; flag value for the input's validity stores the actual input value while (!valid_input ) prompt the user... cout << "Enter the Beginning Principal (> 0): "; read in the value... cin >> input_value; check for validity... if ( input_value > 0 ) otherwise OK valid_input = true; else tell the user and set the flag... cout << "Invalid input. Please try again." << endl << endl; valid_input = false; return the validated value... return input_value; The prompt in this function informs the user of the input restrictions (> 0). Note also how a bool variable (valid_input) is used to control the execution of the while loop. This approach uses the bool variable as a so-called flag variable; if the user enters an invalid value, a red flag is raised and the user is forced to try again. The approach used in this function guarantees that the return value provide by the function is valid for the principal (i.e. not garbage). Exercise 6: Create a new C++ Project called Amortization. Add a new C++ code file called Amortization.cpp to the project. Construct four functions, one for each of the input values described above. Each function should use descriptive prompts and a while loop to force the user to enter valid values. Finally, add code to your main function which calls these four input

PALMS MODULE 2 LAB: WHILE LOOPS IN C++ 12 functions and records the return values. Compile and Build your program, and test it out. Try to enter invalid values and see what happens does it force you to enter in valid values? Exercise 7: Enhance your Amortization.cpp file by adding a function called computeamortizedpayment. The purpose of this function is to compute the individual payment amount for the loan (for example, a monthly payment). The formula to compute the amortized payment is as follows: p i (1 + i)n A = (1 + i) n 1 Where p is the principal, i is the [ (annual interest rate / 100.0) / payments per year ], and n is the total number of payments for the loan (i.e. term of the loan * payments per year). After constructing this function, add code to your main function which calls computeamortizedpayment with the four necessary arguments and records the return value. The function should have the following prototype and comment header: double computeamortizedpayment( double p, double ir, double ppy, int n); FUNCTION NAME: computeamortizedpayment PARAMETERS: double p -- the beginning principal double ir -- the annual interest rate int ppy -- the payments per year int n -- the total number of payments RETURN TYPE: double PURPOSE: Computes and returns the amortized payment amount. Exercise 8: Enhance your Amortization.cpp file by adding a function with the following function prototype and comment header: void printheaderinformation(double princ, double ir, double amort, int n); FUNCTION NAME: printheaderinformation PARAMETERS: double princ -- the beginning principal double ir -- the annual interest rate double amort -- the amortized payment int n -- the total number of payments RETURN TYPE: void PURPOSE: Prints the header information to the screen.

PALMS MODULE 2 LAB: WHILE LOOPS IN C++ 13 The purpose of this function is to display summary information at the top of your eventual payment schedule (a report header of sorts). The screen output should be formatted as follows: AMORTIZATION SCHEDULE Beginning Principal: NNNNNN.NN Annual Interest Rate: NN.NN% Total Payments: NNN Payment Amount: NNN.NN Payment# Interest Due Principal Balance Remaining The use of N indicates that, in the actual output, a number should appear in that position. The number of N s after a decimal point indicates the desired precision of the output. For example, there should be two digits to the right of the decimal for the principal amount, annual interest rate, and payment amount. Finally, add code to your main function which calls printheaderinformation with the four necessary arguments. Compile and Build your program and test it out. Hint: use cout.precision() and setw() to format your output. Exercise 9: Enhance your Amortization.cpp file by adding the following function to the end of your file (don t forget to add the function prototype!): / FUNCTION NAME: computeinterestportion PARAMETERS: double remaining_balance -- the loan balance double ir -- the annual interest rate int ppy -- the payments per year RETURN TYPE: double PURPOSE: Computes and returns the interest portion for the current payment. / double computeinterestportion(double remaining_balance, double ir, int ppy) compute the interest portion of the payment... return (remaining_balance * (ir / 100.0)) / ppy; The purpose of this function is to compute the interest portion of each individual payment. This amount fluctuates based on the remaining balance for the loan. The formula used as the basis of this function is as follows:

PALMS MODULE 2 LAB: WHILE LOOPS IN C++ 14 (current balance) [(annual interest rate / 100.0)] (payments per year) This formula computes the interest amount present in any payment. Compile your file to make sure there are no errors. You will not add code to your main function to test this function, but it will be used in the next exercise. Exercise 10: Enhance your Amortization.cpp file by adding a function called computeandprintrows. The purpose of this function is to compute (and display) the payment schedule for the loan. Recall that in Exercise 8 you produced a report header to the screen. The last line of this header was as follows: Payment# Interest Due Principal Balance Remaining These four items are column headings for the report which follows. Your computeandprintrows function must produce the rows which follow in other words, the lines of the report consisting of the four column values. There will be one row per payment. For example, if the loan was for 10 years, 12 payments per year, there would be 120 rows of data in your table (10 years * 12 payments per year). The computeandprintrows function should have the following prototype and comment header: void computeandprintrows(double p, double ir, double amort, int n, int ppy); / FUNCTION NAME: computeandprintrows PARAMETERS: double p -- the beginning principal double ir -- the annual interest rate double amort -- the amortized payment int n -- the total number of payments int ppy -- the payments per year RETURN TYPE: void PURPOSE: Computes the row values and prints them to the screen. / Each row will show the payments interest amount, principal amount, and the balance remaining on the loan. This will require a while loop which ends with the last payment. Each iteration of the while loop will compute the interest due (using the computeinterestportion function), the principal amount provided by the payment (i.e. the amortized payment amount minus the interest due) and the remaining balance (the prior balance minus the principal amount paid with this specific payment).

PALMS MODULE 2 LAB: WHILE LOOPS IN C++ 15 Here is an example of what a sample report would look like for a small loan: AMORTIZATION SCHEDULE Beginning Principal: 150750.00 Annual Interest Rate: 7.38% Total Payments: 30 Payment Amount: 12615.39 Payment# Interest Due Principal Balance Remaining 1 11125.35 1490.04 149259.96 2 11015.38 1600.01 147659.95 3 10897.30 1718.09 145941.86 4 10770.51 1844.88 144096.98 5 10634.36 1981.04 142115.94 6 10488.16 2127.24 139988.70 7 10331.17 2284.23 137704.48 8 10162.59 2452.80 135251.67 9 9981.57 2633.82 132617.86 10 9787.20 2828.20 129789.66 11 9578.48 3036.92 126752.74 12 9354.35 3261.04 123491.70 13 9113.69 3501.71 119990.00 14 8855.26 3760.13 116229.87 15 8577.76 4037.63 112192.24 16 8279.79 4335.61 107856.63 17 7959.82 4655.57 103201.06 18 7616.24 4999.15 98201.90 19 7247.30 5368.09 92833.81 20 6851.14 5764.26 87069.55 21 6425.73 6189.66 80879.89 22 5968.94 6646.46 74233.44 23 5478.43 7136.97 67096.47 24 4951.72 7663.67 59432.80 25 4386.14 8229.25 51203.55 26 3778.82 8836.57 42366.97 27 3126.68 9488.71 32878.26 28 2426.42 10188.98 22689.29 29 1674.47 10940.92 11748.36 30 867.03 11748.36 0.00 Total Interest: 227711.79 Note that, at the end of the report, the total amount of interest paid is displayed. You will need to keep track of this in your while loop! Finally, add code to your main function which calls computeandprintrows with the five necessary arguments. Compile, Build, and test your program to make sure it works! Note: there are many online mortgage calculators you can use to test your results.

PALMS MODULE 2 LAB: WHILE LOOPS IN C++ 16 Part 5: Projectile Motion The motion of a projectile follows an arc trajectory, unless the starting velocity is large enough to be considered an escape velocity (a velocity that allows a projectile to defy gravity and leave the earth). For example, the path of a baseball once it leaves the bat follows an arc, beginning at the bat and ending when it hits the ground. On the other hand, NASA launches its space shuttles at a high enough velocity to outrun the pull of the earth s gravity. The height s of the projectile at time t with initial velocity v0 is calculated by the formula s = v 0 t 1 2 gt2 Where g is the gravitational constant (9.8 m/s 2 ). Exercise 11: Write a C++ program to create a table of height vs. time for a given projectile. Allow the user to enter an initial velocity in m/s (v0) and calculate the height of the projectile for time t = 0, 1, 2, 3,, n-1, n seconds. The last entry in your table (n seconds) should come when the height of the projectile reaches 0. Note that the final height may be less than 0; simply report this value as zero in your output. Remember to break your program down into functions and follow the C++ Coding Guidelines. Some other notes: Use four digits of precision for real-number output. Use the setw tool to properly format your output. Remember to validate the input (must be > 0). Create a constant for the gravitational constant (9.8 m/s 2 ). Four test cases are provided on the following pages.

PALMS MODULE 2 LAB: WHILE LOOPS IN C++ 17 Case #1: Please enter you initial velocity (in m/s): 5 Projectile Height Chart Initial Velocity: 5.0000 m/s Time Height ---- ------ 0 0.0000 1 0.1000 2 0.0000 Case #2: Please enter you initial velocity (in m/s): 0.0 Projectile Height Chart Initial Velocity: 0.0000 m/s Time Height ---- ------ 0 0.0000 Case #3: Please enter you initial velocity (in m/s): 21.56 Projectile Height Chart Initial Velocity: 21.5600 m/s Time Height ---- ------ 0 0.0000 1 16.6600 2 23.5200 3 20.5800 4 7.8400 5 0.0000

PALMS MODULE 2 LAB: WHILE LOOPS IN C++ 18 Case #4: Please enter you initial velocity (in m/s): 100.789 Projectile Height Chart Initial Velocity: 100.7890 m/s Time Height ---- ------ 0 0.0000 1 95.8890 2 181.9780 3 258.2670 4 324.7560 5 381.4450 6 428.3340 7 465.4230 8 492.7120 9 510.2010 10 517.8900 11 515.7790 12 503.8680 13 482.1570 14 450.6460 15 409.3350 16 358.2240 17 297.3130 18 226.6020 19 146.0910 20 55.7800 21 0.0000

PALMS MODULE 2 LAB: WHILE LOOPS IN C++ 19 Part 5: Vocabulary Words You will be assessed on your knowledge of the following terms and concepts as well as the C++ concepts discussed in this document. As a result, you are encouraged to review these terms in the preceding document. Boolean true or false. Conditions/Conditional Expressions expressions which evaluate to one of two possible values: true or false. Conditional repetition the repeated execution of a statement or a sequence of statements. Counter Variable A variable (usually an integer) which keeps track of the number of loop iterations. Infinite Loop Occurs when a conditional expression never becomes false, causing a loop to repeat forever. It appears to the user as a non-responsive or hanging program.. Iterations the cycles of a loop; in other words, the number of times the loop body is repeated. Loop In C++, a construct that repeats a series of statements. Loop Body the portion of a loop inside. Sentinel A value which signals a loop to stop. While loops A basic C++ loop construct; compound statements which execute a statement or a series of statements as long as a specified condition is true.