So i'm doing filter and I noticed that its not rounding up correctly.

// Convert image to grayscale
void grayscale(int height, int width, RGBTRIPLE image[height][width])
    // Iterate over height
    for (int h = 0; h < height; h++)
        // Iterare over width
        for (int w = 0; w < width; w++)
            // Calculate the average of rgbt
            int k = round((image[h][w].rgbtBlue + image[h][w].rgbtGreen + image[h][w].rgbtRed)/3);

            // Update rgbt
            image[h][w].rgbtBlue = k;
            image[h][w].rgbtGreen = k;
            image[h][w].rgbtRed = k;

:) helpers.c exists

:) filter compiles

:) grayscale correctly filters single pixel with whole number average

:( grayscale correctly filters single pixel without whole number average expected "28 28 28\n", not "27 27 27\n"

:) grayscale leaves alone pixels that are already gray

:) grayscale correctly filters simple 3x3 image

:( grayscale correctly filters more complex 3x3 image expected "20 20 20\n50 5...", not "20 20 20\n50 5..."

:( grayscale correctly filters 4x4 image expected "20 20 20\n50 5...", not "20 20 20\n50 5..."

So I tried to run the file to se what was happening and

$ ./filter -g yard.bmp test.bmp

Could not open yard.bmp.


You are dividing an integer by an integer. This is integer division, and will produce an integer again, ignoring the fractional part.

You could make it a floating point division by making at least one operand floating point, like replacing 3 with 3.0.

  • do you have any idea why I can't run the program?
    – Chris
    Jan 20 '20 at 10:54
  • That part is trivial: You have no file named yard.bmp in the current directory. Maybe you have to specify its path? (try ./filter -g images/yard.bmp test.bmp)
    – Blauelf
    Jan 20 '20 at 10:56
  • That is odd because I have a file on pset4/filter called image with a bunch of images. and I used the code given from the edX website to try to run it. But the check comes out fine now. It says it works
    – Chris
    Jan 20 '20 at 10:59
  • 1
    filter does not automatically add the images, you have to specify the full path (like images/yard.bmp or ~/pset4/resize/images/yard.bmp)
    – Blauelf
    Jan 20 '20 at 11:01
  • okey so I needed to add images/yard.bmp and not just yard.bmp into the command line. Thank you
    – Chris
    Jan 20 '20 at 11:05

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .