Домашнее задание, поля для королевы в шахматах - PullRequest
0 голосов
/ 28 мая 2019

Завтра у меня школьное назначение, и я бы хотел помочь. Моя задача - «Создать программу, которая определяет, какие поля шахматной доски доступны для королевы из поля, где она расположена. Шахматная доска представлена ​​в виде матрицы 8x8. Положение ферзя вводится с клавиатуры в [буква] [число]. И результат сохраняется в строке. "

Я как бы застрял на том, как продолжать, я думаю, мне нужно 8 разных если. 2 для горизонтального, 2 для вертикального и 4 для диагонали, но я не знаю, как это сделать.

int main()
{

    int horizontal,vertical,i,j,current;
    char poz;

    printf("Enter the horizontal position of queen(A-H)\n");
    scanf("%s", &poz);

    if(poz=='A')
    {
        horizontal=1;
    }
    else if (poz=='B')
    {
        horizontal=2;
    }   
    else if (poz=='C')
    {
        horizontal=3;
    }
    else if (poz=='D')
    {
        horizontal=4;
    }   
    else if (poz=='E')
    {
        horizontal=5;
    }
    else if (poz=='F')
    {
        horizontal=6;
    }
    else if (poz=='G')
    {
        horizontal=7;
    }
    else if (poz=='H')
    {
        horizontal=8;
    }

    printf("Enter the vertical position of queen(1-8)\n");
    scanf("%d",&vertical);

    int n=8,m=8;

    int chess[8][8]={
    {1,2,3,4,5,6,7,8},
    {1,2,3,4,5,6,7,8},
    {1,2,3,4,5,6,7,8},
    {1,2,3,4,5,6,7,8},
    {1,2,3,4,5,6,7,8},
    {1,2,3,4,5,6,7,8},
    {1,2,3,4,5,6,7,8},
    {1,2,3,4,5,6,7,8},
    };

    printf("Queen pos is %c-%d",poz,vertical );


return 0;
}

1 Ответ

0 голосов
/ 29 мая 2019

Настоятельно рекомендуем изменить индексирование на 0 ... 7 для горизонтальных и вертикальных положений. Затем включите: (где 'r' - строка, а 'c' - столбец)

All positions in the column (0..7)/(c) where the queen is placed except (r)/(c) 

All positions in the row (r)/(0..7) where the queen is placed except (r)/(c)

Затем, начиная с размещения королевы (r) / (c)

all successive positions (r+1)/(c-1) until edge of board
all successive positions (r+1)/(c+1) until edge of board
all successive positions (r-1)/(c-1) until edge of board
all successive positions (r-1)/(c+1) until edge of board

Выше приведено несколько операторов for (), и их следует «относительно» легко реализовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...