#include #include #include using namespace std; void count_down(int n); int get_starting_val_from_args(int argc, char *argv[]); void usage_abort(string progname, int err); int main(int argc, char *argv[]) { int n = get_starting_val_from_args(argc, argv); count_down(n); return 0; } int get_starting_val_from_args(int argc, char *argv[]) { istringstream ss; int n; if (argc != 2) usage_abort(argv[0], EINVAL); ss.clear(); ss.str(argv[1]); if ((ss >> n) == NULL) { cerr << "Argument must be an integer" << endl; usage_abort(argv[0], EINVAL); } return n; } void usage_abort(string progname, int err) { cerr << "Usage: " << progname << " n" << endl; exit(err); } void count_down(int n) { if (n == 0) cout << "Blastoff!" << endl; else { cout << n << endl; count_down(n - 1); } }