Ir ao conteúdo
  • Cadastre-se

Batalha naval, posição aleatoria


yasminalves

Posts recomendados

Quero fazer com que a matriz randomize uma posicao e nela bote um x(por exemplo), mas somente uma posicao e o resto fique com '||'. Tentei usar o srand mas fica todas as posições aleatorias e não só uma.. Me deem uma luz, please! No caso a posicao tem que ser aleatoria sempre que iniciar o programa.

Vi esse site http://www.cprogressivo.net/2012/09/batalha-naval-em-c.html , mas não entendi a parte dos navios que ficam aleatorios..

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

 

int main()

{

int i,j,m,n,x1,x2 ;
    char matriz[5][5],matriz1[5][5],adivinha = '||',x = 'X',o = 'O';

    printf("Player 1:\n\n");
    for(i=1;i<5;i++)
    {
        for(j=1;j<5;j++)
        {
            matriz[j] = '||';
            printf("%c ",matriz[j]);
            fflush(stdin);
        }
        printf("\n");
    }

}

Link para o comentário
Compartilhar em outros sites

Olá yasminalves,

 

Você declara uma matriz 5 por 5 e acessa ela em um laço for. Quando o laço for começa assim:

 for(i=1;i<5;i++)

você está dizendo que a variável i vai variar de 1 a 4, pois assim que i < 5 deixar de ser verdadeiro, o laço acaba. Você provavelmente quis dizer assim:

 for(i=0;i<5;i++)

pois assim, o i vai variar de 0 a 4, ou seja, o laço vai rodar 5 iterações. Faça a mesma alteração para o outro laço for, fica assim:

for(j=0;j<5;j++)

Mais adiante, você acessa a matriz com um único índice, mas a sua matriz tem duas dimensões. Você acessa a matriz assim:

matriz[j] = '||';

mas você provavelmente quis dizer assim:

matriz[i][j] = '|';

afinal, para quê ter dois fors e usar o índice de apenas um, não é mesmo? Além disso, a matriz é de chars, então você só pode guardar um caractere em cada posição. O mesmo se aplica para a variável adivinha, que é do tipo char, então você deve inicializá-lo com '|', não '||'. Também é preciso atualizar a linha de código que imprime um elemento da matriz. Troque isso:

printf("%c ",matriz[j]);

por isso:

printf("%c ",matriz[i][j]);

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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!