C++编程请大仙看看哪里错了啊 ,我想实现Z字形遍历数组

2025-01-04 07:58:13
推荐回答(2个)
回答1:

您好!


我用的Microsoft Visual C++ 6.0

本想帮你改改,但是编译报了很奇异的错误,

而且我大概看了一下你的代码觉得太繁复了,func_jpegcode里面for嵌套for嵌套while再嵌套do,看到这里我决定重新帮你写一个吧。


下面的代码简洁了许多,希望是lz想要的效果。


#include

using namespace std;

#define size 3

void func_jpegcode(int a[size][size])

{

    int i,j,k,way;

    int output[size*size];

    i=0;j=0;k=0;way=1;

    do

    {

        output[k]=a[i][j];

        ++k;

        if(i==size-1 && way==-1)

        {++j;way=-way;}

        else if(j==size-1 && way==1)

        {++i;way=-way;}

        else if(i==0 && way==1)

        {++j;way=-way;}

        else if(j==0 && way==-1)

        {++i;way=-way;}

        else

        {i-=way;j+=way;}

    }while(i+j<2*size-1);

    for(k=0;k

        cout<

    cout<

}

void main()

{

    int i,j,input[size][size];

    cout<<"Please input a "<

    for(i=0;i

        for(j=0;j

            cin>>input[i][j];

    func_jpegcode(input);

}

运行结果:

按Z字形读取了原矩阵~~


如果认为讲解不够清楚,请追问。如果满意,请采纳,谢谢!

祝:学习进步!

回答2:

哈哈,我找到了 int main()上一行少了 }

代码入下:
#include
using namespace std;
#define size 3
void func_jpegcode(int a[size][size])
{
int i,j,k=1;
int output[size*size]={0};
output[0]=a[0][0];
for(i=0;i {
for(j=1;j {
while(j%2!=0 && (i==0))
{
do{
output[k]=a[i][j];
i++;j--;k++;}
while(j!=0);
if(j==0)
{
if(i!=(size-1))
{
output[k]=a[i][j];i++;k++;}
/*else{output[k]=a[i][j];j++;k++;}*/
}
}
while(i%2==0 && j==0 )
{
do{output[k]=a[i][j];
i--;
j++;
k++;
}while(i!=0);
if(i==0)
{
if(j!=(size-1))
{
output[k]=a[i][j];
j++;
k++;
}
else
{
output[k]=a[i][j];
i++;
k++;
}//j++;
}
}
while( (i%2!=0 && j==(size-1)))
{
do{
output[k]=a[i][j];
j--;i++;k++;
}while(i!=(size-1));
if(i==(size-1))
{
output[k]=a[i][j];
j++;
k++;
}//j++;
}
while(j%2==0 && i==(size-1))
{
do{output[k]=a[i][j];
i--;
j++;
k++;
}
while(j!=(size-1));
if(j==(size-1))
{
output[k]=a[i][j];
i++;
k++;
}
}
for(k=0;k {
cout<<" "< }
}
}
}
int main()
{
int i,j;
int input[size][size]={0};
cout<<"enter the number:"< for(i=0;i for(j=0;j cin>>input[i][j];

cout<<" the input array is:"< for(i=0;i for(j=0;j {
cout< if(j==size-1)cout< }
func_jpegcode(input);
return 0;
}