Question
C++ Programming Specifications: The single constructor for the Diamond class should have 3 parameters: an integer size (the length of a side), a border character
C++ Programming
Specifications:
The single constructor for the Diamond class should have 3 parameters: an integer size (the length of a side), a border character (with a default of #), and a fill character (with a default of '*'). If the size provided is less than 1, set the size to 1. If the size provided is greater than 39, set the size to 39. The class will need to provide internal storage for any member data that must be kept track of.
There should be member functions called GetSize (returns size of a side), Perimeter (returns perimeter of diamond), and Area (returns area of diamond). The first 2 should return integer results. The Area function should return its result as a double.
There should be member functions Grow (increases diamonds size by 1) and Shrink (decreases diamonds size by 1). If this causes the size to go out of bounds (1-39 range), Grow and Shrink shouldnt make any change to the size.
There should be member functions SetBorder (new character border) and SetFill (new character fill). Ive added a chart of ASCII characters that are acceptable for this (ascii 33 - ascii 126). Anything outside this range should set the border or fill back to the default original (# for border and * for fill).
There should be a member function called Draw that will display a picture of the Diamond on the screen. You may assume that the cursor is already at the beginning of a line when the function begins, and you should make sure that you leave the cursor on the line following the picture afterwards (i.e. print a newline after the last line of the diamond). Use the border character to draw the border of the diamond, and use the fill character to draw the internal characters. Separate the characters on a line in the picture by a single space to make the Diamond look more proportional (so that the halves look more like equilateral triangles). You may not use formatting functions like setw to draw the diamond. This must be handled with loops. (You will only print out the newline, spaces, the border character, and maybe the fill character on any given line).
Provide a member function called Summary that displays all information about a diamond: its size, perimeter, area, and a picture of what it looks like. When displaying the area (decimal data), always show exactly 2 decimal places. Your output should be in the exact same format as mine (seen in sample run below)
I am providing a sample driver .cpp program that uses objects of type Diamond and illustrates the usage of the member functions. I have also provided the output from the sample execution of this program below. The class declaration and definition files must work with the main program as it is, and should also be able to work with any size set of calls. You can post images of the class files, since i dont think you can attach documents.
Main requirements:
No global variables, other than constants!
All member data of your class must be private
Use library for output. Also use for decimal places, but do not use setw() or other output formatting functions for drawing the actual diamond. You may use the library
The header file file should contain the class declaration only. The diamond.cpp file should contain the member function definitions.
Driver.cpp file example model:
ASCII Characters Chart:
Sample Run: (they're supposed to be perfect diamonds)
d1 has size = 1 units. # d2 has size = 7 units. ^ ^ ^ ^ * ^ ^ * * ^ ^ * * * ^ ^ * * * * ^ ^ * * * * * ^ ^ * * * * ^ ^ * * * ^ ^ * * ^ ^ * ^ ^ ^ ^ d3 has size = 12 units. X X X X O X X O O X X O O O X X O O O O X X O O O O O X X O O O O O O X X O O O O O O O X X O O O O O O O O X X O O O O O O O O O X X O O O O O O O O O O X X O O O O O O O O O X X O O O O O O O O X X O O O O O O O X X O O O O O O X X O O O O O X X O O O O X X O O O X X O O X X O X X X X d4 has size = 39 units. $ $ $ $ o $ $ o o $ $ o o o $ $ o o o o $ $ o o o o o $ $ o o o o o o $ $ o o o o o o o $ $ o o o o o o o o $ $ o o o o o o o o o $ $ o o o o o o o o o o $ $ o o o o o o o o o o o $ $ o o o o o o o o o o o o $ $ o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o o $ $ o o o o o o o o o o o o o $ $ o o o o o o o o o o o o $ $ o o o o o o o o o o o $ $ o o o o o o o o o o $ $ o o o o o o o o o $ $ o o o o o o o o $ $ o o o o o o o $ $ o o o o o o $ $ o o o o o $ $ o o o o $ $ o o o $ $ o o $ $ o $ $ $ $ d1 now has size = 1 units. d2 now has size = 6 units. d3 now has size = 13 units. d4 now has size = 39 units. d2 has perimeter = 24 units. d3 has perimeter = 52 units. d2 has area = 31.1769 square units. d3 has area = 146.358 square units. # d1 grows: # # # # ... and grows: # # # # * # # # # d1 now has size = 6 units. ^ ^ ^ ^ * ^ ^ * * ^ ^ * * * ^ ^ * * * * ^ ^ * * * ^ ^ * * ^ ^ * ^ ^ ^ ^ d2 now looks like: @ @ @ @ - @ @ - - @ @ - - - @ @ - - - - @ @ - - - @ @ - - @ @ - @ @ @ @ d2 now looks like: # # # # * # # * * # # * * * # # * * * * # # * * * # # * * # # * # # # # Here is a summary on d3: Size of diamond's side = 13 units. Perimeter of diamond = 52 units. Area of diamond = 146.36 units. Diamond looks like: X X X X O X X O O X X O O O X X O O O O X X O O O O O X X O O O O O O X X O O O O O O O X X O O O O O O O O X X O O O O O O O O O X X O O O O O O O O O O X X O O O O O O O O O O O X X O O O O O O O O O O X X O O O O O O O O O X X O O O O O O O O X X O O O O O O O X X O O O O O O X X O O O O O X X O O O O X X O O O X X O O X X O X X X Xlude ki ostream> include kiomanip include diamond. using namespace std; int main create some Diamonds Diamond d1 -5), d2 7, 'A' d3 12, 'X', 'O' d4 50 o display original Diamonds units. "d1 has dl. Get Size cout Size dl Draw cout "And2 has size d2.Get Size units. In"; d2. Draw cout And has size d3.Getsize units. In"; 3 d3. Draw cout AndA has size d4 Get Size units. An"; d4 Draw cout An d1. Shrink demonstrate shrink d2. Shrink d3 Grow and grow d4 Grow cout d1 now has size d1.Getsize units. An size d2.Ge Size units. An cout d2 now has cout d3 now has size d 3.Getsize units. An"; units. d4 now has d4. Get Size cout demonstrate perimeter units. An cout "d2 has perimeter d2 Perimeter cout d3 has perimeter d3. Perimeter units. An and area cout d2 has area d2. Area square units. In "; cout d3 has area d3 Area square units. In "; dl. Draw show that fill character dl Grow dl grows only when size cout appears is at least 3 dl Draw dl Grow rows and g cout 1. Draw cout d1 d2 demonstrate the default overload of the assignment operator cout dl now has size d1.Getsize units. dl.Draw demonstrate the changing of border and fill characters d2. Se Border d2. Set Fill like d2 now looks cout d2 Draw cout An d 22. Set Border An illegal border Ma illegal fill d2. Set Fill like d2 now looks cout d2 Draw cout An cout "AnHere is a summary on d3 An"; demonstrate summary d3. Summary return 0
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started