alfacar90 0 Denunciar post Postado Agosto 14, 2010 estou tentando resolver o seguinte exercício: Leia um inteiro n, armazene n números lidos do teclado em um vetor, e imprima o retorno de uma função que calcule a soma dos elementos deste vetor. o meu código ficou assim. #include <stdio.h> #include <stdlib.h> int somavet(int*vetor, int n){ int i; int soma=0; for(i=0; i<n; i++) soma=soma+vetor[i]; return soma; } int main(){ char *vet; int n,i,s; printf("Informe um numero inteiro:"); scanf("%d", &n); vet=(int *)malloc(n*sizeof(int)); if(vet == NULL){ printf("\nMemoria insuficiente."); exit(1); } for (i=0;i<n;i++){ printf("\nInforme outro numero inteiro."); scanf("%d", &vet[i]); } printf("A soma dos n inteiros eh:%d\n",somavet(&vet,n)); free(vet); system("Pause"); return 0; } uso o dev-c++ e o código compila normalmente mas o retorno da função somavet dá um número muito grande. por exemplo em vez de retornar menor que 10, retorna um número muito mais alto. desde já obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Agosto 14, 2010 Tem certeza que a tipagem (quais os tipos dos parametros da função "soma" e quais os tipos dos parametros passados?) está certa? Eu acho que não. O compilador não mandou nenhum aviso? Compartilhar este post Link para o post Compartilhar em outros sites
alfacar90 0 Denunciar post Postado Agosto 14, 2010 reparei que declarei uma variavel que não usei mas esse não é o problema. crie *vet como char em vez de int, já corrigi isso mas mesmo assim a função somavet retorna um valor incorreto. e o compilador não avisa nada, compila e executa "normalmente". Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Agosto 14, 2010 Tem certeza que os tipos dos parametros passados para a função somavet estão corretos? O teu compilador deveria mandar um warning. Compartilhar este post Link para o post Compartilhar em outros sites
alfacar90 0 Denunciar post Postado Agosto 14, 2010 todas as variaveis e parametros são int. o codigo compilou sem nenhum aviso de erro ou warning e o debugger tambem não avisou nada. Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Agosto 14, 2010 Não, não são... somavet(&vet,n) n é do tipo int, o segundo parametro de somavet deve ser int, até aí está OK. vet é do tipo int*, &vet é do tipo int** mas o primeiro parametro de somavet deve ser do tipo int*. O erro está aí. É por essas e outras que eu digo, não utilizem IDE's. Aprendam a trabalhar com as ferramentas "na unha". Se você compilar esse código, no gcc, com as opções -Wall -Wextra ele com certeza te avisará que há algo errado. Compartilhar este post Link para o post Compartilhar em outros sites