Examples - PowerPoint PPT Presentation

About This Presentation
Title:

Examples

Description:

Interest : Design the Report. Interest rate : 7.0000 % Period : 20 years ... Testing Principal Validity Check. This program computes the interest accrued in an account ... – PowerPoint PPT presentation

Number of Views:54
Avg rating:3.0/5.0
Slides: 41
Provided by: umbcd
Category:
Tags: examples | testing

less

Transcript and Presenter's Notes

Title: Examples


1
Examples
  • Example Problems,
  • their Algorithms, and
  • their C Source Code.

2
Problem Interest
  • Compute interest that is compounded annually.
  • Write an interactive program that allows the user
    to calculate the interest accrued in a savings
    account that is compounded annually over a period
    of years.
  • The user must supply the principal amount,
    interest rate and the number of years .
  • Without the break, the code flows into the next
    case. This is almost never what you want.

3
Algorithm Interest
  • Print explanation of the program
  • Get principal from user.
  • Get interest rate from user.
  • Get number of years from user.
  • For the number of years specified
  • Calculate the amount in the account at the end of
    the year. (amount amount rate)
  • interest accrued amount - principal
  • Print report.

4
Interest Design the Report
  • Interest rate 7.0000
  • Period 20 years
  • Principal at start of period 1000.00
  • Interest accrued 2869.68
    Total amount at end of period 3869.68

5
Interest, programmed incrementally 1
  • / Filename interest.c
  • Author Sue Bogar
  • Date written 11/14//99
  • Description This program computes the
    interest accrued in an account
  • that compounds interest
    annually.
    /
  • include ltstdio.hgt
  • main ( )
  • / Print Instructions /
  • printf (This program computes the interest
    accrued in an account)
  • printf (that compounds interest annually. You
    will need to enter the)
  • printf (amount of the principal, the interest
    rate and the number of years.\n\n)

6
First Output Interest
  • This program computes the interest accrued in an
    account
  • that compounds interest annually. You will need
    to enter the
  • amount of the principal, the interest rate and
    the number of years.

7
Interest, programmed incrementally 2
  • / Filename interest.c
  • Author Sue Bogar
  • Date written 11/14//99
  • Description This program computes the
    interest accrued in an account
  • that compounds interest
    annually.
    /
  • include ltstdio.hgt
  • main ( )
  • float principal, rate
  • int years
  • / Print Instructions /
  • printf (This program computes the interest
    accrued in an account)
  • printf (that compounds interest annually. You
    will need to enter the)
  • printf (amount of the principal, the interest
    rate and the number of years.\n\n)
  • / Get input from user /
  • printf (Enter the principal amount )
  • scanf (f, principal)
  • printf (Enter the interest rate as a decimal
    (for 7 enter .07) )
  • scanf (f, rate)

8
Second Output Interest
  • This program computes the interest accrued in an
    account
  • that compounds interest annually. You will need
    to enter the
  • amount of the principal, the interest rate and
    the number of years.
  • Enter the principal amount 1000.00
  • Enter the interest rate as a decimal (for 7
    enter .07) .07
  • Enter the number of years 20
  • principal 1000.000000, rate 0.070000, years
    20

9
Interest, programmed incrementally 3
  • / Filename interest.c
  • Author Sue Bogar
  • Date written 11/14//99
  • Description This program computes the
    interest accrued in an account
  • that compounds interest
    annually.
    /
  • include ltstdio.hgt
  • main ( )
  • float principal, rate, amount, interest
  • int years, I
  • / Print Instructions /
  • printf (This program computes the interest
    accrued in an account)
  • printf (that compounds interest annually. You
    will need to enter the)
  • printf (amount of the principal, the interest
    rate and the number of years.\n\n)
  • / Get input from user /
  • printf (Enter the principal amount )
  • scanf (f, principal)
  • printf (Enter the interest rate as a decimal
    (for 7 enter .07) )
  • scanf (f, rate)

