打印更新的阵列板

时间:2014-07-22 11:13:23

标签: c arrays if-statement multidimensional-array

这是我最初的董事会。我遇到的第一个问题是,当用户输入电路板尺寸时,它总是打印相同的10×10而不是用户要求的尺寸。其次,我有一个函数,它应该检查每个单元格并将匹配条件的单元格转换为空格或破折号。我在打印电路板时遇到问题。谁能告诉我哪里出错了?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 10

int createBoard();

int main(int argc, char *argv[])
{
    createBoard();
}

int createBoard()
{
    char myArray[MAX][MAX];
    char letter[3] = {'a', 'b', 'c'};
    int i,j,row,col;

    printf("Please enter your grid size: ");
    scanf("%d %d", &row, &col);
    if(row < 10 && col < 10){
        for(i=0; i < MAX; i++){
            for(j=0; j < MAX; j++){
                myArray[i][j] = letter[rand()%3];
            }
        }
        for(i=0; i < MAX; i++){
            for(j=0; j < MAX; j++){
                printf("%c ", myArray[i][j]);
            }
            printf("\n");
        }
   }
   else{
        printf("Board is too big\n");
        createBoard();
   }
   int var;
   var = move(myArray);
}

//to check each cell
int newBoard(char myArray[MAX][MAX])
{
    int i,j;
    for(i=0; i < MAX; i++){
        for(j=0; j< MAX; j++){
            if(myArray[i][j] == 'c' && myArray[i+1][j] == 'c'){
                myArray[i][j] == ' ';
                myArray[i+1][j] == ' ';
            }
            else{
                //no update
            }

        }
    }
}

2 个答案:

答案 0 :(得分:0)

对于第一个问题,请更改for循环

for(i=0; i < MAX; i++){
    for(j=0; j < MAX; j++){
     ...
   }
}

使用rowcol变量

for(i=0; i < row; i++){
    for(j=0; j < col; j++){
    ...
    }
}

答案 1 :(得分:0)

第一个问题解决: 因为在你的for循环中你经历了MAX 将其更改为:

for(i=0; i < row; i++){
    for(j=0; j < col; j++){
        myArray[i][j] = letter[rand()%3];
    }
}

第二个问题解决方案:  检查功能的第一个问题是你应该通过引用而不是通过值传递我的数组   通过添加&#39;&amp;&#39;来改变它标志  第二个问题是你必须说if(myArray [i] [j] ==&#39; c&#39;&amp;&amp; myArray [i + 1] [j] ==&#39; c&#39;)  当我等于MAX-1(最后一步)并且myArray [i + 1] [j]不存在时,这会导致问题!!  因为数组的大小是[MAX] [MAX],当i = MAX-1时,你的大小是[MAX + 1] [MAX]