Activity 2-2: Input/ Output Examples and
the iostream Library

Activity Procedure

It is likely that every program you write this term
will have some form of output (otherwise, what good would it be?), and
most programs will also require some input. Every C++ program that does
input/output must make use of capabilities found in the "iostream" library.
The 'io' in that name comes from input/output and the 'stream' comes from
the notion of data flowing either to or from the program. The words "cout"
and "cin" are the names of the output stream and the input stream, respectively.
These words are pronounced "see-out" and "see-in".

In order to use the iostream library, we must tell the C++ compiler
to include in our program information found in the iostream header file.
This is what the

#include <iostream>

line of the program does. Make it a habit to put that line after the
comment header of every program you write in this class.

cout represents the standard output device (the screen), and
the "<<" operator is used to send values to cout. Likewise, cin
is the standard input device (the keyboard) and the ">>" operator gets
data from this device and stores it in one or more variables. The single
line

cin >> x >> y >> z;

is equivalent to reading x, y, and z in
three separate lines:

cin >> x;
cin >> y;
cin >> z;

The program will not proceed until three integers have been read and assigned
to the variables x, y and z either way. White space is ignored when reading
integers, so the input

88 97
65

and

88

97 65

result in the same values being read.

The line

average = (x + y + z)/3;

is an assignment statement; the value of the expression on the
right is stored in the variable on the left.

Now let's give the program a test run.

Compile the program to an executable file like so:

g++ -o ave ave.C

The syntax of this command is very important. If you use the "-o" option,
the following name is used for the exececutable which is generated from
the source file. In this case, ave.C is the source file, and ave
is the executable. You can omit the -o option and type simply

g++ ave.C

In this case the executable takes the default name of a.out. What you
never want to do is to type

g++ -o ave.C

This uses ave.C as the name of the executable, and lacking a source
argument, compiles nothing. This results in an empty executable; in other
words, you just erased your source file!

So assuming you compile the first way, you now have a new verb in your
vocabulary: ave. Just type this at the command line to run the program.

When prompted, enter this data:

81 83 85

(and press <Enter>). You should see:

Enter three grades separated by spaces,
then press <Enter>:81 83 85The average is 83

Now try it again with new data 81 83 87. Here's the result:

Enter three grades separated by spaces,
then press <Enter>:81 83 87The average is 83

Oops! We ought to get 83.67, but we get the same average as before.
The problem is that when we calculate the average we evaluate (81 + 83
+ 87)/3, or 251/3. When an integer is divided by an integer in C++, the
result is an integer (obtained by truncation, or throwing away the fractional
part). In a mixed division, say integer divided by double, real arithmetic
is used and a double answer is obtained. So we can fix the problem simply
by changing the denominator from 3 to 3.0. Here's the new program: