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

Desenvolva um função que determine em que posição de uma tabela de inteiros se encontra o elemento que regista a maior subida em relação ao elemento anterior. Esta posição deve ser devolvida como resultado. A função recebe como argumentos um ponteiro para o início da tabela e o número de elementos que esta contém. A sua declaração é a seguinte:
int maior_subida(int *tab, int dim);

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

#define TAM 10

int maior_subida(int *tab, int dim){
int *p, *q;
p=tab;
q=tab+1;
int dif=0, aux2=0, valor=0,i=0;

for(p=tab; p<tab+dim && q <tab+dim; p++,q++){
    aux2=*p-*q;
    if(aux2<0)
    {
      aux2=-aux2;
    }
    printf("\n%d\t%d\t%d\t%d", i, *p, *q, aux2);
    if(aux2>dif){
      dif=aux2;
      valor=i;
    }
    i++;
}
return valor;
}
int main()
{
int tabela[]={1,3,7,42,22,10,9,7,7,33};
int posicao;
posicao=maior_subida(tabela, TAM);

printf("\nPosicao da maior subira: %d", posicao);

return 0;
}


Tags :