bosnia Posted December 6, 2009 at 11:23 PM Report Share #298995 Posted December 6, 2009 at 11:23 PM boas noites gostava de saber como é que posso fazer um radom, com uma funçao de retorne dois valores X e Y isto numa matriz. em que x=[-1,0,1] e Y[-1,0,1] sugestões são bem vindas Link to comment Share on other sites More sharing options...
TheDark Posted December 7, 2009 at 12:23 AM Report Share #299005 Posted December 7, 2009 at 12:23 AM Podes passar os endereços dos arrays como parâmetro à função, e é só escreveres neles. Desaparecido. Link to comment Share on other sites More sharing options...
Knitter Posted December 7, 2009 at 01:57 AM Report Share #299018 Posted December 7, 2009 at 01:57 AM 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 www.sergiolopes.eu Link to comment Share on other sites More sharing options...
TheDark Posted December 7, 2009 at 10:29 AM Report Share #299037 Posted December 7, 2009 at 10:29 AM Eu não sugeri o uso de estruturas para evitar a criação de uma estrutura exclusivamente para utilização como tipo de retorno de uma função. Desaparecido. Link to comment Share on other sites More sharing options...
Knitter Posted December 7, 2009 at 11:04 AM Report Share #299044 Posted December 7, 2009 at 11:04 AM 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. www.sergiolopes.eu Link to comment Share on other sites More sharing options...
TheDark Posted December 7, 2009 at 12:31 PM Report Share #299053 Posted December 7, 2009 at 12:31 PM 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 More sharing options...
bosnia Posted December 7, 2009 at 11:25 PM Author Report Share #299165 Posted December 7, 2009 at 11:25 PM 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 More sharing options...
Knitter Posted December 7, 2009 at 11:35 PM Report Share #299167 Posted December 7, 2009 at 11:35 PM Exemplo de quê? www.sergiolopes.eu Link to comment Share on other sites More sharing options...
bosnia Posted December 10, 2009 at 10:36 PM Author Report Share #299734 Posted December 10, 2009 at 10:36 PM troca de valores por retorno do meu projecto lol Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now