britoo 0 Denunciar post Postado Novembro 11, 2014 Fala galera blz, vim aqui pq to desesperado e quase quebrando meu pc kkkk. Tenho um exercicio pra fazer, mas não sei o que acontece de errado será que poderiam me ajudar? EX:Construir um vetor A com 20 elementos do tipo inteiro. Determine eapresente a quantidade e a soma dos elementos pares e dos elementosímpares existentes em A. Use ponteiros para manipular os vetores.Sugestão: o ponteiro *p deve apontar para A ( p=&A[0] ). A deve seracessado como *(p+i). O que consegui fazer foi isso: #include<stdio.h>int soma(int *A[20]);int main(){ int A[20],i,res; puts("Digite 20 numeros:\n");] for(i=0;i<20;++i){ scanf("%d", A); res=(&A); printf("%d",res); }int soma(int *A[20]){ int i,*p; for(i=0;i<20;++i){ if(*A%2==0){ p=&A; return p;}} for(i=0;i<20;++i){ else(){ p=&A; return p;}}} Tem alguns que ta dando, não sei se é pq to usando uma IDE online(não posso baixar nada aqui no trabalho) Valew pessoal Compartilhar este post Link para o post Compartilhar em outros sites
LazaroBinda 3 Denunciar post Postado Novembro 12, 2014 Veja se te serve: #include<stdio.h> enum tpSoma { PAR = 0, IMPAR = 1 }; int soma(int *p, int count, enum tpSoma tp); int main(){ int A[20],i; puts("Digite 20 numeros:\n"); for(i=0;i<20;++i){ scanf("%d", &A[i]); } printf("Soma dos Pares: %d\n", soma(A, 20, PAR)); printf("Soma dos Impares: %d", soma(A, 20, IMPAR)); return 0; } int soma(int *p, int count, enum tpSoma tp){ int i, sum = 0; for(i=0;i<count;++i) { if (*(p + i) % 2 == (int)tp) sum += *(p + i); } return sum; } Compartilhar este post Link para o post Compartilhar em outros sites
guidjos 65 Denunciar post Postado Novembro 14, 2014 Fala galera beleza, vim aqui pq to desesperado e quase quebrando meu pc kkkk. Tenho um exercicio pra fazer, mas não sei o que acontece de errado será que poderiam me ajudar? EX:Construir um vetor A com 20 elementos do tipo inteiro. Determine e apresente a quantidade e a soma dos elementos pares e dos elementos ímpares existentes em A. Use ponteiros para manipular os vetores. Sugestão: o ponteiro *p deve apontar para A ( p=&A[0] ). A deve ser acessado como *(p+i). O enunciado do exercício está extremamente confuso. C é uma linguagem anti-intuitiva, e esse tipo de descrição só atrapalha. "Inteiro" não é um tipo, e sim um conjunto de tipos, portanto vamos assumir que o autor tenha pretendido dizer "int". Neste caso, a declaração de A é int A[20];. A frase "*p aponta para A", em C, é escrita *p = &A;, e não p = &A[0];, como diz o enunciado. Portanto aí existe erro de português ou erro de C. Se *p realmente aponta para A, p deve ter tipo "ponteiro para ponteiro para vetor de 20 int" (int (**p)[20];), "vetor de ponteiros para vetores de 20 int" (int (*p[n])[20];) ou "vetor de vetores de vetores de 20 int" (int p[x][y][20];). O autor provavelmente quis dizer que p aponta para A[0], ou seja, p = A; e, consequentemente, *p == *A, *p == A[0], *p == *(A + 0), etc, são verdadeiras. Neste caso, p pode ser declarado int *p;. Parece pedantismo, mas é fundamental usar as definições com cuidado. Senão você vai sempre depender de sorte pra entregar seus trabalhos. Abs Compartilhar este post Link para o post Compartilhar em outros sites