10
Interest, programmed incrementally 3
  • / Save the original principal amount by varying
    another variable, amount /
  • amount principal
  • / Calculate total amount in the account after
    the specified number of years /
  • for ( I 0 I lt 1 I )
  • amount amount rate
  • / Calculate accrued interest /
  • interest amount - principal
  • printf (\nprincipal f, rate f, years
    d\n, principal, rate, years )
  • printf (amount f, interest f\n)

11
Third Output Interest
  • This program computes the interest accrued in an
    account
  • that compounds interest annually. You will need
    to enter the
  • amount of the principal, the interest rate and
    the number of years.
  • Enter the principal amount 1000.00
  • Enter the interest rate as a decimal (for 7
    enter .07) .07
  • Enter the number of years 20
  • principal 1000.000000, rate 0.070000, years
    20
  • amount 1070.000000, interest 70.000000

12
Interest, programmed incrementally 4
  • / Filename interest.c
  • Author Sue Bogar
  • Date written 11/14//99
  • Description This program computes the
    interest accrued in an account
  • that compounds interest
    annually.
    /
  • include ltstdio.hgt
  • main ( )
  • float principal, rate, amount, interest
  • int years, I
  • / Print Instructions /
  • printf (This program computes the interest
    accrued in an account)
  • printf (that compounds interest annually. You
    will need to enter the)
  • printf (amount of the principal, the interest
    rate and the number of years.\n\n)
  • / Get input from user /
  • printf (Enter the principal amount )
  • scanf (f, principal)
  • printf (Enter the interest rate as a decimal
    (for 7 enter .07) )
  • scanf (f, rate)

13
Interest, programmed incrementally 4
  • / Save the original principal amount by varying
    another variable, amount /
  • amount principal
  • / Calculate total amount in the account after
    the specified number of years /
  • for ( I 0 I lt 2 I )
  • amount amount rate
  • / Calculate accrued interest /
  • interest amount - principal
  • printf (\nprincipal f, rate f, years
    d\n, principal, rate, years )
  • printf (amount f, interest f\n)

14
Fourth Output Interest
  • This program computes the interest accrued in an
    account
  • that compounds interest annually. You will need
    to enter the
  • amount of the principal, the interest rate and
    the number of years.
  • Enter the principal amount 1000.00
  • Enter the interest rate as a decimal (for 7
    enter .07) .07
  • Enter the number of years 20
  • principal 1000.000000, rate 0.070000, years
    20
  • amount 1144.900000, interest 144.900000

15
Interest, programmed incrementally 5
  • / Filename interest.c
  • Author Sue Bogar
  • Date written 11/14//99
  • Description This program computes the
    interest accrued in an account
  • that compounds interest
    annually.
    /
  • include ltstdio.hgt
  • main ( )
  • float principal, rate, amount, interest
  • int years, I
  • / Print Instructions /
  • printf (This program computes the interest
    accrued in an account)
  • printf (that compounds interest annually. You
    will need to enter the)
  • printf (amount of the principal, the interest
    rate and the number of years.\n\n)
  • / Get input from user /
  • printf (Enter the principal amount )
  • scanf (f, principal)
  • printf (Enter the interest rate as a decimal
    (for 7 enter .07) )
  • scanf (f, rate)

16
Interest, programmed incrementally 5
  • / Save the original principal amount by varying
    another variable, amount /
  • amount principal
  • / Calculate total amount in the account after
    the specified number of years /
  • for ( I 0 I lt years I )
  • amount amount rate
  • / Calculate accrued interest /
  • interest amount - principal
  • printf (\nprincipal f, rate f, years
    d\n, principal, rate, years )
  • printf (amount f, interest f\n)

17
Fifth Output Interest
  • This program computes the interest accrued in an
    account
  • that compounds interest annually. You will need
    to enter the
  • amount of the principal, the interest rate and
    the number of years.
  • Enter the principal amount 1000.00
  • Enter the interest rate as a decimal (for 7
    enter .07) .07
  • Enter the number of years 20
  • principal 1000.000000, rate 0.070000, years
    20
  • amount 3869.680000, interest 2869.680000

