检查相邻阵列的简单方法

时间:2014-07-13 11:43:02

标签: c arrays loops syntax multidimensional-array

我正在编写一个程序,需要检查一行中的两个单元格是否相同。我有我的5乘5 2d阵列板充满了可以是x,y,z的字符。关于如何做到这一点的任何建议。截至目前,我正在考虑创建条件并将其置于循环中

if(arr[0][0] == 'z' && arr[0][1] == 'z'{
    //replace with an a
}

如果相邻单元格相同,我希望它更改为a

3 个答案:

答案 0 :(得分:1)

循环中的条件应该类似于

arr[i][j] == arr[i][j+1]

小心不要超出阵列的范围。

答案 1 :(得分:1)

这是一个例子

void compare( char array[5][5])
{
    int x,y;
    for(x=0;x<4;  x++)
    {
        for(y=0;y<4;  y++)
        { 
            if (array[x][[y] == array[x][y+1] )
            {
                //do something
            }
            if (array[x][[y] == array[x+1][y] )
            {
                //do something
            }
        }
    }
}
抱歉格式不好。我正在使用我的诺基亚c3-00手机,格式化并不简单

答案 2 :(得分:0)

我建议您创建,以便在创建电路板数据时不与相邻单元格重叠 像这样:

#include <stdio.h>
#include <string.h>
#include <time.h>

#define ROW 5
#define COL 5

char Board[ROW][COL];

void createBoard(void);

int main(void){
    srand(time(NULL));
    createBoard();
    return 0;
}

void swap(char *a, char *b){
    char tmp = *a;
    *a=*b;
    *b=tmp;
}

void createBoard(void){
    char letter[3] = {'x', 'y', 'z'};
    int i, j, k;
    for(i=0; i < ROW; ++i){
        for(j=0,k=3; j < COL; ++j){
            if(j!=0){
                k = 2;
                swap(strchr(letter, Board[i][j-1]), &letter[2]);
            }
            Board[i][j] = letter[rand()%k];
        }
    }
    for(i=0; i < ROW; i++){
        for(j=0; j < COL; j++){
            printf("%c ", Board[i][j]);
        }
        printf("\n");
    }
}