Section 8.8 Rectangles
Now letβs say that we want to create a structure to represent a rectangle. The question is, what information do I have to provide in order to specify a rectangle? To keep things simple letβs assume that the rectangle will be oriented vertically or horizontally, never at an angle.
There are a few possibilities: I could specify the center of the rectangle (two coordinates) and its size (width and height), or I could specify one of the corners and the size, or I could specify two opposing corners.
The most common choice in existing programs is to specify the upper left corner of the rectangle and the size. To do that in C++, we will define a structure that contains a
Point and two doubles.
struct Rectangle {
Point corner;
double width, height;
};
Notice that one structure can contain another. In fact, this sort of thing is quite common. Of course, this means that in order to create a
Rectangle, we have to create a Point first:
Point corner = { 0.0, 0.0 };
Rectangle box = { corner, 100.0, 200.0 };
This code creates a new
Rectangle structure and initializes the instance variables. The figure shows the effect of this assignment.

βboxβ names a box that contains three variables: βwidthβ which is 100, βheightβ which is 200, and βcornerβ which names a package that has βx: 0β and βy: 0β."
box.width += 50.0;
cout << box.height << endl;
In order to access the instance variables of
corner, we can use a temporary variable:
Point temp = box.corner;
double x = temp.x;
Alternatively, we can compose the two statements:
double x = box.corner.x;
It makes the most sense to read this statement from right to left: βExtract
x from the corner of the box, and assign it to the local variable x.β
While we are on the subject of composition, I should point out that you can, in fact, create the
Point and the Rectangle at the same time:
Rectangle box = { { 0.0, 0.0 }, 100.0, 200.0 };
The innermost squiggly braces are the coordinates of the corner point; together they make up the first of the three values that go into the new
Rectangle. This statement is an example of nested structure.
Rectangle structure. Feel free to modify the code and experiment around!Checkpoint 8.8.2.
You have attempted of activities on this page.