18
Source code in C Interest
  • / Filename interest.c
  • Author Sue Bogar
  • Date written 11/14//99
  • Description This program computes the
    interest accrued in an account
  • that compounds interest
    annually.
    /
  • include ltstdio.hgt
  • main ( )
  • float principal, rate, amount, interest
  • int years, I
  • / Print Instructions /
  • printf (This program computes the interest
    accrued in an account)
  • printf (that compounds interest annually. You
    will need to enter the)
  • printf (amount of the principal, the interest
    rate and the number of years.\n\n)
  • / Get input from user /
  • printf (Enter the principal amount )
  • scanf (f, principal)
  • printf (Enter the interest rate as a decimal
    (for 7 enter .07) )
  • scanf (f, rate)

19
Source code in C Interest
  • / Save the original principal amount by varying
    another variable, amount /
  • amount principal
  • / Calculate total amount in the account after
    the specified number of years /
  • for ( I 0 I lt years I )
  • amount amount rate
  • / Calculate accrued interest /
  • interest amount - principal
  • / Print report /
  • printf (Interest rate .4f \n, 100
    rate )
  • printf ( Period d years\n\n,
    years )
  • printf ( Principal at start of period
    9.2f, principal )
  • printf ( Interest accrued
    9.2f, interest )
  • printf (Total amount at end of period 9.2f,
    amount)

20
Final Output Interest
  • This program computes the interest accrued in an
    account
  • that compounds interest annually. You will need
    to enter the
  • amount of the principal, the interest rate and
    the number of years.
  • Enter the principal amount 1000.00
  • Enter the interest rate as a decimal (for 7
    enter .07) .07
  • Enter the number of years 20
  • Interest rate 7.0000
  • Period 20 years
  • Principal at start of period 1000.00
  • Interest accrued 2869.68
  • Total amount at end of period 3869.68

21
Improvements to Interest
  • We now have a working program that we are
    convinced that is correct and solves the problem.
  • Our program is not robust, since none of the
    input provided by the user is checked for
    validity.
  • We need to decide what is valid.

22
Improvements to Interest
  • What range of values will we allow for the
    principal ?
    Positive values less than or equal to 100,000.
  • How about the interest rate ? Positive
    values less than 1.
  • And the numbers of years ? Years
    between 1 and 100.

23
Improved Interest 1
  • / Filename interest.c
  • Author Sue Bogar
  • Date written 11/14//99
  • Description This program computes the
    interest accrued in an account
  • that compounds interest
    annually.
    /
  • include ltstdio.hgt
  • main ( )
  • float principal, rate, amount, interest
  • int years, I
  • / Print Instructions /
  • printf (This program computes the interest
    accrued in an account)
  • printf (that compounds interest annually. You
    will need to enter the)
  • printf (amount of the principal, the interest
    rate and the number of years.\n\n)
  • / Get principal from user /
  • printf (Enter the principal amount )
  • scanf (f, principal)
  • / Validate principal amount /
  • while ( principal lt 0.0 principal gt 100000.0
    )

24
Improved Interest 1
  • printf (Enter the interest rate as a decimal
    (for 7 enter .07) )
  • scanf (f, rate)
  • printf (Enter the number of years )
  • scanf (d, years)
  • / Save the original principal amount by varying
    another variable, amount /
  • amount principal
  • / Calculate total amount in the account after
    the specified number of years /
  • for ( I 0 I lt years I )
  • amount amount rate
  • / Calculate accrued interest /
  • interest amount - principal
  • / Print report /
  • printf (Interest rate .4f \n, 100
    rate )
  • printf ( Period d years\n\n,
    years )
  • printf ( Principal at start of period
    9.2f, principal )
  • printf ( Interest accrued
    9.2f, interest )
  • printf (Total amount at end of period 9.2f,
    amount)

25
Interest Testing Principal Validity Check
  • This program computes the interest accrued in an
    account
  • that compounds interest annually. You will need
    to enter the
  • amount of the principal, the interest rate and
    the number of years.
  • Enter the principal amount 100000.01
  • The principal amount must be between 0 and
    100000.
  • Enter the principal amount -.01
  • The principal amount must be between 0 and
    100000.
  • Enter the principal amount 1000.00
  • Enter the interest rate as a decimal (for 7
    enter .07) .07
  • Enter the number of years 20
  • Interest rate 7.0000
  • Period 20 years
  • Principal at start of period 1000.00
  • Interest accrued 2869.68
  • Total amount at end of period 3869.68

