gpt4 book ai didi

在 C 中计算 0's and 1' 的二维数组的高度

转载 作者:行者123 更新时间:2023-11-30 15:08:14 26 4
gpt4 key购买 nike

我正在尝试编写一个程序来查找“图像”的像素高度。“图像”是一个由 0 和 1 组成的二维数组,0 是空白,1 是黑色像素。

嵌套循环从左到右遍历数组,首先遍历 x 轴,然后遍历 y 轴。

我正在尝试找到 y 值的最高值。计划是将所有大于 0 的 y 值存储在一个新数组中,并找到最高的 y 值。但是,由于某种原因,下面的代码仅将 y=5 存储到数组中。

我认为顺序可能是错误的?

#include <stdio.h>

#define MAX_X 20
#define MAX_Y 20

void printImage(int image[MAX_X][MAX_Y]);
int countBlackPixels(int image[MAX_X][MAX_Y]);
int findYPixel(int image[MAX_X][MAX_Y]);

//function prototypes

void processImage(int image[MAX_X][MAX_Y]) {

int yPixel;
yPixel = findYPixel(image);
printf("Height: %d\n", yPixel);

}

//Height
//Calculates height of image

int findYPixel(int image[MAX_X][MAX_Y]) {
int x, y, yPixel, i;
int new_array[MAX_Y-1];
x = 0;
yPixel=-1;
while (x < MAX_X) {
y = MAX_Y-1;
while (y > 0) {
if (image[x][y] == 1) {
yPixel=y;
}
y = y - 1;
}
x = x + 1;
}
return yPixel;
}

有人看出我哪里出错了吗?

最佳答案

此循环将数组中的所有值分配给当前的 y值:

for(i=0; i < MAX_Y; i++) {
new_array[i] = y; //store all y values in a new array
}

这就是为什么最后只有一个值的原因。

您甚至不需要存储 y 的数组值(value)观。一旦您在 2D 数组中找到第一个非零条目,您就可以返回当前的 y值作为答案。 (这假设您从图像顶部开始搜索,然后向下搜索。)

即使从下往上循环,仍然不需要数组。只需更新yPixel = y;每次遇到非零像素时。循环结束时,yPixel将是最高非空白像素的 y 值。您可能应该从 yPixel = -1 开始或其他东西,可以帮助您识别整个图像为空白时的情况。

关于在 C 中计算 0's and 1' 的二维数组的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37499919/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com