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

Sign in to follow this  
temudo

Preencher matriz com um random

Recommended Posts

temudo

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;
    }
}

Share this post


Link to post
Share on other sites
TheDark

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.


Desaparecido.

Share this post


Link to post
Share on other sites
temudo

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

ld return 1  exit status

Share this post


Link to post
Share on other sites
temudo

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 ..

Share this post


Link to post
Share on other sites
TheDark

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


Desaparecido.

Share this post


Link to post
Share on other sites
temudo

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;
        }
    }
}

Share this post


Link to post
Share on other sites
TheDark

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.


Desaparecido.

Share this post


Link to post
Share on other sites
temudo

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 .

Share this post


Link to post
Share on other sites
pmg
        done=0;
        do
        {

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

        }while(done=0)

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


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.