2012 Grey Image
<< | APQuestionsTrailIndex | >>
Click here to see the questions from 2012
GrayImage.java
public class GrayImage
{
public static final int BLACK=0;
public static final int WHITE=255;
/**
* The 2-dimensional representation of this image. Guaranteed not to be null.
* All values in the array are within the range [BLACK, WHITE], inclusive.
*/
private int[][] pixelValues;
/** @return the total number of white pixels in this image.
* Postcondition: this image has not been changed.
*/
public int countWhitePixels()
{
/* to be implemented in part (a) */
return -1;
}
/** Processes this image in row-major order and decreases the value of each pixel at
* position (row, col) by the value of the pixel at position (row + 2, col + 2) if it exists.
* Resulting values that would be less than BLACK are replaced by BLACK.
* Pixels for which there is no pixel at position (row + 2, col + 2) are unchanged. */
public void processImage()
{
/* to be implemented in part (b) */
}
public GrayImage(int[][] p)
{
pixelValues=p;
}
public String toString(){
int rows=pixelValues.length;
int cols=pixelValues[0].length;
String[] s=new String[rows];
for(int r=0;r<rows;r++){
s[r]=String.format(" %2d",r);
for (int c=0; c<cols;c++)
s[r]=s[r]+String.format("[%3d]",pixelValues[r][c]);
}
String result=" ";
for (int c=0;c<cols;c++)
result+=String.format("%5d", c);
for (int r=0;r<rows;r++)
result+="\n"+s[r];
return result;
}
}
GrayImageTester.java
public class GrayImageTester
{
public static void main (String[] args)
{
int [][] p={{255,184,178,84,129},{84,255,255,130,84},{78,255,0,0,78},{84,130,255,130,84}};
int [][] p2={{221,184,178,84,135},{84,255,255,130,84},{78,255,0,0,78},{84,130,255,130,84}};
int [][] p3={{221,184,100,84,135},{0,125,171,130,84},{78,255,0,0,78},{84,130,255,130,84}};
GrayImage pic=new GrayImage(p);
GrayImage pic2=new GrayImage(p2);
GrayImage pic3=new GrayImage(p3);
System.out.println("Part A");
System.out.println(pic+"\ncountWhitePixels() should return 5");
System.out.println("your code returns "+pic.countWhitePixels());
System.out.println("Part B");
System.out.println("processImage() should change \n"+pic2+"\n into \n"+pic3);
pic2.processImage();
System.out.println("your code produces\n"+pic2);
}
}
