Guião laboratorial n.º 1 – exercício 6

“Desenvolva uma função que receba um tabela de inteiros positivos e o seu tamanho e verifique quantos dos elementos da tabela são pares e quantos são ímpares. Deve ainda calcular qual o maior valor presente na tabela e a posição onde ele se encontra.
Por exemplo, se o conteúdo da tabela for:
1 3 7 5 2 10 9 7 7 1
Existem 2 números pares, 8 números ímpares. O maior número é o 10 e está na posição 5.

A função recebe como argumentos um ponteiro para o início da tabela, o número de elementos que esta contém, um ponteiro para o inteiro onde deve colocar o n.º de elementos ímpares, um ponteiro para o inteiro onde deve colocar o n.º de elementos pares, um ponteiro para o inteiro onde deve colocar o maior valor armazenado na tabela e um ponteiro para o inteiro onde deve colocar a posição onde o maior valor se encontra. A sua declaração é a seguinte:
void f(int *t, int tam, int *np, int *ni, int *maior, int *pos);


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define TAM 10

void f(int *t, int tam, int *np, int *ni, int *maior, int *pos){
int *p;
p=t;
int conta_par=0, conta_impar=0, m= p[0],posicao=0, aux=0;
for(p=t; p<t+tam; p++){
  if(*p%2==0){
    conta_par++;
  }else{
    conta_impar++;
  }
  if(*p>m){
    m=*p;
  }
}
for(p=t; p<t+tam; p++){
    aux++;
    if(*p==m){
      printf("%d %d", aux, posicao);
      posicao=aux;
    }
}

*np=conta_par;
*ni=conta_impar;
*maior=m;
*pos=posicao;
}


int main()
{
int tabela[]={1,3,7,5,22,10,9,7,7,11};
int n_pares=0, n_impares=0, maior=0, posicao=0;
f(tabela, TAM, &n_pares, &n_impares, &maior, &posicao);


printf("\nTotal de numeros pares: %d", n_pares);
printf("\nTotal de numeros impares: %d", n_impares);
printf("\nO maior numero: %d", maior);
printf("\nPosicao do maior numero: %d", posicao);


return 0;
}

Tags :