CS 1711 - Assignment 6

Due: 5 pm, December 4
Sample driver now available!

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

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