作业帮 > 综合 > 作业

c语言.下面程序各个变量是什么意思?

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/11 17:15:20
c语言.下面程序各个变量是什么意思?
假设以二维数组 G[m][n](m,n均小于20)表示一幅图像各像素的颜色,则G[i][j]表示区域中点(i,j)处的颜色,颜色值为 0 到 k 的整数.
设计函数void ChangeColor(int G[][20],int m,int n,int i0,int j0,int NewColor),该函数的功能是:将指定点(i0,j0)所在的同色邻接区域(所有与点(i0,j0)同色的上、下、左、右可连通的点组成同色邻接区域)的颜色置换为给定的颜色值NewColor.
void ChangeColor(int G[][20],int m,int n,int i0,int j0,int NewColor)
{
int top=0,tx,ty,oldcolor=G[i0][j0];
struct point{int x,y;} stack[400],temp;
if(G[i0][j0]==NewColor) return;
temp.x=i0;
temp.y=j0;
stack[0]=temp;
top++;
while(top)
{
top--;
tx=stack[top].x; ty=stack[top].y;
G[tx][ty]=NewColor;
if(tx-1>=0&&G[tx-1][ty]==oldcolor)
{ temp.x=tx-1; temp.y=ty; stack[top]=temp; top++;}
if(tx+1=0&&G[tx][ty-1]==oldcolor)
{ temp.x=tx; temp.y=ty-1; stack[top]=temp; top++;}
if(ty+1
c语言.下面程序各个变量是什么意思?
为了方便理解题目,就举个简单的例子:
二维数组 G[3][5] ={ {0,0,0,0,0},
{0,0,0,0,0},
{0,0,0,0,0}
}
这里有一个图像,当时要给该图像添加颜色,要通过坐标表示图像的位置,并给对应坐标位置添加颜色,要添加什么颜色,就根据坐标值判断,比如红色表示值为1,黄色表示值为2,0表示白色
例如 G[3][5] 表示图像的长为3,宽为5; 被图像某个坐标(1,2)位置添加颜色,要添加红色就这样表示G[1][2]=1;
如何理解同时邻接区域?
比如:G[3][5] = {
{1,1,2,2,0}.,
{1,2,2,0,1},
{2,1,1,0,0}
}
首先我要修改坐标(0,0)颜色表示为黄色会得到结果是
2,2,2,2,0
2,2,2,0,1
2,1,1,0,0
接着我要把坐标位置(0,2)位置修改为红色,得到的结果:
1,1,1,1,0
1,1,1,0,1
1,1,1,0,0
可以这样理解 同色邻接区域
算法实现是:
while(top)
{
top--;
tx=stack[top].x; ty=stack[top].y;
G[tx][ty]=NewColor;
if(tx-1>=0&&G[tx-1][ty]==oldcolor)
{ temp.x=tx-1; temp.y=ty; stack[top]=temp; top++;}
if(tx+1=0&&G[tx][ty-1]==oldcolor)
{ temp.x=tx; temp.y=ty-1; stack[top]=temp; top++;}
if(ty+1
再问: 太感谢了,能不能麻烦把各个语句再中文标注一下,函数里定义的top,tx,ty,还有struct point{int x,y;} ,stack[400],temp这几个是什么意思?拜托回答一下,给你加分。。。
再答: 这样的写法就比较好理解一点
struct point{
\x09\x09int x,y; // 结构体成员
\x09};
\x09struct point stack[400]; // 结构体数组
\x09struct point tmp; // 结构体对象
\x09tmp.x = 1;
\x09tmp.y = 2;
\x09stack[0] = tmp; // 给结构体赋值
\x09printf("表示坐标为 %d, %d \n",stack[0].x, stack[0].y);
再问: top是干嘛用的。。。
再答: while(top)
{
top--;
tx=stack[top].x; ty=stack[top].y;
G[tx][ty]=NewColor;
if(tx-1>=0&&G[tx-1][ty]==oldcolor)
{ temp.x=tx-1; temp.y=ty; stack[top]=temp; top++;}
if(tx+1=0&&G[tx][ty-1]==oldcolor)
{ temp.x=tx; temp.y=ty-1; stack[top]=temp; top++;}
if(ty+1