0% found this document useful (0 votes)
54 views9 pages

Problem Definition: Inputs

The document outlines a program that allows a user to select drawing either a triangle or diamond shape of a given size using a character of their choice, with functions defined to get input, draw each shape, and a main program to call the appropriate drawing function based on the user's selection. Sample code is provided to test the triangle drawing function by hardcoding size and character values.

Uploaded by

VishavjeetDevgan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
0% found this document useful (0 votes)
54 views9 pages

Problem Definition: Inputs

The document outlines a program that allows a user to select drawing either a triangle or diamond shape of a given size using a character of their choice, with functions defined to get input, draw each shape, and a main program to call the appropriate drawing function based on the user's selection. Sample code is provided to test the triangle drawing function by hardcoding size and character values.

Uploaded by

VishavjeetDevgan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
You are on page 1/ 9

4.

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) draw_shape(int choice)


        // This function calls on appropriate function depending on the choice to draw
a shape

    4) int get_size( )


        // This function will return the size of the shape, same function for either of the
shapes

    5) char get_char( )


        // This function will ask users to select a character that will be used to draw 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 draw_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 the 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.

Suppose we want to test the draw triangle function.  This function is called within the
draw_shape function.  There are two arguments to this function, the size and the
character c. To test the program we can use the driver shown below:

#include<iostream>
using namespace std;

void draw_triangle(int size, char c);


void draw_shape(int size, char c);
int main( )
{
// Simplified version of main, notice that char and size are fixed for now
     char c = '*';
     int size = 4;

     draw_shape(size, c);

     return 0;
}

void draw_shape(int size, char c) //A simplified version of draw_shape


{
       draw_triangle(size, c);
}

void draw_triangle(int size, char c)


{
 // complete version of draw_triangle function
 ....
....
}

Complete the function draw_triangle in the above program, then use the driver and
stubs given above to draw a triangle.  Repeat a similar thing for the draw_diamond
function.

Complete draw_shape() and submit your full code.

Answer=
#include <iostream>
#include <cstdlib>
using namespace std;

void instruction()
{
cout<<"\n ****************** Instructions ****************** ";
cout<<"\n Select the shape you want.";
cout<<"\n Enter the size of the shape.";
cout<<"\n Select choice 3 to stop.";
}// End of function
int menu()
{

int ch;
cout<<"\n\n ****************** Menu ****************** ";
cout<<"\n 1. Draw Triangle. ";
cout<<"\n 2. Draw Diamond. ";
cout<<"\n 3. Quit. ";

cout<<"\n What is your choice? ";


cin>>ch;

if(ch >= 1 && ch <= 3)


if(ch == 3)
exit(0);
// if valid
else
// Returns User choice back
return ch;
// Otherwise invalid choice return -1
else
return -1;

}// End

// Function to draw triangle based on size and symbol(c) passed as parameter


void draw_triangle(int size, char c)
{
// For number of times the symbol to display
int times = 1;

// Loops till number of rows reverse order


for(int r = size - 1; r >= 0 ; r--)
{
// Loops till outer loop r value to display space
for(int sp = 0; sp < r; sp++)
cout<<" ";

// Loops till times value to display symbol


for(int tm = 0; tm < times; tm++)
cout<<c;
cout<<endl;
// Increase the times counter by 2 for next row
times += 2;
}// End of for loop
}// End of function

// Function to display bottom part of the diamond based on the size and symbol(c) passed as
parameter
void draw_bottom(int size, char c)
{
// For number of times the symbol to display
int times = (size * 2) - 3;

// Loops till number of rows one less than the size


for(int r = 1; r < size; r++)
{
// Loops till outer loop r value to display space
for(int sp = 0; sp < r; sp++)
cout<<" ";

// Loops till times value to display symbol


for(int tm = 0; tm < times; tm++)
cout<<c;
// Moves to next line
cout<<endl;
// Decrease the times counter by 2 for next row
times -= 2;
}// End of for loop
}// End of function

// Function to draw diamond shape


void draw_diamond(int size, char c)
{
// Calls the function to draw upper part of the diamond
draw_triangle(size, c);
// Calls the function to draw bottom part of the diamond
draw_bottom(size, c);
}// End of function

// Function to draw a shape based on the choice passed as parameter


void draw_shape(int choice)
{
// To store size of the shape
int size;
// To store the symbol used in the shape
char symbol;

// Accepts size and symbol


cout<<"\n Enter the size: ";
cin>>size;
cout<<"\n Enter the symbol for the shape: ";
cin>>symbol;

// Checks the user choice and calls the appropriate function


switch(choice)
{
case 1:
draw_triangle(size, symbol);
break;
case 2:
draw_diamond(size, symbol);
break;
case 3:
exit(0);
default:
cout<<"\n Invalid choice!";
}// End of switch case
}// End of function

// main function definition


int main()
{
// Calls the function to display instruction
instruction();
int ch;
// Loops till user choice is not 3
do
{
// Calls the function accept user choice
ch = menu();

// Checks if user choice is -1 then invalid choice


if(ch == -1)
cout<<"\n Invalid choice!";
// Otherwise valid choice
else
// Calls the function (draw_shape) which takes user choice as a parameter
// returned by the function menu
draw_shape(ch);
}while(true);// End of do - while loop
return 0;
}// End of main function

Sample Output:

****************** Instructions ******************


Select the shape you want.
Enter the size of the shape.
Select choice 3 to stop.

****************** Menu ******************


1. Draw Triangle.
2. Draw Diamond.
3. Quit.
What is your choice? 9

Invalid choice!

****************** Menu ******************


1. Draw Triangle.
2. Draw Diamond.
3. Quit.
What is your choice? 1

Enter the size: 5

Enter the symbol for the shape: $


$
$$$
$$$$$
$$$$$$$
$$$$$$$$$

****************** Menu ******************


1. Draw Triangle.
2. Draw Diamond.
3. Quit.
What is your choice? 2

Enter the size: 8

Enter the symbol for the shape: *


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

****************** Menu ******************


1. Draw Triangle.
2. Draw Diamond.
3. Quit.
What is your choice? 3

 
 

You might also like