## Type Systems

### Using Type int

All the programs we have written so far have been operating on a fixed number of values given on standard input. Is it possible to programs that read in some arbitrary number of values instead? Here is one such problem.

Problem: Write a program that reads in one natural number from standard input – let us call it n. Upon that, it should read in additional n numbers from standard input. Finally, the program should output the sum of those n numbers.

This does not seem too difficult to do. First, the program should read in the number n:

```    cout << "Type in the number n: ";
int n;
cin >> n;
```

It would be best if variable `n` is of type `int`, as given, since the problem does not make sense if `n` is not a natural number. Even more, the problem explicitly states that the input value n has to be a natural number.

We should now write a `for` loop that does `n` iterations to read in `n` numbers. The number of an iteration has to be a whole number, too. Accordingly, the loop variable, often named `i`, should also be an integer! Let us try that out:

```    for(int i=1; i<=n; i++)
{
double inputValue;
cin >> inputValue;
sum += inputValue;
}
cout << "The sum is: " << sum << endl;
```

It is all obvious. But, what did we forget?

We forgot to introduce the `sum` variable and set it to 0! Here is the entire program:

```#include <iostream>
using namespace std;

int main()
{
cout << "Type in the number n: ";
int n;
cin >> n;

cout << "Type in " << n << " numbers:" << endl;
double sum = 0;
for(int i=1; i<=n; i++)
{
double inputValue;
cin >> inputValue;
sum += inputValue;
}
cout << "The sum is: " << sum << endl;
}
```

Be careful because the problem as stated obliges a user to type in a natural number for the value n. Should he fail to do so, the program will not work correctly. The `cin` statement will misinterpret the input data if the user does not provide a whole number as a first value.

If you run this program, this is what you might get on output:

```Type in the number n: 4
Type in 4 numbers:
5.1  -3  0.55  8.88
The sum is: 11.53
```

### Local Variables

There is something else that is new in the given program: it might seem somewhat weird to see the variable `inputValue` being introduced in the middle of a `for` loop. How does such a thing work?

In the C++ language, and in many others, variables are local to a statement block in which they are introduced. What does that mean? It means that those variables are valid only in the said statement block. When the execution of a given statement block is completed, all the variables introduced in it are removed.

When a statement block is repeated by a `for` loop, on every iteration the local variables introduced in that statement block first get created and then they get removed when an iteration is completed.

In our example, the variable `inputValue` gets created on every iteration at the beginning of the statement block, and it gets removed on every iteration at the end of the block's execution. The variable `inputValue` is a local variable of the statement block controlled by the `for` loop.