Coverage.java


Below is the syntax highlighted version of Coverage.java.


/********************************************************************
  *  Name:    Donna Gabai
  *  Login:   dgabai 
  *  Precept: P01
  *  Fall 2011 exam 2
  * 
  *  Compilation:  javac Coverage.java
  *  Execution:    java Coverage gridSize < input.txt
  * 
  *  Dependencies: Tower, Queue, StdIn, StdOut
  *  Description: Reads grid size from command-line. 
  *               Reads data for a set of cell towers from standard input. 
  *               Estimates the per cent coverage for a set of towers
  ***********************************************************************/

public class Coverage {
    public static void main(String[] args) {
        // grid size
        double T = Double.parseDouble(args[0]);
        
        // set up a Queue of Towers
        Queue<Tower> qt = new Queue<Tower>();
        
        // read from standard input and construct each Tower
        while (!StdIn.isEmpty()) {
            double x0 = StdIn.readDouble();
            double y0 = StdIn.readDouble();
            double r  = StdIn.readDouble();
            Tower t1 = new Tower(x0, y0, r);
            qt.enqueue(t1);
        }
        
        // set up square state
        int width = (int) T;
        int ht = (int) T;
        int count = 0;          // number of covered grid squares

        // for each pixel, check if in range of any tower
        for (int i = 0; i < width; i++) {
            for (int j = 0; j < ht; j++) {
                // for each tower in queue
                boolean inRange = false;
                for (Tower t : qt) {
                    if (t.inRange(i/T, j/T)) {
                        inRange = true;
                        // no need to keep checking this pixel
                        break;
                    }
                }
                if (inRange) count++;
            }
        }
        
        // compute and output per cent coverage
        double pct = 100 * (count / (T*T));
        StdOut.printf("%.1f per cent coverage\n", pct);
    }
}