Buscar

Exercício - Lógica de Programação

Vamos supor que várias pedras do jogo de xadrez estão no tabuleiro. Para facilitar a indicação das peças, vamos convencionar:

1– peões 2- Cavalos 3-Torres 4-Bispos

5-Reis 6-Rainhas 0-ausência de peças

O tabuleiro é o seguinte:

Construa um programa, em linguagem C, que:

a) Solicite ao usuário que informe qual peça deseja colocar em cada posição do tabuleiro

b) Mostre o tabuleiro informado pelo usuário na tela

c) Determine a qual a quantidade de cada tipo de peça no tabuleiro.

💡 2 Respostas

User badge image

Marcos Lacerda


enum PEDRAS { VAZIO, PEAO, CAVALO, TORRE, BISPO, REI, RAINHA };

int main () {
    int matriz[8][8] = {
        {6, 0, 0, 5, 0, 0, 1, 0},
        {0, 1, 0, 2, 0, 3, 0, 2},
        {0, 1, 1, 1, 0, 1, 0, 0},
        {0, 0, 2, 0, 3, 4, 4, 3},
        {1, 0, 1, 1, 0, 1, 0, 0},
        {0, 0, 1, 3, 0, 4, 0, 1},
        {1, 0, 0, 0, 2, 2, 2, 1},
        {1, 5, 0, 6, 0, 1, 1, 0}
    };
    
    
    int ocorrencia[7] = {0};
    int i, x;
    for ( i = 0; i < 8; i++ ) {
        for ( x = 0; x < 8; x++ ) {
        
            switch ( matriz[i][x] ) {
                case VAZIO:
                    ocorrencia[0]++;
                    
                    break;
                    
                case PEAO:
                    ocorrencia[1]++;
                    break;
                    
                case CAVALO:
                    ocorrencia[2]++;
                    break;
                    
                case TORRE:
                    ocorrencia[3]++;
                    break;
                    
                case BISPO:
                    ocorrencia[4]++;
                    break;
                    
                case REI:
                    ocorrencia[5]++;
                    break;
                    
                case RAINHA:
                    ocorrencia[6]++;
                    break;
                    
                default:
                    break;
            }
            
        }
    }
    printf("Casas vazias   = %d\n", ocorrencia[0]);
    printf("numero peoes   = %d\n", ocorrencia[1]);
    printf("numero cavalos = %d\n", ocorrencia[2]);
    printf("numero torres  = %d\n", ocorrencia[3]);
    printf("numero bispos  = %d\n", ocorrencia[4]);
    printf("numero reis    = %d\n", ocorrencia[5]);
    printf("numero rainhas = %d\n", ocorrencia[6]);
    getchar();
    return 0;


2
Dislike2
User badge image

Cláudio Souza

#include <stdio.h>

#include <stdlib.h>

#include <locale.h>

enum pecas { espacovazio, peao, cavalo, torre, bispo, rei, rainha }; // cria um enum para usar como contador de peças;

int main()

{

 setlocale(LC_ALL, "Portuguese"); // prepara para receber acentuação.

 float c;

 // cria a matriz tabuleiro 8x8 e posiciona as peças de acordo com o que o exercício mostrou.


 int tabuleiro[8][8] = {

 {1, 3, 0, 5, 4, 0, 2, 1},

 {1, 0, 1, 0, 0, 1, 0, 0},

 {0, 0, 0, 0, 1, 0, 6, 0},

 {1, 0, 0, 1, 1, 0, 0, 1},

 {0, 1, 0, 4, 0, 0, 1, 0},

 {0, 0, 3, 1, 0, 0, 1, 1},

 {1, 0, 6, 6, 0, 0, 1, 0},

 {1, 0, 5, 0, 1, 1, 0, 6}

 };

 // exibe o tabuleiro atual ao usuário.

 printf("Bem vindo ao tabuleiro de xadrez Uninter!\n");

 printf("\nO tabuleiro está montado da seguinte forma:\n\n");


 int linha, coluna;

 for (linha = 0; linha < 8; linha++)

 {

 for (coluna = 0; coluna < 8; coluna++)

 { 

 printf("%d ", tabuleiro[linha][coluna]);

 }

 printf("\n");

 }

 int contador[7] = { 0 }; // cria o vetor contador com as 7 opções de peças e insere nele o um valor para cada ocorrencia de peças.

 int i, x;

 for (i = 0; i < 8; i++) {

 for (x = 0; x < 8; x++) {

 switch (tabuleiro[i][x])

 {

 case espacovazio:

 contador[0]++;

 break;

 case peao:

 contador[1]++;

 break;

 case cavalo:

 contador[2]++;

 break;

 case torre:

 contador[3]++;

 break;

 case bispo:

 contador[4]++;

 break;

 case rei:

 contador[5]++;

 break;

 case rainha:

 contador[6]++;

 break;

 default:

 break;

 }

 }

 }

 printf("\n");

 printf("LEGENDA\n"); 

 printf("0 - Espaço vazio | 1 - Peão | 2 - Cavalo | 3 - Torre | 4 - Bispo | 5 - Rei | 6 - Rainha\n\n");

 printf("\nQuantidade de casas vazias e peças:\n\n");

 printf("Casas vazias\t= %d\n", contador[0]);

 printf("Peoes\t\t= %d\n", contador[1]);

 printf("Cavalos\t\t= %d\n", contador[2]);

 printf("Torres\t\t= %d\n", contador[3]);

 printf("Bispos\t\t= %d\n", contador[4]);

 printf("Reis\t\t= %d\n", contador[5]);

 printf("Rainhas\t\t= %d\n", contador[6]);

 printf("\n");

 system("pause");

 // começa a criar o tabuleiro personalizado do usuário

 // primeiro, zera todos os contadores!

 contador[0] = 0;

 contador[1] = 0;

 contador[2] = 0;

 contador[3] = 0;

 contador[4] = 0;

 contador[5] = 0;

 contador[6] = 0;

 // depois cria um novo tabuleiro personalizado do usuario, mas com as mesmas peças do tabuleiro anterior.

 int tabuleirousuario[8][8] = {

 {1, 3, 0, 5, 4, 0, 2, 1},

 {1, 0, 1, 0, 0, 1, 0, 0},

 {0, 0, 0, 0, 1, 0, 6, 0},

 {1, 0, 0, 1, 1, 0, 0, 1},

 {0, 1, 0, 4, 0, 0, 1, 0},

 {0, 0, 3, 1, 0, 0, 1, 1},

 {1, 0, 6, 6, 0, 0, 1, 0},

 {1, 0, 5, 0, 1, 1, 0, 6}

 };

 int linhausuario, colunausuario; // define as variaveis que o usuario vai preencher.

 int escolhausuario;

 int SimOuNao;

 system("cls");

 printf("Agora vamos começar a montar o seu tabuleiro!\n\n");

 // exibe o tabuleiro atual para o usuário.


 for (linha = 0; linha < 8; linha++)

 {

 for (coluna = 0; coluna < 8; coluna++)

 {

 printf("%d ", tabuleirousuario[linha][coluna]);

 }

 printf("\n"); 

 }

 // começa a inserir as peças do usuário.

 printf("\nDigite a posição da linha (1 a 8) que deseja alterar:\n");

 scanf_s("%d", &linhausuario);

 while ((linhausuario < 1) || (linhausuario > 8))

 {

 printf("O valor inserido é inválido! Digite um número de 1 a 8 para a posição na linha!\n");

 scanf_s("%d", &linhausuario);

 }

 printf("Agora, digite a posição da coluna (1 a 8) que deseja alterar:\n");

 scanf_s("%d", &colunausuario);

 while ((colunausuario < 1) || (colunausuario > 8))

 {

 printf("O valor inserido é inválido! Digite um número de 1 a 8 para a posição na coluna!\n");

 scanf_s("%d", &colunausuario);

 }

 printf("Digite a peça que deseja inserir na posição %d,%d:\n", linhausuario, colunausuario);

 printf("0 = espaço em branco\n");

 printf("1 = Peão\n");

 printf("2 = Cavalo\n");

 printf("3 = Torre\n");

 printf("4 = Bispo\n");

 printf("5 = Rei\n");

 printf("6 = Rainha\n");

 scanf_s("%d", &escolhausuario);

 while ((escolhausuario < 0) || (escolhausuario > 6))

 {

 printf("A peça desejada não existe! Insira um valor válido conforme o menu!\n");

 scanf_s("%d", &escolhausuario);

 }


 // por padrao, um tabuleiro de xadrez é exibido ao usuario como sendo 8 linhas por 8 colunas.

 // para ficar mais amigavel com o tabuleiro, adotei a mesma convenção

 // para resolver o problema da matriz no tabuleiro, fiz o que o usuario digita -1 unidade.

 // dessa forma, quando o usuario digita 2 para linha e 2 para coluna, na verdade vai inserir o valor na posical 1x1 da matriz do tabuleiro.

 tabuleirousuario[linhausuario - 1][colunausuario - 1] = escolhausuario;

 printf("Deseja alterar outra posição?\n");

 printf("(1) para SIM e (2) para NÃO\n");

 scanf_s("%d", &SimOuNao);

 while (SimOuNao ==1) // enquanto o usuario escolher que quer mudar mais peças, fica no laço.

 {

 printf("\nDigite a posição da linha (1 a 8) que deseja alterar:\n");

 scanf_s("%d", &linhausuario);

 while ((linhausuario < 1) || (linhausuario > 8)) //se o usuario escolher um valor errado para linha, fica no laço

 {

 printf("O valor inserido é inválido! Digite um número de 1 a 8 para a posição na linha!\n"); 

 scanf_s("%d", &linhausuario);

 }

 printf("Agora, digite a posição da coluna (1 a 8) que deseja alterar:\n");

 scanf_s("%d", &colunausuario);

 while ((colunausuario < 1) || (colunausuario > 8)) // se o usuario escolhe um valor errado para coluna, fica no laço.

 {

 printf("O valor inserido é inválido! Digite um número de 1 a 8 para a posição na coluna!\n");

 scanf_s("%d", &colunausuario);

 }

 printf("Digite a peça que deseja inserir na posição %d,%d:\n", linhausuario, colunausuario);

 printf("0 = espaço em branco\n");

 printf("1 = Peão\n");

 printf("2 = Cavalo\n");

 printf("3 = Torre\n");

 printf("4 = Bispo\n");

 printf("5 = Rei\n");

 printf("6 = Rainha\n");

 scanf_s("%d", &escolhausuario);

 while ((escolhausuario < 0) || (escolhausuario > 6)) // se o usuario escolhe uma peça que nao existe, fica no laço.

 {

 printf("A peça desejada não existe! Insira um valor válido conforme o menu!\n");

 scanf_s("%d", &escolhausuario);

 }

 tabuleirousuario[linhausuario - 1][colunausuario - 1] = escolhausuario;

 printf("Deseja alterar outra posição?\n");

 printf("(1) para SIM e (2) para NÃO\n");

 scanf_s("%d", &SimOuNao);


 }

 // com tudo preenchido, exibe o tabuleiro que o usuário escolheu.

 system("cls");

 printf("Tabuleiro de Xadrez da Uninter\n\n");

 printf("Este é o seu tabuleiro!\n\n");

 int linha1, coluna1;

 int contadorusuario[7];

 for (linha1 = 0; linha1 < 8; linha1++)

 {

 for (coluna1 = 0; coluna1 < 8; coluna1++)

 {

 printf("%d ", tabuleirousuario[linha1][coluna1]);

 }

 printf("\n");

 }

 int j, l;

 for (j = 0; j < 8; j++) { 

 for (l = 0; l < 8; l++)

 {

 switch (tabuleirousuario[j][l])

 {

 case espacovazio:

 contador[0]++;

 break;

 case peao:

 contador[1]++;

 break;

 case cavalo:

 contador[2]++;

 break;

 case torre:

 contador[3]++;

 break;

 case bispo:

 contador[4]++;

 break;

 case rei:

 contador[5]++;

 break;

 case rainha:

 contador[6]++;

 break;

 default:

 break;

 }

 }

 }

 // exibe o contador final, com todas as alterações feitas pelo usuario.

 printf("\n");

 printf("LEGENDA\n");

 printf("0 - Espaço vazio | 1 - Peão | 2 - Cavalo | 3 - Torre | 4 - Bispo | 5 - Rei | 6 - Rainha\n\n");

 printf("\nQuantidade de casas vazias e peças:\n");

 printf("Casas vazias\t= %d\n", contador[0]);

 printf("Peoes\t\t= %d\n", contador[1]);

 printf("Cavalos\t\t= %d\n", contador[2]);

 printf("Torres\t\t= %d\n", contador[3]);

 printf("Bispos\t\t= %d\n", contador[4]); 

 printf("Reis\t\t= %d\n", contador[5]);

 printf("Rainhas\t\t= %d\n", contador[6]);

 printf("\n");

 int escolhafimprograma;

 printf("Digite (1) para encerrar o programa ou (2) para exibir um tabuleiro inicial do jogo!\n"); //exibe uma opção extra ao usuario.

 scanf_s("%d", &escolhafimprograma);

 while ((escolhafimprograma < 1) || (escolhafimprograma > 2)) // ebquanto o usuario nao escolhe uma opção do menu, fica no laço abaixo.

 {

 printf("\nOpção inválida! Digite (1) para encerrar ou (2) para exibir um tabuleiro inicial do jogo!\n");

 scanf_s("%d", &escolhafimprograma);

 }

 if (escolhafimprograma == 1) // se o usuário quer encerrar o programa, encerra.

 {

 system("cls");

 printf("XEQUE-MATE!");

 return 0;

 }

 if (escolhafimprograma == 2) //ou então exibe o tabuleiro inicial de um jogo de xadrez para o usuário.

 {

 contador[0] = 0;

 contador[1] = 0;

 contador[2] = 0;

 contador[3] = 0;

 contador[4] = 0;

 contador[5] = 0;

 contador[6] = 0;

 system("cls");

 printf("POSIÇÃO INICIAL DAS PEÇAS DE UM TABULEIRO DE XADREZ\n\n");

 int tabuleirodefault[8][8] = { // cria um tabuleiro padrao do jogo.

 {3, 2, 4, 6, 5, 4, 2, 3},

 {1, 1, 1, 1, 1, 1, 1, 1},

 {0, 0, 0, 0, 0, 0, 0, 0},

 {0, 0, 0, 0, 0, 0, 0, 0},

 {0, 0, 0, 0, 0, 0, 0, 0},

 {0, 0, 0, 0, 0, 0, 0, 0},

 {1, 1, 1, 1, 1, 1, 1, 1},

 {3, 2, 4, 6, 5, 4, 2, 3}

 };

 int linhadefault, colunadefault;

 for (linhadefault = 0; linhadefault < 8; linhadefault++)

 {

 for (colunadefault = 0; colunadefault < 8; colunadefault++)

 {

 printf("%d ", tabuleirodefault[linhadefault][colunadefault]);

 }

 printf("\n");

 } 

 int m, n;

 for (m = 0; m < 8; m++) {

 for (n = 0; n < 8; n++)

 {

 switch (tabuleirodefault[m][n])

 {

 case espacovazio:

 contador[0]++;

 break;

 case peao:

 contador[1]++;

 break;

 case cavalo:

 contador[2]++;

 break;

 case torre:

 contador[3]++;

 break;

 case bispo:

 contador[4]++;

 break;

 case rei:

 contador[5]++;

 break;

 case rainha:

 contador[6]++;

 break;

 default:

 break;

 }

 }

 }

 // exibe o contador com as peças iniciais do jogo.

 printf("\n");

 printf("LEGENDA\n");

 printf("0 - Espaço vazio | 1 - Peão | 2 - Cavalo | 3 - Torre | 4 - Bispo | 5 - Rei | 6 - Rainha\n\n");

 printf("\nQuantidade de casas vazias e peças:\n");

 printf("Casas vazias\t= %d\n", contador[0]);

 printf("Peoes\t\t= %d\n", contador[1]);

 printf("Cavalos\t\t= %d\n", contador[2]); 

 printf("Torres\t\t= %d\n", contador[3]);

 printf("Bispos\t\t= %d\n", contador[4]);

 printf("Reis\t\t= %d\n", contador[5]);

 printf("Rainhas\t\t= %d\n", contador[6]);

 printf("\n");

 system("pause");

 }

 system("cls");

 printf("XEQUE-MATE!\n");

 return 0;

}

1
Dislike0

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

✏️ Responder

SetasNegritoItálicoSublinhadoTachadoCitaçãoCódigoLista numeradaLista com marcadoresSubscritoSobrescritoDiminuir recuoAumentar recuoCor da fonteCor de fundoAlinhamentoLimparInserir linkImagemFórmula

Para escrever sua resposta aqui, entre ou crie uma conta

User badge image

Outros materiais

Perguntas relacionadas

Materiais relacionados