26
Improved Interest 2
  • / Filename interest.c
  • Author Sue Bogar
  • Date written 11/14//99
  • Description This program computes the
    interest accrued in an account
  • that compounds interest
    annually.
    /
  • include ltstdio.hgt
  • main ( )
  • float principal, rate, amount, interest
  • int years, I
  • / Print Instructions /
  • printf (This program computes the interest
    accrued in an account)
  • printf (that compounds interest annually. You
    will need to enter the)
  • printf (amount of the principal, the interest
    rate and the number of years.\n\n)
  • / Get valid principal amount from user /
  • printf (Enter the principal amount )
  • scanf (f, principal)
  • while ( principal lt 0.0 principal gt 100000.0
    )

27
Improved Interest 2
  • / Get valid interest rate from user /
  • printf (Enter the interest rate as a decimal
    (for 7 enter .07) )
  • scanf (f, rate)
  • while ( rate lt 0.0 rate gt 1.0 )
  • printf (The interest rate must be between
    0 and 1\n)
  • printf (Enter the interest rate as a
    decimal (for 7 enter .07) )
  • scanf (f, rate)
  • printf (Enter the number of years )
  • scanf (d, years)
  • / Save the original principal amount by varying
    another variable, amount /
  • amount principal
  • / Calculate total amount in the account after
    the specified number of years /
  • for ( I 0 I lt years I )
  • amount amount rate

28
Improved Interest 2
  • / Calculate accrued interest /
  • interest amount - principal
  • / Print report /
  • printf (Interest rate .4f \n, 100
    rate )
  • printf ( Period d years\n\n,
    years )
  • printf ( Principal at start of period
    9.2f, principal )
  • printf ( Interest accrued
    9.2f, interest )
  • printf (Total amount at end of period 9.2f,
    amount)

29
Interest Testing Interest Rate Validity Check
  • This program computes the interest accrued in an
    account
  • that compounds interest annually. You will need
    to enter the
  • amount of the principal, the interest rate and
    the number of years.
  • Enter the principal amount 1000.00
  • Enter the interest rate as a decimal (for 7
    enter .07) 1.0001
  • The interest rate must be between 0 and 1.
  • Enter the interest rate as a decimal (for 7
    enter .07) -.0001
  • The interest rate must be between 0 and 1.
  • Enter the interest rate as a decimal (for 7
    enter .07) .07
  • Enter the number of years 20
  • Interest rate 7.0000
  • Period 20 years
  • Principal at start of period 1000.00
  • Interest accrued 2869.68
  • Total amount at end of period 3869.68

30
Improved Interest 3
  • / Filename interest.c
  • Author Sue Bogar
  • Date written 11/14//99
  • Description This program computes the
    interest accrued in an account
  • that compounds interest
    annually.
    /
  • include ltstdio.hgt
  • main ( )
  • float principal, rate, amount, interest
  • int years, I
  • / Print Instructions /
  • printf (This program computes the interest
    accrued in an account)
  • printf (that compounds interest annually. You
    will need to enter the)
  • printf (amount of the principal, the interest
    rate and the number of years.\n\n)
  • / Get valid principal amount from user /
  • printf (Enter the principal amount )
  • scanf (f, principal)
  • while ( principal lt 0.0 principal gt 100000.0
    )

31
Improved Interest 3
  • / Get valid interest rate from user /
  • printf (Enter the interest rate as a decimal
    (for 7 enter .07) )
  • scanf (f, rate)
  • while ( rate lt 0.0 rate gt 1.0 )
  • printf (The interest rate must be between
    0 and 1\n)
  • printf (Enter the interest rate as a
    decimal (for 7 enter .07) )
  • scanf (f, rate)
  • / Get valid number of years from user /
  • printf (Enter the number of years )
  • scanf (d, years)
  • while ( years lt 1 years gt 100 )
  • printf (The number of years must be
    between 1 and 100, inclusive\n)
  • printf (Enter the number of years )
  • scanf (d, years)

