Skip to main content

How To Think Like a Computer Scientist C++ Edition The Pretext Interactive Version

Section 10.11 Checking the other values

howMany only counts the occurrences of a particular value, and we are interested in seeing how many times each value appears. We can solve that problem with a loop:
int numValues = 20;
int upperBound = 10;
vector<int> vector = randomVector(numValues, upperBound);

cout << "value\thowMany";

for (int i = 0; i < upperBound; i++) {
  cout << i << '\t' << howMany(vector, i) << endl;
}
Notice that it is legal to declare a variable inside a for statement. This syntax is sometimes convenient, but you should be aware that a variable declared inside a loop only exists inside the loop. If you try to refer to i later, you will get a compiler error.
This code uses the loop variable as an argument to howMany, in order to check each value between 0 and 9, in order. The result is:
value   howMany
0       2
1       1
2       3
3       3
4       0
5       2
6       5
7       2
8       0
9       2
Again, it is hard to tell if the digits are really appearing equally often. If we increase numValues to 100,000 we get the following:
value   howMany
0       10130
1       10072
2       9990
3       9842
4       10174
5       9930
6       10059
7       9954
8       9891
9       9958
In each case, the number of appearances is within about 1% of the expected value (10,000), so we conclude that the random numbers are probably uniform.

Checkpoint 10.11.1.

If you declare a variable inside a for statement, where can it exist?
  • inside of the for loop.
  • Correct!
  • outside of the for loop, but inside of the function it’s used in.
  • Incorrect! The variable goes out of scope as soon as the for loop terminates!
  • outside of the function, and everywhere else in the program.
  • Incorrect! The variable goes out of scope as soon as the for loop terminates!

Checkpoint 10.11.2.

Multiple Response When we increase the size of numValues, which of the following is true:
  • the difference between actual and expected number of appearances increases
  • Correct! The numbers go from being off by less than 5 to more than 100.
  • the difference between actual and expected number of appearances decreases
  • Incorrect! Take a look at the numbers again!
  • the percent by which the number of appearances differs from the expected number increases
  • Incorrect! Take a look at the numbers again!
  • the percent by which the number of appearances differs from the expected number decreases
  • Incorrect! As we continue to increase the size of numValues, the percent by which the number of appearances differes from the expected value approaches 0.
You have attempted 1 of 2 activities on this page.