The program must be modular, with significant work done by functions. Each function should
perform a single, well-defined task. When possible, create re-usable functions. Do not write
trivial functions such as a function to read a single value from an input file.