Mountain panorama

Mountain panorama

Write a program that creates a picture of a mountain panorama from a height profile entered by the user. The following screenshot shows what the output could look like:

The picture shall consist of 5 text lines of length 60. Implement the picture as an array of 5 strings. Every string must initially be filled with 60 space symbols. Space symbols represent the sky. The mountains can be drawn by replacing a single space symbol by a star symbol.

Characters in a string can be set as in the following example:

string greeting = "hallo";greeting[ 1 ] = 'e'; // now, greeting = "hello"

The shape of the mountains is defined by their height profile. The height profile gives the height of the mountains (measured in text lines) for every column of the picture.

The height profile shall be stored in a one-dimensional array of integers. The array indices correspond to the columns of the picture. The value stored at a certain index gives the height of the mountain in text lines.

At startup, the program displays instructions to the user. Then the program lets the user enter the height profile as a sequence of integer numbers. The user may stop entering numbers early by entering a stop symbol (in the example: the value -1). The stop symbol is not entered in the array. Use the programming technique "partially filled array" from the lecture to implement the height profile.

The program should consist of three functions:

- main
- InputHeightProfile
- DrawMountains

The main function should contain

1. The declaration of a partially filled array for the height profile
2. A call of the function InputHeightProfile
3. A call of the function DrawMountains

The function InputHeightProfile lets the user enter the sequence of numbers. The array storing the height profile should be a parameter of this function. The function should return the number of values entered by the user. The function InputHeightProfile

1. displays the instructions for the user,

2. lets the user enter the sequence of values,

3. lets the user end the sequence early by recognising the stop symbol,

4. and determines the actual length of the sequence (without the optional stop symbol).

The function DrawMountains creates and displays a picture from the height profile. The height profile must therefore be a parameter of this function. The function

1. creates an array of strings, filled with spaces, that represent an (initially empty) image,

2. iterates over all columns, then iterates over a suitable number of rows (according to the height profile), to fill the image with star symbols that represent the mountains,

3. displays the array of strings on the screen.

The program should not crash or produce infinite loops, when too high or too low values are entered in the height profile.

Assignment Requirements

In this assignment you must demonstrate you can use the following programming techniques:

- Use arrays and partially filled arrays

- Use functions and function parameters

- Write helpful code comments that explain the functionality of all parts of the program

- Use descriptive identifiers that support understanding the program

- Use a systematic program layout

- Use only local variables

- Use appropriate loop statements

Do not use the following techniques:

- Do not use the C++ keywords break (except for a switch statement), return (except at the very beginning or end of a function), exit, goto, or continue.

- Do not use templates or dynamic memory allocation.
Powered by