1: // Filename: PRNTEVEN.CPP
2: // Purpose: Prints out the even digits in a positive integer.
4: #include <iostream>
5: #include <iomanip>
7: void DisplayIDInfo(int);
8: void DescribeProgram();
9: void DisplayMainMenu(int);
10: void GetMenuChoice(int, int&);
11: void Pause(int);
12: void PrintEvenDigits(int);
15: int main()
16: {
17: const INDENT_LEVEL = 20;
18: int menuChoice;
19: int n;
21: DisplayIDInfo(INDENT_LEVEL/2);
23: do
24: {
25: DisplayMainMenu(INDENT_LEVEL);
26: GetMenuChoice(INDENT_LEVEL, menuChoice);
28: switch (menuChoice)
29: {
30: case 1:
31: cout << setw(INDENT_LEVEL) << ""
32: << "Program is now terminating. "
33: << endl;
34: break;
35: case 2:
36: DescribeProgram();
37: break;
38: case 3:
39: cout << setw(INDENT_LEVEL) << ""
40: << "Enter a positive integer: ";
41: cin >> n; cin.ignore(80, '\n'); cout << endl;
42: cout << setw(INDENT_LEVEL) << ""
43: << "Even digits in " << n << " are: ";
44: PrintEvenDigits(n);
45: cout << endl << endl;
46: break;
47: }
49: if (menuChoice != 1)
50: Pause(0);
52: } while (menuChoice != 1);
54: cout << endl;
56: return 0;
57: }
58:
59: void DisplayIDInfo(int indentLevel)
60: // Pre: indentLevel contains a nonnegative integer.
61: // Post: A blank line, and a line containing the programmer's name
62: // have been displayed.
63: {
64: cout << endl;
65: cout << setw(indentLevel) << ""
66: << "This sample program produced by Your_Name_Goes_Here.";
67: cout << endl;
68: }
71: void DescribeProgram()
72: // Pre: none
73: // Post: A program description has been displayed.
74: {
75: cout << endl;
76: cout << "This program outputs the even digits "
77: << "in a positive integer (in the same order)." << endl;
78: cout << endl;
79: }
82: void DisplayMainMenu(int indentLevel)
83: // Pre: indentLevel contains a nonnegative integer.
84: // Post: A menu has been displayed, each line indented indentLevel spaces.
85: {
86: cout << endl << endl;
87: cout << setw(indentLevel) << "" << "Main Menu ";
88: cout << endl << endl;
89: cout << setw(indentLevel) << "" << "1. Quit " << endl;
90: cout << setw(indentLevel) << "" << "2. Get information " << endl;
91: cout << setw(indentLevel) << "" << "3. Print even digits " << endl;
92: cout << endl << endl;
93: }
96: void GetMenuChoice(int indentLevel, int& menuChoice)
97: // Pre: indentLevel contains a nonnegative integer.
98: // Post: A prompt has been displayed, indented indentLevel spaces,
99: // and menuChoice contains an integer entered by the user.
100: {
101: cout << setw(indentLevel) << "" << "Enter your choice here: ";
102: cin >> menuChoice; cin.ignore(80, '\n');
103: cout << endl << endl;
104: }
107: void Pause(int indentLevel)
108: // Pre: The standard input stream cin is empty, and indentLevel
109: // contains a nonnegative integer.
110: // Post: A prompt has been displayed, indented indentLevel spaces,
111: // and the user has pressed <RETURN>.
112: {
113: char newlineChar;
114: cout << setw(indentLevel) << "Press <RETURN> to continue ... ";
115: cin.get(newlineChar);
116: cout << endl;
117: }
118:
119: void PrintEvenDigits(/* in */ int n)
120: // Pre: n contains a positive integer.
121: // Post: All even digits in n have been output in the order in
122: // which they appeared in n, with no spaces between them.
123: {
124: if (n < 10)
125: {
126: if (n % 2 == 0)
127: cout << n;
128: }
129: else
130: {
131: int t = n % 10;
132: PrintEvenDigits(n / 10);
133: if (t % 2 == 0)
134: cout << t;
135: }
136: }