32
Improved Interest 3
  • / Save the original principal amount by varying
    another variable, amount /
  • amount principal
  • / Calculate total amount in the account after
    the specified number of years /
  • for ( I 0 I lt years I )
  • amount amount rate
  • / Calculate accrued interest /
  • interest amount - principal
  • / Print report /
  • printf (Interest rate .4f \n, 100
    rate )
  • printf ( Period d years\n\n,
    years )
  • printf ( Principal at start of period
    9.2f, principal )
  • printf ( Interest accrued
    9.2f, interest )
  • printf (Total amount at end of period 9.2f,
    amount)

33
Interest Testing Years Validity Check
  • This program computes the interest accrued in an
    account
  • that compounds interest annually. You will need
    to enter the
  • amount of the principal, the interest rate and
    the number of years.
  • Enter the principal amount 1000.00
  • Enter the interest rate as a decimal (for 7
    enter .07) .07
  • Enter the number of years 101
  • The number of years must be between 1 and 100,
    inclusive.
  • Enter the number of years 0
  • The number of years must be between 1 and 100,
    inclusive.
  • Enter the number of years 20
  • Interest rate 7.0000
  • Period 20 years
  • Principal at start of period 1000.00
  • Interest accrued 2869.68
  • Total amount at end of period 3869.68

34
Problem Combinatorics
  • Combinatorics is the art of enumerating
    combinations and permutations.
  • Find and count all positive integers with three
    digits or less whose digits add up to a number
    specified by the user.
  • What constraints should we put on the sum of the
    digits?

35
CombinatoricsThinking through the problem
  • The smallest number is 0, so the input should be
    0 or greater.
  • The largest number is 999, so the input should be
    27 (9 9 9) or less.
  • We could have a single for loop that goes through
    the integers from 0 to 999.
  • For each integer, well need to break the integer
    up into its individual digits, add them up and
    compare that sum to num.

36
CombinatoricsThinking through the problem
  • Weve already learned the trick used to separate
    an integer into its digits. It involved using
    integer division and modulus within a loop. Each
    iteration of the loop stripped one digit off of
    the integer.
  • So within the for loop, well need to have
    another loop that separates the integer into its
    digits, sums them, compares the sum to num and
    prints and counts the integer if they are equal.
  • This approach will solve the problem, but it
    takes a lot of work at each step and will take a
    long time. How many steps ? 1000 3
  • There must be a quicker and easier way.

37
CombinatoricsThinking through the problem
  • Instead of working with the integers 0 through
    999, we could work with each of the digits
    instead.
  • We could vary just one of the digits at a time
    using nested for loops, like this 0 0 0, 0
    0 1, 0 0 9, 0 1 0, 9 9 9
  • This will eliminate the need to split the integer
    into its digits.
  • Each for loop will control one of the digits.

38
CombinatoricsThinking through the problem
  • for ( I 0 I lt 10 I)
  • for ( j 0 j lt 10 j)
  • for ( k 0 k lt 10 k)
  • if ( I j k num )
  • printf ( ddd\n, I, j, k )
  • counter
  • How long does this take ? 1000 ( 10 10 10 )

39
Algorithm Combinatorics
  • Print explanation
  • Get num from user (0 lt num lt 27)
  • Validate value of num
  • Vary 1 digit at a time from the digit sequence
    000 to the digit sequence 999
  • If the sum of the digits is equal to num, print
    the 3 digits (or less) with no space between
    them. Dont print leading 0s.
  • Increment the counter.
  • Print the count

40
CombinatoricsIncremental Programming
  • Write the explanation, get it running
  • Get num from user and validate it, get this
    running.
  • Write the nested for loops that will print all
    three digits when they sum to num. (has leading
    0s) and print the count. Dont forget to
    initialize count to 0 before beginning. Get this
    running.
  • Modify the code to eliminate leading 0s
Write a Comment
User Comments (0)
About PowerShow.com