Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

britoo

Função e ponteiro

Recommended Posts

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 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 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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.