Title: Examples
 1Examples
- Example Problems, 
 - their Algorithms, and 
 - their C Source Code. 
 
  2Problem 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. 
  3Algorithm 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.
 
  4Interest  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 
  5Interest, 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)  
  6First 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. 
  7Interest, 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)  
 
  8Second 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  
  9Interest, 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) 
 
  10Interest, 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) 
 -  
 -  
 
  11Third 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 
 
  12Interest, 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) 
 
  13Interest, 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) 
 -  
 -  
 
  14Fourth 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 
 
  15Interest, 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) 
 
  16Interest, 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) 
 -  
 -  
 
  17Fifth 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 
 
  18Source 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) 
 
  19Source 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)  -  
 -  
 
  20Final 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
 
  21Improvements 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.
 
  22Improvements 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. 
  23Improved 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 
)  
  24Improved 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
 
  26Improved 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 
)  -   
 
  27Improved 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  
 -   
 
  28Improved 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
 
  30Improved 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 
)  -   
 
  31Improved 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) 
 -  
 
  32Improved 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
 
  34Problem  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? 
  35CombinatoricsThinking 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. 
  36CombinatoricsThinking 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.
 
  37CombinatoricsThinking 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.
 
  38CombinatoricsThinking 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 )
 
  39Algorithm  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 
 
  40CombinatoricsIncremental 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