我的代码有问题。我有一个由用户调整大小的动态帧,他需要在此帧中输入一个单元格的位置。我的问题是,如何确保此职位有效或尚未输入?
以下是代码:
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
}
答案 0 :(得分: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
矩阵的最大边界(大小)
答案 1 :(得分:0)
假设tab
的大小分别为N和M,您可以这样做:
if (x < 0 || x>= N || y < 0 || y >= M) {
printf("O-oh fell out of the field\n!");
.. do stuff ...
}
至于是否已输入字段,您必须设置算法以记住已输入的字段。使用布尔值创建另一个矩阵,指示是否已输入字段,或使用某个哈希表存储输入的坐标对。