79100018

Date: 2024-10-17 22:35:53
Score: 1.5
Natty:
Report link

Thanks for your replies everyone, I took on the advice of @Andreas Wenzel and re-read hint in the question. Implimented by making a nested loop just for the copy array and moved all the other code to another nested for loop. I also applied the cast to float and round functions within the loop and removed the section at the bottom of the loop where I reassign the values from "copy" to "image".

code now passes all the checks.

void blur(int height, int width, RGBTRIPLE image[height][width])
{

RGBTRIPLE copy[height][width];
int count = 0;

for (int i = 0; i < height; i++)
{
    for (int j = 0; j < width; j++)
    {
        copy[i][j] = image[i][j];
    }
}
for (int i = 0; i < height; i++)
{
    for (int j = 0; j < width; j++)
    {
        // check that the + 1's and - 1's won't take loop out of bounds
        // left bottom corner (/4)
        if (i + 1 == height && j - 1 < 0)
        {
            count = 4.0;
            // red
            image[i][j].rgbtRed =
                round((float) (copy[i][j].rgbtRed + copy[i - 1][j].rgbtRed +
                               copy[i][j + 1].rgbtRed + copy[i - 1][j + 1].rgbtRed) /
                      count);
            // green
            image[i][j].rgbtGreen =
                round((float) (copy[i][j].rgbtGreen + copy[i - 1][j].rgbtGreen +
                               copy[i][j + 1].rgbtGreen + copy[i - 1][j + 1].rgbtGreen) /
                      count);
            // blue
            image[i][j].rgbtBlue =
                round((float) (copy[i][j].rgbtBlue + copy[i - 1][j].rgbtBlue +
                               copy[i][j + 1].rgbtBlue + copy[i - 1][j + 1].rgbtBlue) /
                      count);
        }
        // right top corner
        else if (i - 1 < 0 && j + 1 == width)
        {
            count = 4.0;
            // red
            image[i][j].rgbtRed =
                round((float) (copy[i][j].rgbtRed + copy[i + 1][j].rgbtRed +
                               copy[i][j - 1].rgbtRed + copy[i + 1][j - 1].rgbtRed) /
                      count);
            // green
            image[i][j].rgbtGreen =
                round((float) (copy[i][j].rgbtGreen + copy[i + 1][j].rgbtGreen +
                               copy[i][j - 1].rgbtGreen + copy[i + 1][j - 1].rgbtGreen) /
                      count);
            // blue
            image[i][j].rgbtBlue =
                round((float) (copy[i][j].rgbtBlue + copy[i + 1][j].rgbtBlue +
                               copy[i][j - 1].rgbtBlue + copy[i + 1][j - 1].rgbtBlue) /
                      count);
        }
        // right bottom corner
        else if (i + 1 == height && j + 1 == width)
        {
            count = 4.0;
            // red
            image[i][j].rgbtRed =
                round((float) (copy[i][j].rgbtRed + copy[i - 1][j].rgbtRed +
                               copy[i][j - 1].rgbtRed + copy[i - 1][j - 1].rgbtRed) /
                      count);
            // green
            image[i][j].rgbtGreen =
                round((float) (copy[i][j].rgbtGreen + copy[i - 1][j].rgbtGreen +
                               copy[i][j - 1].rgbtGreen + copy[i - 1][j - 1].rgbtGreen) /
                      count);
            // blue
            image[i][j].rgbtBlue =
                round((float) (copy[i][j].rgbtBlue + copy[i - 1][j].rgbtBlue +
                               copy[i][j - 1].rgbtBlue + copy[i - 1][j - 1].rgbtBlue) /
                      count);
        }
        // left top corner
        else if (i - 1 < 0 && j - 1 < 0)
        {
            count = 4.0;
            // red
            image[i][j].rgbtRed =
                round((float) (copy[i][j].rgbtRed + copy[i + 1][j].rgbtRed +
                               copy[i][j + 1].rgbtRed + copy[i + 1][j + 1].rgbtRed) /
                      count);
            // green
            image[i][j].rgbtGreen =
                round((float) (copy[i][j].rgbtGreen + copy[i + 1][j].rgbtGreen +
                               copy[i][j + 1].rgbtGreen + copy[i + 1][j + 1].rgbtGreen) /
                      count);
            // blue
            image[i][j].rgbtBlue =
                round((float) (copy[i][j].rgbtBlue + copy[i + 1][j].rgbtBlue +
                               copy[i][j + 1].rgbtBlue + copy[i + 1][j + 1].rgbtBlue) /
                      count);
        }
        // left edge (/6)
        else if (j - 1 < 0)
        {
            count = 6.0;
            // red
            image[i][j].rgbtRed =
                round((float) (copy[i][j].rgbtRed + copy[i + 1][j].rgbtRed +
                               copy[i - 1][j].rgbtRed + copy[i][j + 1].rgbtRed +
                               copy[i + 1][j + 1].rgbtRed + copy[i - 1][j + 1].rgbtRed) /
                      count);
            // green
            image[i][j].rgbtGreen =
                round((float) (copy[i][j].rgbtGreen + copy[i + 1][j].rgbtGreen +
                               copy[i - 1][j].rgbtGreen + copy[i][j + 1].rgbtGreen +
                               copy[i + 1][j + 1].rgbtGreen + copy[i - 1][j + 1].rgbtGreen) /
                      count);
            // blue
            image[i][j].rgbtBlue =
                round((float) (copy[i][j].rgbtBlue + copy[i + 1][j].rgbtBlue +
                               copy[i - 1][j].rgbtBlue + copy[i][j + 1].rgbtBlue +
                               copy[i + 1][j + 1].rgbtBlue + copy[i - 1][j + 1].rgbtBlue) /
                      count);
        }
        // right edge
        else if (j + 1 == width)
        {
            count = 6.0;
            // red
            image[i][j].rgbtRed =
                round((float) (copy[i][j].rgbtRed + copy[i + 1][j].rgbtRed +
                               copy[i - 1][j].rgbtRed + copy[i][j - 1].rgbtRed +
                               copy[i + 1][j - 1].rgbtRed + copy[i - 1][j - 1].rgbtRed) /
                      count);
            // green
            image[i][j].rgbtGreen =
                round((float) (copy[i][j].rgbtGreen + copy[i + 1][j].rgbtGreen +
                               copy[i - 1][j].rgbtGreen + copy[i][j - 1].rgbtGreen +
                               copy[i + 1][j - 1].rgbtGreen + copy[i - 1][j - 1].rgbtGreen) /
                      count);
            // blue
            image[i][j].rgbtBlue =
                round((float) (copy[i][j].rgbtBlue + copy[i + 1][j].rgbtBlue +
                               copy[i - 1][j].rgbtBlue + copy[i][j - 1].rgbtBlue +
                               copy[i + 1][j - 1].rgbtBlue + copy[i - 1][j - 1].rgbtBlue) /
                      count);
        }
        // top edge
        else if (i - 1 < 0)
        {
            count = 6.0;
            // red
            image[i][j].rgbtRed =
                round((float) (copy[i][j].rgbtRed + copy[i + 1][j].rgbtRed +
                               copy[i][j + 1].rgbtRed + copy[i][j - 1].rgbtRed +
                               copy[i + 1][j + 1].rgbtRed + copy[i + 1][j - 1].rgbtRed) /
                      count);
            // green
            image[i][j].rgbtGreen =
                round((float) (copy[i][j].rgbtGreen + copy[i + 1][j].rgbtGreen +
                               copy[i][j + 1].rgbtGreen + copy[i][j - 1].rgbtGreen +
                               copy[i + 1][j + 1].rgbtGreen + copy[i + 1][j - 1].rgbtGreen) /
                      count);
            // blue
            image[i][j].rgbtBlue =
                round((float) (copy[i][j].rgbtBlue + copy[i + 1][j].rgbtBlue +
                               copy[i][j + 1].rgbtBlue + copy[i][j - 1].rgbtBlue +
                               copy[i + 1][j + 1].rgbtBlue + copy[i + 1][j - 1].rgbtBlue) /
                      count);
        }
        // bottom edge
        else if (i + 1 == height)
        {
            count = 6.0;
            // red
            image[i][j].rgbtRed =
                round((float) (copy[i][j].rgbtRed + copy[i - 1][j].rgbtRed +
                               copy[i][j + 1].rgbtRed + copy[i][j - 1].rgbtRed +
                               copy[i - 1][j + 1].rgbtRed + copy[i - 1][j - 1].rgbtRed) /
                      count);
            // green
            image[i][j].rgbtGreen =
                round((float) (copy[i][j].rgbtGreen + copy[i - 1][j].rgbtGreen +
                               copy[i][j + 1].rgbtGreen + copy[i][j - 1].rgbtGreen +
                               copy[i - 1][j + 1].rgbtGreen + copy[i - 1][j - 1].rgbtGreen) /
                      count);
            // blue
            image[i][j].rgbtBlue =
                round((float) (copy[i][j].rgbtBlue + copy[i - 1][j].rgbtBlue +
                               copy[i][j + 1].rgbtBlue + copy[i][j - 1].rgbtBlue +
                               copy[i - 1][j + 1].rgbtBlue + copy[i - 1][j - 1].rgbtBlue) /
                      count);
        }
        else
        {
            count = 9.0;
            // red
            image[i][j].rgbtRed = round(
                (float) (copy[i][j].rgbtRed + copy[i + 1][j].rgbtRed + copy[i - 1][j].rgbtRed +
                         copy[i][j + 1].rgbtRed + copy[i][j - 1].rgbtRed +
                         copy[i + 1][j + 1].rgbtRed + copy[i + 1][j - 1].rgbtRed +
                         copy[i - 1][j + 1].rgbtRed + copy[i - 1][j - 1].rgbtRed) /
                count);
            // green
            image[i][j].rgbtGreen =
                round((float) (copy[i][j].rgbtGreen + copy[i + 1][j].rgbtGreen +
                               copy[i - 1][j].rgbtGreen + copy[i][j + 1].rgbtGreen +
                               copy[i][j - 1].rgbtGreen + copy[i + 1][j + 1].rgbtGreen +
                               copy[i + 1][j - 1].rgbtGreen + copy[i - 1][j + 1].rgbtGreen +
                               copy[i - 1][j - 1].rgbtGreen) /
                      count);
            // blue
            image[i][j].rgbtBlue =
                round((float) (copy[i][j].rgbtBlue + copy[i + 1][j].rgbtBlue +
                               copy[i - 1][j].rgbtBlue + copy[i][j + 1].rgbtBlue +
                               copy[i][j - 1].rgbtBlue + copy[i + 1][j + 1].rgbtBlue +
                               copy[i + 1][j - 1].rgbtBlue + copy[i - 1][j + 1].rgbtBlue +
                               copy[i - 1][j - 1].rgbtBlue) /
                      count);
        }
    }
}
}
Reasons:
  • Blacklisted phrase (0.5): Thanks
  • Long answer (-1):
  • Has code block (-0.5):
  • User mentioned (1): @Andreas
  • Self-answer (0.5):
  • Low reputation (1):
Posted by: user27842128