fork download
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define MAX_CASAS 8
  4.  
  5. void gera_movimentos_bispo(int casas_bispo[MAX_CASAS][MAX_CASAS], int linha_bispo, int coluna_bispo) {
  6. int i, j;
  7. for (i = linha_bispo + 1, j = coluna_bispo + 1; i < MAX_CASAS && j < MAX_CASAS; i++, j++) {
  8. casas_bispo[i][j] = 1;
  9. }
  10. for (i = linha_bispo - 1, j = coluna_bispo - 1; i >= 0 && j >= 0; i--, j--) {
  11. casas_bispo[i][j] = 1;
  12. }
  13. for (i = linha_bispo - 1, j = coluna_bispo + 1; i >= 0 && j < MAX_CASAS; i--, j++) {
  14. casas_bispo[i][j] = 1;
  15. }
  16. for (i = linha_bispo + 1, j = coluna_bispo - 1; i < MAX_CASAS && j >= 0; i++, j--) {
  17. casas_bispo[i][j] = 1;
  18. }
  19. }
  20.  
  21. void mostra_movimentos_bispo(int casas_bispo[MAX_CASAS][MAX_CASAS], int linha_bispo, int coluna_bispo) {
  22. int i, j;
  23. for (i = 0; i < MAX_CASAS; i++) {
  24. printf("%3d |", i + 1);
  25. for (j = 0; j < MAX_CASAS; j++) {
  26. if(i == linha_bispo && j == coluna_bispo) {
  27. printf(" o ");
  28. } else {
  29. printf(" %c ", casas_bispo[i][j] == 1 ? 'x' : '-');
  30. }
  31. }
  32. printf("\n");
  33. }
  34. }
  35.  
  36. int main() {
  37. int linha, coluna;
  38.  
  39. printf("Movimento de um bispo no xadrez\n");;
  40. printf("Digite a linha que o bispo se encontra: ");
  41. scanf("%d", &linha);
  42. printf("Digite a coluna que o bispo se encontra: ");
  43. scanf("%d", &coluna);
  44.  
  45. printf("\nMovimentos possiveis:\n\n");
  46. printf(" 1 2 3 4 5 6 7 8 \n");
  47. printf(" -------------------------\n");
  48.  
  49. int casas_bispo[MAX_CASAS][MAX_CASAS];
  50. memset(casas_bispo, 0, sizeof(casas_bispo));
  51. linha--; //ajusta para array que começa em 0
  52. coluna--; //ajusta para array que começa em 0
  53.  
  54. gera_movimentos_bispo(casas_bispo, linha, coluna);
  55. mostra_movimentos_bispo(casas_bispo, linha, coluna);
  56. return 0;
  57. }
  58.  
Success #stdin #stdout 0s 5448KB
stdin
4
4
stdout
Movimento de um bispo no xadrez
Digite a linha que o bispo se encontra: Digite a coluna que o bispo se encontra: 
Movimentos possiveis:

      1  2  3  4  5  6  7  8  
   -------------------------
  1 | x  -  -  -  -  -  x  - 
  2 | -  x  -  -  -  x  -  - 
  3 | -  -  x  -  x  -  -  - 
  4 | -  -  -  o  -  -  -  - 
  5 | -  -  x  -  x  -  -  - 
  6 | -  x  -  -  -  x  -  - 
  7 | x  -  -  -  -  -  x  - 
  8 | -  -  -  -  -  -  -  x