Design and implement a C++ program for the following specification.
You are only required to submit one file for this assignment. This is the cpp file, not the project file or the solution file or the executable file. If you submit the wrong file, it will not be possible to mark your assignment.
You may submit your program more than once up to the due date and time, if you decide to change your program after already submitting it. Only the last submission you make will be marked.
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
Assessment
The assessment of your program will be based on the following points. This scheme may change a little, depending on the programs submitted.
- Style
o Program compiles without errors or warnings
o Clean formatting of the source code using tabs, newlines, spaces
o Appropriate use of the techniques listed in the assignment requirements
o Special emphasis will be placed on code comments
- Functionality
o Program is executable
o Program gives helpful instructions to the user
o The user can enter a sequence of numbers
o The sequence can have variable length
o Program deals with obvious errors in the user input
o Correctness of the output
o Program terminates gracefully