-3

我的代码有问题。我有一个由用户调整大小的动态框架,他需要在这个框架中输入一个单元格的位置。我的问题是,我怎样才能确保这个职位是有效的,或者它还没有被录入?

这是代码:

for (i = 0; i < a; i++)
{
    while (x < 1 || y < 1)
    {
        printf("Entrez les coordonnees de la cellule %d: ", i+1); //The user gives the position of the cell
        scanf("%d %d", &x, &y);
    }

    tab[x - 1][y - 1] = 1; //We affect 1 to the cell given by the user
}
4

2 回答 2

1

您可以使用memset将整个tab矩阵设置为零,

这样当你想查看用户是否已经输入了这个坐标时,

你这样做if(tab[x-1][y-1] != 0),至于确保坐标有效,你可以

while(true){
   ....
   scanf("%d %d", &x, &y);
   if(x > 1 && x < X_MAX && y > 1 && y < Y_MAX){
     if(tab[x-1][y-1] != 0)
        printf("This coordinate was already typed.\n");
     else
        break;
    }
 }
 tab[x-1][y-1] = 1;

其中 X_MAX 和 Y_MAX 指定矩阵的最大边界(大小tab

于 2013-01-25T14:57:22.380 回答
0

假设大小tab分别为 N 和 M,您可以执行以下操作:

if (x < 0 || x>= N || y < 0 || y >= M) {
  printf("O-oh fell out of the field\n!");
  .. do stuff ...
}

至于是否已经输入了某个字段,您必须使用一种算法来记住哪些字段已经输入。或者创建一个带有布尔值的矩阵,指示是否已经输入了一个字段,或者使用一些哈希表来存储输入的坐标对。

于 2013-01-25T14:57:59.837 回答