交换不同长度的2d数组中的元素c

时间:2014-05-10 14:00:53

标签: c arrays

我需要交换一个可变长度的2d数组但由于某种原因,当调用交换元素的函数时,它返回false。交换代码对我来说似乎合乎逻辑它不起作用。这是代码片段。

bool swap(int tile)

{
    for(j = 0; j < d; j++)


        {
          if (game[i][j]==tile && game[i][j + 1]==0)//swap tile left of  zero

                    {

                        a = game[i][j +1];
                        b =  game[i][j] ; 
                        int temp = a;   
                        a = b;
                        b = temp;
                        game[i][j] = a;
                        game[i][j+1] = b;


                    }          
        }        

} 

这里有什么问题,我该如何纠正。原因与解决指南同样重要。非常感谢!

2 个答案:

答案 0 :(得分:1)

你正在进行双重交换,实际上根本没有交换。

由于您已经知道game[i][j+1]的值为零,因此非常简单。你所要做的就是

game[i][j+1] = game[i][j];
game[i][j] = 0;

答案 1 :(得分:0)

你没有任何回报

您应该执行以下代码

bool swap(int tile)
{
    bool worked = false;
    for(j = 0; j < d; j++)
        {
          if (game[i][j]==tile && game[i][j + 1]==0)//swap tile left of  zero
                   {
                        int temp = game[i][j +1];   
                        game[i][j+1] = game[i][j];
                        game[i][j] = temp;

                        worked = true;
                 }          
        }  
    return worked;      
}