#c #matrix #compare
#c #матрица #Сравнить
Вопрос:
я делаю программу, в которой есть матрица, которая инициализируется номерами строк и точек, где (где находится поле).
Итак, начальное состояние должно быть:
5:......
4:......
3:......
2:......
1:......
abcdef
Пространства сетки :
{"a5", "b5", "c5", "d5", "e5", "f5"},
{"a4", "b4", "c4", "d4", "e4", "f4"},
{"a3", "b3", "c3", "d3", "e3", "f3"},
{"a2", "b2", "c2", "d2", "e2", "f2"},
{"a1", "b1", "c1", "d1", "e1", "f1"}.
И если, например, я ввожу a5, результат должен быть:
5:X.....
4:......
3:......
2:......
1:......
abcdef
Мой текущий код таков:
int main ()
{
//definir tabuleiro
int linhas = 5;
int colunas = 6;
char tabuleiro [linhas][colunas];
char input [80];
// Definir as posições do tabuleiro
char coordenadacolaux;
char coordenadalinaux;
int coordenadalin ;
int coordenadacol ;
printf("%d is col, %d is lnn", coordenadacol, coordenadalin);
//Preencher o tabuleiro com '.'
memset(tabuleiro, '.', sizeof tabuleiro);
scanf("%s",input);
coordenadacolaux = input[0];
coordenadalinaux = input[1];
printf("%d is col, %d is lnn", coordenadacol, coordenadalin);
switch (coordenadacolaux)
{
case 'a':
coordenadacol = 0;
printf("In a n");
printf("a is %d n",coordenadacol);
break;
case 'b':
coordenadacol = 1;
printf("In bn");
printf("b is %d n",coordenadacol);
break;
case 'c':
coordenadacol = 2;
printf("In cn");
printf("c is %d n",coordenadacol);
break;
case 'd':
coordenadacol = 3;
printf("In dn");
printf("d is %d n",coordenadacol);
break;
case 'e':
coordenadacol = 4;
printf("In en");
printf("e is %d n",coordenadacol);
break;
default:
printf("Casa invalida.");
}
//cast = tranformar char em int
coordenadalin = (int) coordenadalinaux;
printf("%c is col, %c is lnn", coordenadacol, coordenadalin);
tabuleiro[coordenadacol][coordenadalin] = 'X';
for(int count=5, i=0; i<linhas; i , count--)
{
printf("%d:", count) ;
for(int j=0; j<colunas; j )
{
printf("%c", tabuleiro[i][j]);
}
printf("n");
}
printf(" abcdef");
}
Но я застрял и, похоже, не могу найти, с чего мне начать, позволяет ли то, что я сделал, продолжить то, что я хочу сделать?
Самый большой вопрос для меня: как мне сравнить входную строку с пространством массива, которое я хочу заменить?
С наилучшими пожеланиями, Алегор
Комментарии:
1.Вы делаете:
scanf("%s",input);
это неверно, потомуinput
что этоint
. Скомпилируйте с включенными предупреждениями (например-Wall
), и это будет помечено компилятором. Тогда вы фактически никогда ни для чего не используетеinput
. Я предполагаю, что вы хотитеinput
содержать ссылку на сетку (напримерa5
). Итак, вы хотите:char input[100];
2. После исправления вышеизложенного вам может потребоваться:
int colcur = input[0] - 'a'; int rowcur = input[1] - '0'; rowcur = linhas - rowcur; tabuleiro[rowcur][colcur] = 'X';
(т. е. Я не уверен, нужен ли отдельный массив символов для декодирования координат). Обратите внимание, что вы должны проверитьinput[0]
, чтобы быть в диапазоне'a'-'f'
, а этоinput[1]
в диапазоне:'1'-'5'
перед фактическим индексированием в массив.3. Я воспользовался некоторыми вашими советами и использовал переключатель для первой буквы, но каким-то образом значение, сохраненное в «регистре», исчезает, когда оно покидает функцию переключения.