1.4.4 The if Statement
Like most languages, C++(www.cppentry.com) provides an if statement that supports conditional execution. We can use an if to write a programto count how many consecutive times each distinct value appears in the input:
- #include <iostream>
- int main()
- {
- // currVal is the number we’re counting; we’ll read new values into val
- int currVal = 0, val = 0;
- // read first number and ensure that we have data to process
- if (std::cin >> currVal) {
- int cnt = 1; // store the count for the current value we’re processing
- while (std::cin >> val) { // read the remaining numbers
- if (val == currVal) // if the values are the same
- ++cnt; // add 1 to cnt
- else { // otherwise, print the count for the previous value
- std::cout << currVal << " occurs "
- << cnt << " times" << std::endl;
- currVal = val; // remember the new value
- cnt = 1; // reset the counter
- }
- } // while loop ends here
- // remember to print the count for the last value in the file
- std::cout << currVal << " occurs "
- << cnt << " times" << std::endl;
- } // outermost if statement ends here
- return 0;
- }
If we give this program the following input:
- 42 42 42 42 42 55 55 62 100 100 100
then the output should be
- 42 occurs 5 times
- 55 occurs 2 times
- 62 occurs 1 times
- 100 occurs 3 times
Much of the code in this programshould be familiar fromour earlier programs. We start by defining val and currVal: currVal will keep track of which number we are counting; val will hold each number as we read it from the input. What’s new are the two if statements. The first if
- if (std::cin >> currVal) {
- // . . .
- } // outermost if statement ends here
ensures that the input is not empty. Like a while, an if eva luates a condition. The condition in the first if reads a value into currVal. If the read succeeds, then the condition is true and we execute the block that starts with the open curly following the condition. That block ends with the close curly just before the return statement.
Once we know there are numbers to count, we define cnt, which will count how often each distinct number occurs. We use a while loop similar to the one in the previous section to (repeatedly) read numbers from the standard input.
The body of the while is a block that contains the second if statement:
- if (val == currVal) // if the values are the same
- ++cnt; // add 1 to cnt
- else { // otherwise, print the count for the previous value
- std::cout << currVal << " occurs "
- << cnt << " times" << std::endl;
- currVal = val; // remember the new value
- cnt = 1; // reset the counter
- }
The condition in this if uses the equality operator (the == operator) to test whether val is equal to currVal. If so, we execute the statement that immediately follows the condition. That statement increments cnt, indicating that we have seen currVal once more.