cin
loop can contain all of the computation
for simple programs. Here are two ways to solve a common problem -
find the maximum value in a series of numbers.
The first solution contains the heart of the correct solution, but it has some weaknesses. The second solution improves on the first.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
// loops/cin-max-flakey.cpp - Finds max int in input. // Purpose of this example. // 1. To illustrate algorithm to find maximum. // 2. To show common problems to be fixed in loops/cin-max-robust.cpp // Eg, what happens if all numbers are negative? No input? // Fred Swartz - 2003-08-28 #include <iostream> using namespace std; int main() { int max = 0; int n; while (cin >> n) { if (n > max) { max = n; } } cout << "Maximum is " << max << endl; return 0; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
// loops/cin-max-robust.cpp - Finds max int in input. // Purpose of this example. // 1. To illustrate algorithm to find maximum. // 2. To show solution to negative number or missing input. // Fred Swartz - 2003-08-28 #include <iostream> using namespace std; int main() { int max; int n; if (cin >> max) { // Sets initial value of max while (cin >> n) { if (n > max) { max = n; } } cout << "Maximum is " << max << endl; } else { cout << "No input!" << endl; } return 0; } |
Another way to insure that
the maximum is correctly initialized is to set it to the minimum possible
int value. The range of an int depends on the the
compiler and underlying machine architecture, but the minimum value
is in INT_MIN
(from header file <climits>
).
But there is still the problem of no input values.