Ir ao conteúdo

Posts recomendados

Postado

Preciso criar um campo minado em C que precisa ter algumas entradas, sendo elas.

N de vezes que o jogador irá jogar

Tamanho do tabuleiro (será sempre uma matriz quadrada)

 

Obs: Recebendo o tamanho do tabuleiro preciso definir seus elementos sendo, x para espaço vazio e b para bomba. Nessa parte do desenvolvimento tenho um erro e não consigo resolvê-lo. Consigo imprimir os elementos da primeira linha e a segunda sai exatamente igual a primeira.

 

<CODE>

 

#include <stdio.h>
#include <stdlib.h>

/*********************************************************************************************************************************
                                        TRABALHO PRÁTICO 1 - CAMPO MINADO

 - NA PRIMEIRA LINHA INDICAR A QUANTIDADE DE JOGOS -> LIMITADO DE 1 À 10 JOGOS.
 - NA SEGUNDA LINHA INDICAR O TAMANHO DA MATRIZ -> REPRESENTAÇÃO DO TABULEIRO.
 - NAS LINHAS SEGUINTES DETERMINAR OS ELEMENTOS DA MATRIZ -> B = BOMBA E X = ESPAÇO VAZIO.
 - NA LINDA SEGUINTE INDICAR O NÉMERO DE MOVIMENTOS A SEREM REALIZADOS.
 - EM SEGUIDA ENTRADA DOS VALORES DAS POSIÇÕES X E Y.
*********************************************************************************************************************************/


// PROTÓTIPO DAS FUNÇOES
int tabuleiro_cm ();

int main()
{

    int partidas;
    int tam_tabuleiro;
    int num_movimentos;


    printf ("Defina o numero de partidas:");
    scanf ("%d", &partidas);

    if (partidas == 0 || partidas > 10)
    {
        printf ("Defina partidas entre 0 e 1:");
        scanf ("%d", &partidas);
    }

     printf ("Defina o Tamanho do Tabuleiro:");
     scanf ("%d", &tam_tabuleiro);

    if (tam_tabuleiro < 2 || tam_tabuleiro > 100)
    {
        printf ("Defina o tamanho do tabuleiro entre 2 e 100:");
        scanf ("%d", &tam_tabuleiro);
    }

    tabuleiro_cm (tam_tabuleiro);
}


int tabuleiro_cm(tam_tabuleiro)
{
    char matriz_tabuleiro[tam_tabuleiro][tam_tabuleiro];

for (char linha = 0; linha < tam_tabuleiro; linha++)
{
    for (char coluna = 0; coluna < tam_tabuleiro; coluna++)
    {
       scanf ("%c", &matriz_tabuleiro[linha][coluna]);
       printf("%c", matriz_tabuleiro[linha][coluna]);

    }
}
}

 

 

TP01_CampoMinado.pdf

v3.txt

Postado

Sobre seu programa:

  • Use constantes enquanto está desenvolvendo. Qual o propósito de ficar lendo a cada teste?
  • Use um arquivo de entrada para a matriz. É muito chato ficar digitando a cada teste, como você já deve ter concluído. E é muito mais simples digitar a matriz no próprio editor de texto.
  • Teste o retorno de scanf(). SEMPRE.
  • Use mais funções, por exemplo a óbvia função para mostrar  a matriz na tela.
  • Não use comentários com acentos. Nada acrescenta na prática e pode não sair em qualquer computador
  • declare as variáveis de controle dos loop DENTRO dos loops. É assim desde os '80. 
  • Se tam_tabuleiro é constante defina como tal ou use um #define. Deixe o compilador trabalhar para você.
  • passe o tabuleiro como parâmetro. Para isso existem argumentos. E assim pode usar a função de um modo muito melhor, por exemplo testando vários tabuleiros

Escreva em torno dos dados.

 

Talvez concorde que é  mais simples:
 

#define TAM_TABULEIRO 5

#include <stdio.h>
#include <stdlib.h>

int tabuleiro_cm (const int,char[][TAM_TABULEIRO]);

int main()
{
    char        matriz_tabuleiro[][TAM_TABULEIRO] =
    {
        { 'B', 'X', 'X', 'X', 'X' },
        { 'X', 'X', 'X', 'X', 'X' },
        { 'X', 'X', 'X', 'X', 'X' },
        { 'X', 'X', 'X', 'X', 'X' },
        { 'X', 'X', 'X', 'X', 'B' }
    };

   const int   mov[][2] =
    {
            { 0,0 },
            { 1,3 },
            { 1,2 },
            { 0,3 }
    };
    const int   num_movimentos = sizeof(mov) / (2*sizeof(int));

    printf( "Tabuleiro %dx%d\n\n", TAM_TABULEIRO,TAM_TABULEIRO);
    
    tabuleiro_cm (TAM_TABULEIRO, matriz_tabuleiro);

    printf( "total de %d movimentos:\n\n", num_movimentos);
    for( int i = 0; i<num_movimentos; i+=1 )
    {
        printf("#%d: x:%d y:%d\n", 1+i, mov[i][0], mov[i][1] );
    }
    return 0;
}


int tabuleiro_cm (const int N,char M[TAM_TABULEIRO][TAM_TABULEIRO])
{
    for (int l = 0; l < N; l+=1)
    {
        for (int c = 0; c < N; c+=1) printf("%c ", M[l][c]);
        printf("\n");
    }
    printf("\n");
    return 0;
}

 

Coisas como 

 

    const int   mov[][2] =
    {
            { 0,0 },
            { 1,3 }            
    };
    const int   num_movimentos = sizeof(mov) / (2*sizeof(int));

 

ajudam muito na hora de testar, porque você pode digitar alguns testes direto no programa, só incluindo no lugar. Sem ter que mudar outros lugares

 

Exemplo:

 

     const int   mov[][2] =
    {
            { 0,0 },
            { 1,3 },
            { 1,2 },
            { 0,3 }
    };
    };
    const int   num_movimentos = sizeof(mov) / (2*sizeof(int));

 

Mesmo caso da matriz:

 

    char        matriz_tabuleiro[][TAM_TABULEIRO] =
    {
        { 'B', 'X', 'X', 'X', 'X' },
        { 'X', 'X', 'X', 'X', 'X' },
        { 'X', 'X', 'X', 'X', 'X' },
        { 'X', 'X', 'X', 'X', 'X' },
        { 'X', 'X', 'X', 'X', 'B' }
    };

 

que depois você coloca em um arquivo, não antes.

 

O exemplo acima mostra

 

B X X X X
X X X X X
X X X X X
X X X X X 
X X X X B

total de 4 movimentos:

#1: x:0 y:0
#2: x:1 y:3
#3: x:1 y:2
#4: x:0 y:3

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!