10. Arrays

It is time to readdress the first part of our initial problem: write a program that reads in 10 values, then writes them out in the reverse order, i.e. from the last to the first.

An array for storing input data will be used, in this case an array of 10 elements. Such an array can be introduced by the following statement:

```    vector<double> inputData(10);
```

This statement introduces a variable `inputData` as an array having 10 elements of type `double`. In addition, it sets every element of this array to zero.

To read in and store ten numbers from standard input into the variable `inputData` we can use a `for` loop:

```    for(int i=0; i<10; i++)
cin >> inputData[i];
```

Again the idiom of using loop variables for iterating through array elements has been employed.

To complete the program, we just need to print out the elements of this array, beginning with the last one. Let us use a `for` loop again:

```    for(int i=0; i<10; i++)
cout << inputData[9-i] << endl;
```

The variable `i` ranges from 0 to 9 in this for loop, but the index expression is `9-i`, which has the effect of reversing the order.

The second part of the problem was: Write a program that first reads in a natural number n. Then it should read in n numbers. It should write out those n numbers in the reverse order. Here is the entire solution:

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

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

cout << "Type in " << n << " numbers:" << endl;
vector<double> inputData(n);
for(int i=0; i<n; i++)
cin >> inputData[i];

cout << "Output in the reverse order:" << endl;
for(int i=0; i<n; i++)
cout << inputData[n-1-i] << " ";
cout << endl;
}
```

To separate the output data, the program uses a single space character instead of breaking to a new line after outputting each value. That is why the output values will all be printed out on a single line.

The output looks like this:

```Type in the number n: 6
Type in 6 numbers:
11 22.2 33 -44 5.55 6
Output in the reverse order:
6 5.55 -44 33 22.2 11
```

You might be wondering why the program is allowed to introduce the variable `i` twice, once in each `for` loop? The answer is: because loop variables get removed once the loop has been completed.