我遇到了与数组函数相关的作业问题。 我想在前三行和最后三行和列处制作一个带有“0”的边框元素。首先,我能够生成 256X256 大小的数字(array[256][256])。 然后,在我生成第一个数组之后,我需要执行一些条件。例如,
- 对于元素值 <127,从该值中减去 20。
- 对于元素值 >127,请在该值上添加 20。
- 如果运算后任意元素的值为<0,则为其赋值0。
- 如果运算后任意元素的值 >255,则将值 255 赋给 它。
问题是当我再次生成时,元素的“0”边框变得不同。我如何解决它像第一个数组一样,如元素的“0”边框?
下面是我的 C++ 代码。
#include<stdio.h>
#include<stdlib.h>
void main()
{
int inputimage[256][256], modifinputimage[256][256];
int i, j;
char ch;
for (i = 0; i < 256; i++)
{
if (i < 3)
{
for (j = 0; j < 256; j++)
{
if (j < 256)
{
printf("0\t");
}
}
}
else if (i >= 253)
{
for (j = 0; j < 256; j++)
{
if (j < 256)
{
printf("0\t");
}
}
}
else if (i >= 3 && i <253)
{
for (j = 0; j < 256; j++)
{
if ((i >= 3 && j < 3) || (i<253 && j >= 253))
{
printf("0\t");
}
if (j >= 3 && j < 253)
{
inputimage[i][j] = rand() % 256;
printf("%d\t", inputimage[i][j]);
}
}
}
}
printf("\nProceed to Contrast Adjustment ? (Press ENTER to continue)*** \n\n\n\n");
ch = getche();
for (i = 0; i < 256; i++)
{
if (i < 3)
{
for (j = 0; j < 256; j++)
{
if (j < 256)
{
printf("0\t");
}
}
}
else if (i >= 253)
{
for (j = 0; j < 256; j++)
{
if (j < 256)
{
printf("0\t");
}
}
}
else if (i >= 3 && i <253)
{
for (j = 0; j < 256; j++)
{
if ((i >= 3 && j < 3) || (i<253 && j >= 253))
{
printf("0\t");
}
if (j >= 3 && j < 253)
{
if (inputimage[i][j] < 127 && inputimage[i][j] >= 20)
{
modifinputimage[i][j] = inputimage[i][j] - 20;
printf("%1d\t", modifinputimage[i][j]);
}
if (inputimage[i][j] > 127 && inputimage[i][j] <= 235)
{
modifinputimage[i][j] = inputimage[i][j] + 20;
printf("%1d\t", modifinputimage[i][j]);
}
if (inputimage[i][j] <= 0)
{
modifinputimage[i][j] = inputimage[i][j];
printf("0\t");
}
if (inputimage[i][j] >= 255)
{
modifinputimage[i][j] = inputimage[i][j];
printf("255\t");
}
}
}
}
}
}
最佳答案
在您的修改中,您需要使用按行和列访问数组的方法,方法是在开头使用两个 for 循环来获取行和列的位置。例如
for (int i = 0; i < 256; i++){
for(int j = 0; j < 256; j++){
}
}
这样您就可以遍历所有行和列,并在上述条件中使用
if(i <= 3 || i >= 253){
//here u can use the nested loop to print 0's for both first and last 3 rows
printf("0\t");
}
// similarly for columns you can use this
else if(j <= 3 || j >=253){
printf("0\t");
}
else if(i > 3 && i < 253 && j > 3 && j < 253){
//here your modification rules
}
希望这有帮助
关于c - 数组函数(图像处理项目),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46589299/