Jump to content

retorno de valores em C


bosnia
 Share

Recommended Posts

Embora a sugestão de passares arrays funcione, eu sugeria talvez o uso de estruturas.

Isto porque evitam o uso de passagem de parâmetros por referência, o que pode causar alguns bugs quando não se tem cuidado. Ter uma função que muda os parâmetros que são passados pode não ser esperado.

Um exemplo de documentação sobre uso de estruturas, existem muitos mais, http://publications.gbdirect.co.uk/c_book/chapter6/structures.html

Link to comment
Share on other sites

Talvez acabe por ser mais uma opção pessoal, não considero modificação aleatória de parâmetros de entrada como uma coisa boa. Naturalmente é uma das características da linguagem e tem a sua utilidade, mas criar uma estrutura parece-me mais seguro do que ter uma função que muda os parâmetros que entram.

De uma ou outra forma, o problema fica resolvido.

Link to comment
Share on other sites

Aleatória, não. Tem que estar descrita na documentação da função 😄

Outra opção seria receber dois apontadores para apontadores e fazer a alocação da memória na função, mas como também costuma ser referida como má prática...

Pessoalmente, considero que a má prática é relativa à atenção com que o programador-criador está ao fazer e documentar as funções, e com que o programador-utilizador está ao estudá-las e utilizá-las.

Desaparecido.

Link to comment
Share on other sites

  for (l=0;l<numerolinhasficheiro;l++)    //Percorre todas as palavras no ficheiro
    {
        x = random(0, lc);
        y = random(0, lc);

        c=0; //matriz_ficheiro
        do
        {
            if (matriz[y][x]==matriz_ficheiro[l][c])  //verifica se a celula (caso esteja ocupada) possui uma letra igual.
                c++;

            if ((matriz[y][x]=='-') && (((x>=0)&&(x<lc)) && ((y>=0)&&(y<lc))))//Verifica se a célula está limpa, e que está dentro dos limites da matriz.
            {
                matriz[y][x]=matriz_ficheiro[l][c];
                c++
            }

            x_aux=random(-1, 1) + x;
            y_aux=random(-1, 1) + y;
            if ((matriz[y_aux][x_aux]=='-') && ((x_aux>=0)&&(x_aux<lc)) && ((y_aux>=0)&&(y_aux<lc)) || (matriz[y_aux][x_aux]==matriz_ficheiro[l][c])) //Verifica se a celula sorteada é válida
            {
                x=x_aux;
                y=y_aux;
            }
        }
        while ((c<16) && (matriz_ficheiro[l][c]!='\n')); //tamanho máximo da palavra ou fim da palavra, passa para a próxiima linha
    }

aqui esta um exemplo

Link to comment
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
 Share

×
×
  • Create New...

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.