Не понимаю как реализовать

шахматная доска представим символьной матрицей размера 8x8. заданные натуральные числа n и m, которые определяют номера вертикали и горизонтали местонахождение ферзя. Соответствующий элемент матрицы нужно заменить символом Ф. Поля, находящихся под угрозой ферзя заменить символом *, другие - символом 0. Отпечатать полученную матрицу.


Ответы (2 шт):

Автор решения: Harry

Как ходит ферзь? По горизонтали (под боем все клетки, у которых номер строки совпадает с m), по вертикали (под боем все клетки, у которых номер столбца совпадает с n), по диагонали (разность координаты по вертикали и по горизонтали такая же, как у ферзя) и по второй диагонали (сумма координат по вертикали и по горизонтали такая же, как у ферзя).

Все. Просто обходите все клетки доски, проверяйте выполнение любого из условий, и помечайте клетки соответствующим образом.

→ Ссылка
Автор решения: n1tr0xs

Схему описал @Harry, поэтому я предоставлю лишь код.

#include <iostream>

int main(){

    int n, m; //n - строка, m - столбец
    std::cin >> n >> m; --n; --m;
    char** field = new char*[8];
    for(int i=0; i<8; ++i, std::cout << '\n'){
        field[i] = new char[8];
        for(int j=0; j<8; std::cout << field[i][j++] << ' ')
            if(i==n && j==m) field[i][j] = 'Ф';
            else if((i==n) || (j==m) || (i+j == m+n) || (i-j == n-m)) field[i][j] = '*';
            else field[i][j] = '0';
    }
    return 0;
}

UPD:

#include <iostream>

int main(){
    int n, m; //n - строка, m - столбец
    std::cin >> n >> m; --n; --m;
    char** field = new char*[8];
    for(int i=0; i<8; ++i){
        field[i] = new char[8];
        for(int j=0; j<8;){
            if(i==n && j==m) field[i][j] = 'Ф';
            else if((i==n) || (j==m) || (i+j == m+n) || (i-j == n-m)) field[i][j] = '*';
            else field[i][j] = '0';
            std::cout << field[i][j++] << ' ';
        }
        std::cout << '\n';
    }
    return 0;
}
→ Ссылка