One difficult problem in computer science is to calculate the area of a collection of possibly overlapping rectangles. For small data sets it is possible to take a fairly naive approach to this problem and use a two dimensional array as a method of counting units.
You are to write a program that computes the total area used by a set of overlapping rectangles given in a data file. The data file will consist of 4 values on each line. The 4 values will define the lower left corner and upper right corner of the rectangle to be added.
We have provided two sample input files: Run1.dat and Run2.dat and a sample executable. Click on the link to download the executable and save it on your M drive. Open the DOS window and use the CD command to find the file if necessary and type 'rect' (without the quotes) to see the sample program run.
You must define a structure called Point that a pair x and y
of integer values.
(The integer x will be between 0 and 78; the integer y will be between 0 and 22.)
You must define a structure called Rect that
represents a
rectangle
hint: a rectangle can be described by two points.
You must also
define a structure called Screen which consists of a two dimensional
array and its size.
The following functions should be implemented:
void init_screen(Screen& s); /* This function initializes the 'screen' setting its dimensions and filling the area with periods (nothing is printed to the computer monitor here!). */ void draw_screen(Screen s); /* This function copies the contents of the screen s onto the computer monitor. */ void make_rectangle(int x1, int y1, int x2, int y2, Rect& r) /* This function constructs the rectangle r so that the lower left corner is (x1, y1) and the upper right corner is (x2, y2). */ void insert_rectangle(Screen& s, Rect r) /* This function places the rectangle r onto the 'screen' by placing *'s in the locations representing the rectangle. */ int compute_area(Screen s) /* This function computes the area used by rectangles currently on the screen. It returns the total number of *'s. */
We have provided a driver program that you may use for your assignment. It is highly suggested that you write the functions one at a time testing each function with your own driver program, then substituting our driver program at the end.
File name: rect.cpp