The C++Course provides a general introduction to programming in C++. It is based on A.B. Downey's book, How to Think Like a Computer Scientist. Click here for details. |
Home Structures Rectangles | ||
Rectangles
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. We can access the width and height in the usual way: 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.
|
||
Home Structures Rectangles |