polska Posted May 1, 2012 at 10:36 PM Report #452553 Posted May 1, 2012 at 10:36 PM Boas pessoal, estou com uma pequena dúvida num programa.. Eu tenho uma função que recebe um vector como parâmetro: void verifica(*v); Eu tentei passar o vector da seguinte maneira: verifica(&vector); vector(*vector); Estas duas maneiras diziam que o tipo int * e int*[] eram incompatíveis (ou algo do género), depois tentei assim verifica(vector); assim já não deu erro, mas depois na função eu ao usar tipo if(*v==u); dava erro no v, dizia: operand of * must be a pointer ... Não estou a perceber qual a maneira correcta de enviar o vector para a função ;x Corrige um sábio e ele mais sábio ficará. Corrige um ignorante e um inimigo ganharás.
pmg Posted May 1, 2012 at 10:39 PM Report #452555 Posted May 1, 2012 at 10:39 PM Resposta com um exemplo (se tivesses fornecido codigo a resposta estaria mais de acordo com a tua duvida ...) #include <stdio.h> int sumarray(int *array, size_t elems) { int sum = 0; while (elems--) sum += *array++; return sum; } int main(void) { int array1[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; int array2[] = {10, 20, 30, 40}; printf("soma do array 1 = %d\n", sumarray(array1, sizeof array1 / sizeof *array1)); printf("soma do array 2 = %d\n", sumarray(array2, sizeof array2 / sizeof *array2)); return 0; } 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!
polska Posted May 1, 2012 at 10:43 PM Author Report #452556 Posted May 1, 2012 at 10:43 PM bool verifica_posicoes(int *v){ int conta=0; for(int i=0;i<4;i++){ if(*v[i]) } } int main(){ char chave[4],tentativa[4]; int contaPosIguais=0,contaPosDifere; int pos[4]; scanf("%s",chave); scanf("%s",tentativa); for(int i=0;i<4;i++){ if(chave[i]==tentativa[i]){ contaPosIguais++; } for(int j=i+1;j<4;j++){ if(chave[i]==tentativa[j]){ verifica_posicoes(pos); } } } return 0; } Esta ai, dá erro no *v da função, como eu disse anteriormente, estou a passar o vector pos. Corrige um sábio e ele mais sábio ficará. Corrige um ignorante e um inimigo ganharás.
pmg Posted May 1, 2012 at 10:47 PM Report #452558 Posted May 1, 2012 at 10:47 PM bool verifica_posicoes(int *v){ int conta=0; for(int i=0;i<4;i++){ if(*v[i]) } } Nao uses o * na condicao; mete-a apenas com if(v[i]) Tirando isso a funcao ta bem ... excepto que so funciona para arrays de exactamente 4 elementos. Se alguma vez quiseres usa-la com arrays de 3 elementos nao podes. 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!
polska Posted May 1, 2012 at 10:56 PM Author Report #452562 Posted May 1, 2012 at 10:56 PM Nao uses o * na condicao; mete-a apenas com if(v[i]) Tirando isso a funcao ta bem ... excepto que so funciona para arrays de exactamente 4 elementos. Se alguma vez quiseres usa-la com arrays de 3 elementos nao podes. Neste caso o vector terá exactamente 4 posições, mas porque é que se for 3 já não posso? Corrige um sábio e ele mais sábio ficará. Corrige um ignorante e um inimigo ganharás.
pmg Posted May 1, 2012 at 10:58 PM Report #452563 Posted May 1, 2012 at 10:58 PM Neste caso o vector terá exactamente 4 posições, mas porque é que se for 3 já não posso? Porque na funcao estarias a aceder ao quarto elemento do array, que nao existe!!! int array[3]; array[3] = 0; /* BANG!! array[3] nao existe */ 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!
polska Posted May 1, 2012 at 11:03 PM Author Report #452567 Posted May 1, 2012 at 11:03 PM Porque na funcao estarias a aceder ao quarto elemento do array, que nao existe!!! int array[3]; array[3] = 0; /* BANG!! array[3] nao existe */ Oh, tipo mas se mudar no main para int pos[3] já posso usar a função com o array de 3 elementos 😄 ... Pensei que mesmo que mudasse não podia usar a função, estava a achar estranho xD ! Obrigado pmg 😁 Corrige um sábio e ele mais sábio ficará. Corrige um ignorante e um inimigo ganharás.
pmg Posted May 1, 2012 at 11:13 PM Report #452569 Posted May 1, 2012 at 11:13 PM Oh, tipo mas se mudar no main para int pos[3] já posso usar a função com o array de 3 elementos 😄 ... Pensei que mesmo que mudasse não podia usar a função, estava a achar estranho xD ! Obrigado pmg 😁 Nao, nao. Tens que mudar o 4 na funcao. Se mudares no main para um array de 3 elementos, a funcao continua a "querer" aceder ao quarto elemento. A melhor maneira é tirar o 4 da funcao e passar a responsabilidade do tamanho a funcao que chama a verifica_posicoes. Da forma que eu escrevi a funcao sumarray(). 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!
polska Posted May 2, 2012 at 02:52 PM Author Report #452719 Posted May 2, 2012 at 02:52 PM Nao, nao. Tens que mudar o 4 na funcao. Se mudares no main para um array de 3 elementos, a função continua a "querer" aceder ao quarto elemento. A melhor maneira é tirar o 4 da função e passar a responsabilidade do tamanho a função que chama a verifica_posicoes. Da forma que eu escrevi a funcao sumarray(). ah! sim, continua a aceder ao 4 porque na função o 4 nunca muda, esta certo, deve enviar o tamanho do vector também para a função e em vez de 4 coloco esse mesmo tamanho, já entendi o que me querias dizer.. Neste caso o exercício trata-se do jogo mastemind, por isso é que eu não necessitei de mandar para la o tamanho do vector, porque a tentativa e a chave do jogo é sempre constituído por 4 elementos.. Corrige um sábio e ele mais sábio ficará. Corrige um ignorante e um inimigo ganharás.
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