#include <stdio.h>
#include <string.h>
#define MAX_CASAS 8
void gera_movimentos_bispo( int casas_bispo[ MAX_CASAS] [ MAX_CASAS] , int linha_bispo, int coluna_bispo) {
int i, j;
for ( i = linha_bispo + 1 , j = coluna_bispo + 1 ; i < MAX_CASAS && j < MAX_CASAS; i++, j++ ) {
casas_bispo[ i] [ j] = 1 ;
}
for ( i = linha_bispo - 1 , j = coluna_bispo - 1 ; i >= 0 && j >= 0 ; i--, j-- ) {
casas_bispo[ i] [ j] = 1 ;
}
for ( i = linha_bispo - 1 , j = coluna_bispo + 1 ; i >= 0 && j < MAX_CASAS; i--, j++ ) {
casas_bispo[ i] [ j] = 1 ;
}
for ( i = linha_bispo + 1 , j = coluna_bispo - 1 ; i < MAX_CASAS && j >= 0 ; i++, j-- ) {
casas_bispo[ i] [ j] = 1 ;
}
}
void mostra_movimentos_bispo( int casas_bispo[ MAX_CASAS] [ MAX_CASAS] , int linha_bispo, int coluna_bispo) {
int i, j;
for ( i = 0 ; i < MAX_CASAS; i++ ) {
for ( j = 0 ; j < MAX_CASAS; j++ ) {
if ( i == linha_bispo && j == coluna_bispo) {
} else {
printf ( " %c " , casas_bispo
[ i
] [ j
] == 1 ? 'x' : '-' ) ; }
}
}
}
int main( ) {
int linha, coluna;
printf ( "Movimento de um bispo no xadrez\n " ) ;; printf ( "Digite a linha que o bispo se encontra: " ) ; printf ( "Digite a coluna que o bispo se encontra: " ) ;
printf ( "\n Movimentos possiveis:\n \n " ) ; printf ( " 1 2 3 4 5 6 7 8 \n " ) ; printf ( " -------------------------\n " ) ;
int casas_bispo[ MAX_CASAS] [ MAX_CASAS] ;
memset ( casas_bispo
, 0 , sizeof ( casas_bispo
) ) ; linha--; //ajusta para array que começa em 0
coluna--; //ajusta para array que começa em 0
gera_movimentos_bispo( casas_bispo, linha, coluna) ;
mostra_movimentos_bispo( casas_bispo, linha, coluna) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2RlZmluZSBNQVhfQ0FTQVMgOAoKdm9pZCBnZXJhX21vdmltZW50b3NfYmlzcG8oaW50IGNhc2FzX2Jpc3BvW01BWF9DQVNBU11bTUFYX0NBU0FTXSwgaW50IGxpbmhhX2Jpc3BvLCBpbnQgY29sdW5hX2Jpc3BvKSB7CiAgICBpbnQgaSwgajsKICAgIGZvciAoaSA9IGxpbmhhX2Jpc3BvICsgMSwgaiA9IGNvbHVuYV9iaXNwbyArIDE7IGkgPCBNQVhfQ0FTQVMgJiYgaiA8IE1BWF9DQVNBUzsgaSsrLCBqKyspIHsKICAgICAgICBjYXNhc19iaXNwb1tpXVtqXSA9IDE7CiAgICB9CiAgICBmb3IgKGkgPSBsaW5oYV9iaXNwbyAtIDEsIGogPSBjb2x1bmFfYmlzcG8gLSAxOyBpID49IDAgJiYgaiA+PSAwOyBpLS0sIGotLSkgewogICAgICAgIGNhc2FzX2Jpc3BvW2ldW2pdID0gMTsKICAgIH0KICAgIGZvciAoaSA9IGxpbmhhX2Jpc3BvIC0gMSwgaiA9IGNvbHVuYV9iaXNwbyArIDE7IGkgPj0gMCAmJiBqIDwgTUFYX0NBU0FTOyBpLS0sIGorKykgewogICAgICAgIGNhc2FzX2Jpc3BvW2ldW2pdID0gMTsKICAgIH0KICAgIGZvciAoaSA9IGxpbmhhX2Jpc3BvICsgMSwgaiA9IGNvbHVuYV9iaXNwbyAtIDE7IGkgPCBNQVhfQ0FTQVMgJiYgaiA+PSAwOyBpKyssIGotLSkgewogICAgICAgIGNhc2FzX2Jpc3BvW2ldW2pdID0gMTsKICAgIH0KfQoKdm9pZCBtb3N0cmFfbW92aW1lbnRvc19iaXNwbyhpbnQgY2FzYXNfYmlzcG9bTUFYX0NBU0FTXVtNQVhfQ0FTQVNdLCBpbnQgbGluaGFfYmlzcG8sIGludCBjb2x1bmFfYmlzcG8pIHsKICAgIGludCBpLCBqOwogICAgZm9yIChpID0gMDsgaSA8IE1BWF9DQVNBUzsgaSsrKSB7CiAgICAgICAgcHJpbnRmKCIlM2QgfCIsIGkgKyAxKTsKICAgICAgICBmb3IgKGogPSAwOyBqIDwgTUFYX0NBU0FTOyBqKyspIHsKICAgICAgICAgICAgaWYoaSA9PSBsaW5oYV9iaXNwbyAmJiBqID09IGNvbHVuYV9iaXNwbykgewogICAgICAgICAgICAgICAgcHJpbnRmKCIgbyAiKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHByaW50ZigiICVjICIsIGNhc2FzX2Jpc3BvW2ldW2pdID09IDEgPyAneCcgOiAnLScpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHByaW50ZigiXG4iKTsKICAgIH0KfQoKaW50IG1haW4oKSB7CiAgICBpbnQgbGluaGEsIGNvbHVuYTsKCiAgICBwcmludGYoIk1vdmltZW50byBkZSB1bSBiaXNwbyBubyB4YWRyZXpcbiIpOzsKICAgIHByaW50ZigiRGlnaXRlIGEgbGluaGEgcXVlIG8gYmlzcG8gc2UgZW5jb250cmE6ICIpOwogICAgc2NhbmYoIiVkIiwgJmxpbmhhKTsKICAgIHByaW50ZigiRGlnaXRlIGEgY29sdW5hIHF1ZSBvIGJpc3BvIHNlIGVuY29udHJhOiAiKTsKICAgIHNjYW5mKCIlZCIsICZjb2x1bmEpOwoKICAgIHByaW50ZigiXG5Nb3ZpbWVudG9zIHBvc3NpdmVpczpcblxuIik7CiAgICBwcmludGYoIiAgICAgIDEgIDIgIDMgIDQgIDUgIDYgIDcgIDggIFxuIik7CiAgICBwcmludGYoIiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwoKICAgIGludCBjYXNhc19iaXNwb1tNQVhfQ0FTQVNdW01BWF9DQVNBU107CiAgICBtZW1zZXQoY2FzYXNfYmlzcG8sIDAsIHNpemVvZihjYXNhc19iaXNwbykpOwogICAgbGluaGEtLTsgLy9hanVzdGEgcGFyYSBhcnJheSBxdWUgY29tZcOnYSBlbSAwCiAgICBjb2x1bmEtLTsgLy9hanVzdGEgcGFyYSBhcnJheSBxdWUgY29tZcOnYSBlbSAwCgogICAgZ2VyYV9tb3ZpbWVudG9zX2Jpc3BvKGNhc2FzX2Jpc3BvLCBsaW5oYSwgY29sdW5hKTsKICAgIG1vc3RyYV9tb3ZpbWVudG9zX2Jpc3BvKGNhc2FzX2Jpc3BvLCBsaW5oYSwgY29sdW5hKTsKICAgIHJldHVybiAwOwp9Cg==