• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

temudo

Preencher matriz com um random

9 mensagens neste tópico

Boa tarde , tenho um problema , eu tenho de fazer uma matriz vazia , ou seja com espacos em que depois acrescente 200 peixes aleatoriamente pela matriz , e 25 tubaroes aleatoriamente tb pela matriz .. alguem me consegue ajudar? a matriz é de 85*40 .

void matriz()
{
    int k,j,a,maxrand;
    char peixeA;

    maxrand=200;
    a=0;

    for (k=0 ; k<45 ; k++)
    {
         printf("\n");
   
         for (j=0 ; j<80 ; j++)
         {
             printf(" ");
         }
       
    }  
  
  
    printf ("C");
    scanf ("%c",&peixeA);

    for (a++ ; a<200 ; a++)
    {   
        a =  rand()  % maxrand;
    }
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O que tu queres é que a função devolva uma matriz de 80x45 com 200 peixes e 25 tubarões em posições aleatórias?

Podes receber como argumento um array bidimensional com essa dimensão. Para isso altera a função para void matriz(char mat[][40]).

Depois, o que estás a fazer é a escrever espaços no ecrã. Tens que escrever os espaços é no array que recebes como argumento. Em vez dos printfs que tens no 1º conjunto de fors, elimina o 1º printf e substitui o 2º por mat[ j ][ i ] = ' '; de forma a encheres o array de espaços.

Finalmente, não percebi muito bem que ideia tiveste no último for. O for em si está bem, mas a linha de código que está lá dentro não.

O que tens que fazer é arranjar duas variáveis do tipo int para guardar o resultado de duas chamadas a rand(); uma para as linhas (%85) e outra para as colunas (%40). Depois, ver se a posição dada por essas coordenadas já contém um peixe. Se não tiver, colocas lá um peixe; se tiver, voltas a chamar rand().

Depois é repetir para os tubarões.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois , mas ele esta a dar erro logo no void que me deste .  linker error undifined reference to matriz()

ld return 1  exit status

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se me pudesses fazer so essa funcao mais ou menos para eu ver como é , é que depois ainda tenho de fazer com que os peixes se movam , e se se moverem X passos reproduzem-se ou comem-se ..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mostra lá o que é que alteraste no teu código para estar a dar esse erro.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já está a dar obrigado :P :P . mas nao sei é fazer agora para preencher com 200 peixes e 25 tubaroes agora e mete-los a sorte .

void ecran_jogo()
{   
    int i,j;

    for (i=0;i<80;i++)
    {
        for (j=0;j<45;j++)
        {
            printf("%d",matriz[i][j]);
        }
   }
}

void aleatorio()
{
    int i,j;
   
    for (i=0;i<80;i++)
    {
        for (j=0;j<45;j++)
        {
            matriz[i][j]=rand()%8;
        }
    }
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O que tens que fazer é arranjar duas variáveis do tipo int para guardar o resultado de duas chamadas a rand(); uma para as linhas (%85) e outra para as colunas (%40). Depois, ver se a posição dada por essas coordenadas já contém um peixe. Se não tiver, colocas lá um peixe; se tiver, voltas a chamar rand().

Depois é repetir para os tubarões.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

void inserir()
{
   int A,B;
   gotoxy(30,46);
   printf("C");
   scanf("%d",&A);
   inserir2(A,'A');
   gotoxy(30,47);
   printf("A");
   scanf("%d",&B);
   inserir2(B,'B');
}

void inserir2(int quantidade,char tipo)
{
   int i,x,y,done;
   for (i=0;i<quantidade;i++)
   {
       done=0;
       do
       {
           x=rand()%80;
           y=rand()%45;
           if (matriz[x][y]==0)
           {
               matriz[x][y]=tipo;
           }
           else
           {
               x=rand()%80;
               y=rand()%45;
           }
       }while(done=0);
   }

}

podes-me dizer o que esta mal sff? ou se nao for pedir muito , fazeres-me o codigo so pra inserir os 200 peixes e os 25 tubaroes .

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
        done=0;
        do
        {

            /* código que não altera `done` */

        }while(done=0)

Este código está "preso" num ciclo infinito.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora