Now that we have if/else and loops available, we can examine some uses. You are responsible for knowing the algorithms covered today for purposes of programming and examinations.
Simple check for even and odd integers, and for zero, even, and odd integers:
nested if where (num%2
== 0) as either zero (0 itself) or even
EvenOdd.txt EvenOdd.c EvenOdd.exe
Expanding on constrained input range code found in 16 Jan and 22 Jan:
Range.txt Range.c Range.exe
Examining an integer one digit at a time.
If val holds an integer, val%10 will be the
lowest order digit in the decimal number, and val/10
will discard that digit. The little program reports the digits one at a
time, and then reports the number of digits in the number. It is
constrained to report one digit for zero — the logic is in a do
a while loop.
CountDigits.txt CountDigits.c CountDigits.exe
Checking for prime numbers, those that can only be divided by 1 and
themselves. So 1 is excluded, and division by zero excludes 0. Hence
positive numbers from 2 up. Again there are two cases where
(num%2 == 0): only 2
itself is prime, and all other even numbers are not prime (composite numbers).
PrimeRealEstate.txt PrimeRealEstate.c PrimeRealEstate.exe
New material: rand() and srand(int) to obtain a sequence of random numbers. C provides
a pair of functions: rand() and
rand() returns values between zero and RAND_MAX (a constant
define in stdlib.h along with the prototypes for rand() and
srand(int)). To get different
sequences of random number, the user calls
srand(int) and passes a "seed", an integer that
initializes the sequence that rand() returns.
The sequence will be identical if the same seed is used. If
srand(int) is not called, rand() will start
with a seed of 1.
TinyDemo.txt TinyDemo.c TinyDemo.exe
program generates one throw of a pair of dice — which could be the start
of your generating your own craps program.
diceroll.txt diceroll.c diceroll.exe
Program to drive student drill: the students count off from 1 up to N.
The program then identifies all of the numbers in random order, then starts
another sequence. The program terminates when the user enters the word
"quit" before pressing enter.
DrillSeq.txt DrillSeq.c DrillSeq.exe
Advanced example (using elements of C that we have not yet covered): explicitly measuring the probability of the 11 possible results.
CrapsProbability.txt CrapsProbability.c CrapsProbability.exe
100 million rolls (which took about four seconds) generated this table:
Seed for srand: 19430407 How many throws are being accumulated? 100000000 2: 2.780%, exact result is 2.778% 3: 5.558%, exact result is 5.556% 4: 8.334%, exact result is 8.333% 5: 11.111%, exact result is 11.111% 6: 13.892%, exact result is 13.889% 7: 16.661%, exact result is 16.667% 8: 13.893%, exact result is 13.889% 9: 11.107%, exact result is 11.111% 10: 8.335%, exact result is 8.333% 11: 5.554%, exact result is 5.556% 12: 2.775%, exact result is 2.778%