#include "library.h" void print_digit(const int d) { if (d == 0) print("zero"); else if (d == 1) print("one"); else if (d == 2) print("two"); else if (d == 3) print("three"); else if (d == 4) print("four"); else if (d == 5) print("five"); else if (d == 6) print("six"); else if (d == 7) print("seven"); else if (d == 8) print("eight"); else if (d == 9) print("nine"); else print("\n**** ERROR ****\n"); } void print_digits(const int amt, const int divisor, const bool printed) { cout << "called, amt = " << amt << ", divisor = " << divisor << ", printed = " << printed << "\n"; if (divisor == 0) { cout << "quick escape\n"; return; } const int d = amt / divisor; // in order to skip leading zeros, this digit should be printed // if it is not zero (d != 0), // or if we have already printed an earlier digit (printed == true), // or if this is the final digit anyway (divisor == 1) if (d != 0 || printed == true || divisor == 1) { cout << "printing\n"; print_digit(d); print(" "); print_digits(amt - d*divisor, divisor/10, true); } else { cout << "skipping\n"; print_digits(amt - d*divisor, divisor/10, false); } cout << "FINISHED, amt = " << amt << ", divisor = " << divisor << ", printed = " << printed << "\n"; } // This is a "wrapper" function. It doesn't do any real work, it just wraps // itself around the real function as an extra layer, giving the programmer // a much simpler way to use the real function. void print_digits(const int num) { print_digits(num, 1000000000, false); } void main() { print_digits(13792); new_line(); }