#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define MAX_X 20
#define MAX_Y 20
int countBlackPixels(int image[MAX_X][MAX_Y]);
int* findYPixel(int image[MAX_X][MAX_Y]);
int* findXPixel(int image[MAX_X][MAX_Y]);
double findTallness(int *,int *);
//function prototypes here
void processImage(int image[MAX_X][MAX_Y]) {
int nBlackPixels;
nBlackPixels = countBlackPixels(image);
printf("Pixel-count: %d\n", nBlackPixels
);
int *pixelHeight;
pixelHeight = findYPixel(image);
printf("Height: %d\n", *pixelHeight
);
int *pixelWidth;
pixelWidth = findXPixel(image);
printf("Width: %d\n", *pixelWidth
);
double tallness;
tallness = findTallness(pixelWidth, pixelHeight);
printf("Tallness: %.6lf\n", tallness
); }
//Count Black Pixels
int countBlackPixels(int image[MAX_X][MAX_Y]) {
int x, y, blackPixelCount;
blackPixelCount = 0;
x = 0;
while (x < MAX_X) {
y = 0;
while (y < MAX_X) {
if (image[x][y] == 1) {
blackPixelCount = blackPixelCount + 1;
//printf("black pixel at x=%d y=%d\n", x, y); // example debug printf
}
y = y + 1;
}
x = x + 1;
}
return blackPixelCount;
}
//Height
//Loops through from bottom-left to the right, and then up
//through the Y axis, find the last occurance of Y,
//adds one to overcome array's zero count, and
//returns this value as the pixel height
int * findYPixel(int image[MAX_X][MAX_Y]) {
int x, y, *pixelHeight;
pixelHeight
= malloc(sizeof(int)); y = 0;
*pixelHeight = -1;
while (y < MAX_X) {
x = 0;
while (x < MAX_X) {
if (image[x][y] == 1) {
*pixelHeight = y+1;
}
x = x + 1;
}
y = y + 1;
}
return pixelHeight;
}
//Width
//Loops through from bottom-left to the top, and then across
//through the X axis, find the last occurance of X, adds 1
//to deal with array 0 count, and
//returns this value as the pixel width
int * findXPixel(int image[MAX_X][MAX_Y]) {
int x, y, *pixelWidth;
pixelWidth
= malloc(sizeof(int)); x = 0;
while (x < MAX_X) {
y = 0;
while (y < MAX_Y) {
if (image[x][y] == 1) {
*pixelWidth = x+1;
}
y = y + 1;
}
x = x + 1;
}
return pixelWidth;
}
//Tallness function
double findTallness(int *pixelWidth, int *pixelHeight) {
double tallness;
tallness = (1.0 * *pixelWidth) / *pixelHeight;
printf("tall=%.6lf\n", tallness
);
return tallness;
}
int main(){
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCiNkZWZpbmUgTUFYX1ggICAgICAgMjAKI2RlZmluZSBNQVhfWSAgICAgICAyMAoKaW50IGNvdW50QmxhY2tQaXhlbHMoaW50IGltYWdlW01BWF9YXVtNQVhfWV0pOwppbnQqIGZpbmRZUGl4ZWwoaW50IGltYWdlW01BWF9YXVtNQVhfWV0pOwppbnQqIGZpbmRYUGl4ZWwoaW50IGltYWdlW01BWF9YXVtNQVhfWV0pOwpkb3VibGUgZmluZFRhbGxuZXNzKGludCAqLGludCAqKTsKCi8vZnVuY3Rpb24gcHJvdG90eXBlcyBoZXJlCgp2b2lkIHByb2Nlc3NJbWFnZShpbnQgaW1hZ2VbTUFYX1hdW01BWF9ZXSkgewoKICAgIGludCBuQmxhY2tQaXhlbHM7CiAgICBuQmxhY2tQaXhlbHMgPSBjb3VudEJsYWNrUGl4ZWxzKGltYWdlKTsKICAgIHByaW50ZigiUGl4ZWwtY291bnQ6ICVkXG4iLCBuQmxhY2tQaXhlbHMpOwoKICAgIGludCAqcGl4ZWxIZWlnaHQ7CiAgICBwaXhlbEhlaWdodCA9IGZpbmRZUGl4ZWwoaW1hZ2UpOwogICAgcHJpbnRmKCJIZWlnaHQ6ICVkXG4iLCAqcGl4ZWxIZWlnaHQpOwoKICAgIGludCAqcGl4ZWxXaWR0aDsKICAgIHBpeGVsV2lkdGggPSBmaW5kWFBpeGVsKGltYWdlKTsKICAgIHByaW50ZigiV2lkdGg6ICVkXG4iLCAqcGl4ZWxXaWR0aCk7CgogICAgZG91YmxlIHRhbGxuZXNzOwogICAgdGFsbG5lc3MgPSBmaW5kVGFsbG5lc3MocGl4ZWxXaWR0aCwgcGl4ZWxIZWlnaHQpOwogICAgcHJpbnRmKCJUYWxsbmVzczogJS42bGZcbiIsIHRhbGxuZXNzKTsKfQoKLy9Db3VudCBCbGFjayBQaXhlbHMKaW50IGNvdW50QmxhY2tQaXhlbHMoaW50IGltYWdlW01BWF9YXVtNQVhfWV0pIHsKICAgIGludCB4LCB5LCBibGFja1BpeGVsQ291bnQ7CiAgICBibGFja1BpeGVsQ291bnQgPSAwOwogICAgeCA9IDA7CiAgICB3aGlsZSAoeCA8IE1BWF9YKSB7CiAgICAgICAgeSA9IDA7CiAgICAgICAgd2hpbGUgKHkgPCBNQVhfWCkgewogICAgICAgICAgICBpZiAoaW1hZ2VbeF1beV0gPT0gMSkgewogICAgICAgICAgICAgICAgYmxhY2tQaXhlbENvdW50ID0gYmxhY2tQaXhlbENvdW50ICsgMTsKICAgICAgICAgICAgICAgIC8vcHJpbnRmKCJibGFjayBwaXhlbCBhdCB4PSVkIHk9JWRcbiIsIHgsIHkpOyAgLy8gIGV4YW1wbGUgZGVidWcgcHJpbnRmCiAgICAgICAgICAgIH0KICAgICAgICAgICAgeSA9IHkgKyAxOwogICAgICAgIH0KICAgICAgICB4ID0geCArIDE7CiAgICB9CiAgICByZXR1cm4gYmxhY2tQaXhlbENvdW50Owp9CgovL0hlaWdodAovL0xvb3BzIHRocm91Z2ggZnJvbSBib3R0b20tbGVmdCB0byB0aGUgcmlnaHQsIGFuZCB0aGVuIHVwCi8vdGhyb3VnaCB0aGUgWSBheGlzLCBmaW5kIHRoZSBsYXN0IG9jY3VyYW5jZSBvZiBZLCAKLy9hZGRzIG9uZSB0byBvdmVyY29tZSBhcnJheSdzIHplcm8gY291bnQsIGFuZAovL3JldHVybnMgdGhpcyB2YWx1ZSBhcyB0aGUgcGl4ZWwgaGVpZ2h0CgogICAgaW50ICogZmluZFlQaXhlbChpbnQgaW1hZ2VbTUFYX1hdW01BWF9ZXSkgewogICAgICAgIGludCB4LCB5LCAqcGl4ZWxIZWlnaHQ7CiAgICAgICAgcGl4ZWxIZWlnaHQgPSBtYWxsb2Moc2l6ZW9mKGludCkpOwogICAgICAgIHkgPSAwOwogICAgICAgICpwaXhlbEhlaWdodCA9IC0xOwogICAgICAgIHdoaWxlICh5IDwgTUFYX1gpIHsKICAgICAgICAgICAgeCA9IDA7CiAgICAgICAgICAgIHdoaWxlICh4IDwgTUFYX1gpIHsKICAgICAgICAgICAgICAgIGlmIChpbWFnZVt4XVt5XSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgKnBpeGVsSGVpZ2h0ID0geSsxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHggPSB4ICsgMTsKICAgICAgICAgICAgfQogICAgICAgICAgICB5ID0geSArIDE7CiAgICAgICAgfQogICAgICAgIHJldHVybiBwaXhlbEhlaWdodDsKICAgIH0KCi8vV2lkdGgKLy9Mb29wcyB0aHJvdWdoIGZyb20gYm90dG9tLWxlZnQgdG8gdGhlIHRvcCwgYW5kIHRoZW4gYWNyb3NzCi8vdGhyb3VnaCB0aGUgWCBheGlzLCBmaW5kIHRoZSBsYXN0IG9jY3VyYW5jZSBvZiBYLCBhZGRzIDEKLy90byBkZWFsIHdpdGggYXJyYXkgMCBjb3VudCwgYW5kCi8vcmV0dXJucyB0aGlzIHZhbHVlIGFzIHRoZSBwaXhlbCB3aWR0aAoKICAgIGludCAqIGZpbmRYUGl4ZWwoaW50IGltYWdlW01BWF9YXVtNQVhfWV0pIHsKICAgICAgICBpbnQgeCwgeSwgKnBpeGVsV2lkdGg7CiAgICAgICAgcGl4ZWxXaWR0aCA9IG1hbGxvYyhzaXplb2YoaW50KSk7CiAgICAgICAgeCA9IDA7CiAgICAgICAgd2hpbGUgKHggPCBNQVhfWCkgewogICAgICAgICAgICB5ID0gMDsKICAgICAgICAgICAgd2hpbGUgKHkgPCBNQVhfWSkgewogICAgICAgICAgICAgICAgaWYgKGltYWdlW3hdW3ldID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAqcGl4ZWxXaWR0aCA9IHgrMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB5ID0geSArIDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgeCA9IHggKyAxOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcGl4ZWxXaWR0aDsKICAgIH0KCgovL1RhbGxuZXNzIGZ1bmN0aW9uCiAgICBkb3VibGUgZmluZFRhbGxuZXNzKGludCAqcGl4ZWxXaWR0aCwgaW50ICpwaXhlbEhlaWdodCkgewogICAgICAgIGRvdWJsZSB0YWxsbmVzczsKICAgICAgICB0YWxsbmVzcyA9ICgxLjAgKiAqcGl4ZWxXaWR0aCkgLyAqcGl4ZWxIZWlnaHQ7CiAgICAgICAgcHJpbnRmKCJ0YWxsPSUuNmxmXG4iLCB0YWxsbmVzcyk7CgogICAgICAgIHJldHVybiB0YWxsbmVzczsKICAgIH0KCmludCBtYWluKCl7CgkKCXJldHVybiAwOwp9