Post-Lab - Lab (6) - A Program with Several Functions that Draws Shapes


In this post lab, we want to create a program that draws a diamond or a triangle with a size that the user selects using a specific character that will be entered at the keyboard.  Here are two examples:

A triangle of size 4, using *:

        *
      ***
    *****
  *******

A diamond of size 4, using *:

        *
      ***
    *****
  *******
    *****
      ***
        *

What do we need for this program?
Problem definition
We first need to clearly define the problem, the inputs and the outputs.
Inputs:
    1) a choice to draw one of the two shapes or to quit the program,
    2) a character choice which will be used for drawing the selected shape, and
    3) the size of the shape

Output:
One of these will be the output:
   1) a triangle,
   2) a diamond,
   3) quit

Analysis of the problem
We need to break down the tasks that this program is supposed to complete. The main tasks are:
    1) ask for the input data
    2) for both triangle and diamond, first display a triangle of requested size, and then if the choice is a diamond, add the bottom part
    3) displays the shape

To write this program, we will assume that we have the following functions:

    1) void instructions( )
        // This function describes the program and how it works

    2) int menu( )
        // This function will return a choice to the main ; 1) draw triangle, 2) draw diamond, and 3) quit

    3) void draw_shape(int choice)
        // This function calls on appropriate function to detect the input value and, depending on the choice, to draw a shape.

    4) void intput(int& size, char& c)
        // This function will ask users to select a character that will be used to draw the shape and the size of the shape.

    6) void draw_triangle(int size, char c)
        // This function draws a  triangle of size size using character c

    7) void draw_diamond(int size, char c)
        // This function first calls draw_triangle, then add_bottom to draw the diamond

    8) void draw_bottom(int size, char c)
        // This function actually draws an upside down triangle of size size-1 as the bottom of the diamond

Now that we have defined the functions, it is time to design the algorithm for the program.  However, we can write a draft main part of the program.

int main ( )
{
     int choice;

     instructions( );
     choice = menu( );
     if(choice != 1 && choice != 2)
     {
        cout << "You requested to quit, bye \n";
        return 0;
     }

     draw_shape(choice);

     return 0;
}
 

Algorithm Design
The following diagram (structure chart) summarizes the algorithm design for this program.  The direction of each arrow is the same as the direction in which the data flow.


Complete the program that draws a triangle or a diamond similar as shown below. Call the program postlab6.cpp.  All function definitions and the algorithm have been given above. Input the size of the triangle or diamond from the user.

Output examples:

A triangle of size 4 using * should appear as:

        *
      ***
    *****
  *******

A diamond of size 4, using * should appear as:

        *
      ***
    *****
  *******
    *****
      ***
        *

Practice Challenge (5 extra points): Add two more options to the choice selection of the program.  The two new options will produce triangles similar to the one shown below:

Upside down triangle of size 4, using *:

    *******
      *****
        ***
          *

A side-way triangle of size 4, using *:

    *
    **
    ***
    ****
    ***
    **
    *

 

Instructions to return your lab to the teacher: (5 points penalty if instructions are not followed appropriately)

  1. Be sure you return all the files where you have written all your answers. These are the answers to 6.2, 6.3, 6.4, the PostLab.
  2. Transfer ONLY the source files you have written from loki to your local Windows machine and collect them in a  folder called YourLastNameLab6 (ex. AGuercioLab6). Be sure you did not copy any executable file in this folder. If you did, please remove it from the folder.
    The files to be zipped are:

    Exercise 6-2: 
    ex62.cpp
    Exercise 6-3:
    ex63.cpp
    Exercise 6-4:
    ex64.cpp
    Post Lab:
    postlab6.cpp

    DO NOT INCLUDE: Exercise 6-1:

    ex61.txt
  3. Now exit from the folder, right click on the folder and choose WinZip--> Zip and e-mail. This action will pack your folder and attach it to an e-mail. You can use a Rar Program if you have that program instead of the Zip program.
  4. Send the e-mail to kschaffe@kent.edu with the subject CS23021 Lab 6 Submission.
  5. Send your e-mail before the deadline to receive full credit.
  6. Print the source code and turn it in class before the deadline.

Congratulations! You have completed another Lab of CS I !! :-))