我的代码可以编译并正常运行,但是当我使用check50时,它说没有满足任何“要求”。
:( reflect correctly filters 1x2 image
expected "0 0 255\n255 0...", not "3 0 0\n0 0 255..."
:( reflect correctly filters 1x3 image
expected "0 0 255\n0 255...", not "246 55 65\n0 2..."
:( reflect correctly filters image that is its own mirror image
expected "255 0 0\n255 0...", not "0 255 0\n255 0..."
:( reflect correctly filters 3x3 image
expected "70 80 90\n40 5...", not "110 130 140\n4..."
:( reflect correctly filters 4x4 image
expected "100 110 120\n7...", not "110 130 140\n1..."
代码:
void reflect(int height, int width, RGBTRIPLE image[height][width])
{
void swap (RGBTRIPLE*, RGBTRIPLE*);
for (int i = 0; i < height; i++)
{
int n = 1;
for (int j = 0; j < width / 2; j++)
{
swap (&image[i][j], &image[i][(width - j)]);
n++;
}
}
return;
}
void swap (RGBTRIPLE*a, RGBTRIPLE*b)
{
RGBTRIPLE tempArray;
RGBTRIPLE tempArray2;
tempArray = *a;
tempArray2 = *b;
*a = tempArray2;
*b = tempArray;
}
我浏览了许多其他帖子,但找不到任何解决方案。我可能找不到它,可能只是一些小细节。 任何帮助是极大的赞赏。谢谢!
答案 0 :(得分:1)
假设j == 0
,然后执行
swap (&image[i][j], &image[i][(width - j)]);
交换的元素的索引是什么?他们合法吗?
答案 1 :(得分:1)
这可能与交换功能调用一样简单。交换的第二个参数可能会更好
swap (&image[i][j], &image[i][width-1-j])
这对眼睛没有太大影响,但对Cs50检查程序可能有很大的影响。