【问题标题】:Printing updated array board打印更新的阵列板
【发布时间】:2014-07-22 11:13:23
【问题描述】:

这是我最初的董事会。我遇到的第一个问题是,当用户输入电路板尺寸时,它总是打印相同的 10 x 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
            }

        }
    }
}

【问题讨论】:

  • 你有一个调试器。请使用它。
  • 停止使用 SO 来编写代码。并且不要一遍又一遍地重新发布相同的代码。
  • 您甚至还没有学习 C 的基本概念。阅读教程。如果您在阅读时遇到问题,请务必在此处提出那个问题。您的代码有太多缺陷,无法在此处正确回答您的问题。也许去编程板,在那里你可以讨论如何编写你的软件。

标签: c arrays if-statement multidimensional-array


【解决方案1】:

对于第一个问题,改变你的 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++){
    ...
    }
}

【讨论】:

  • 干杯,伙计们!第一个问题解决了,关于打印更新板的任何想法?
【解决方案2】:

第一个问题解决: 因为在你的 for 循环中你会通过 MAX 将其更改为:

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

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

【讨论】:

  • 对不起,我对第二个问题还是有点困惑。所以我必须将 && 更改为 &?然后将 [i+1][j] 更改为 [MAX+1][MAX]?
猜你喜欢
  • 1970-01-01
  • 2014-04-21
  • 2019-05-08
  • 2012-10-01
  • 1970-01-01
  • 2017-05-21
  • 2013-03-08
  • 2020-10-23
相关资源
最近更新 更多