Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: laurinhabig0 en 20 Noviembre 2017, 18:38 PM

Título: Ayuda uso de punteros.
Publicado por: laurinhabig0 en 20 Noviembre 2017, 18:38 PM
Necesito ayuda con este fragmento de código:

#include <stdio.h>

int *maximo(int vec[],int num){
    int *pmax = &vec[0];
    for (int i=0;i<num-1;i++){
        if(vec[i]<vec[i+1]){
            pmax++;
        }
    }
   
    return pmax;
}

int main() {
    int N;
       
    printf("Introduza o número de elementos do vector:\n");
    scanf("%d",&N);
       
    while(N<1){
    printf("ERRO. Introduza un número de elementos válido:\n");
    scanf("%d",&N);
    }
   
    int v[N];
   
    for(int i=0;i<N;i++){
        printf("Introduza un enteiro para a posición v[%d]:\n",i);
        scanf("%d",&v[i]);
    }
   
    printf("O máximo é %d\n",*maximo(v,N));
}


El ejercicio consiste en calcular el máximo de un vector de enteros con una función que se encuentre fuera del main y que devuelva un puntero a la posición del máximo. El código compila sin problemas pero al ejecutarlo falla en el cálculo del máximo, a ver si me echáis una mano y veis lo que está mal :( muchas gracias de antemano!!
Título: Re: Ayuda uso de punteros.
Publicado por: calantra en 20 Noviembre 2017, 20:53 PM
int *maximo(int vec[],int num){
   int *pmax = &vec[0];
   int valormi=vec[0];
   for (int i=1;i<num;i++){
       if(vec[i]>valormi){
           valormi=vec[i];
           pmax=&vec[i];
       }
   }

   return pmax;
}


De nada.
P.D. valormi representa el valor Máximo Inicial. Se actualiza cada vez que encuentra un numero mayor, en ese momento guarda la dirección del puntero del vector actual en pmax. En tu código avanzaba pmax siempre que el siguiente número al actual controlado fuera menor, incluso si los anteriores fueran mayores, apuntando erróneamente al número incorrecto.
Título: Re: Ayuda uso de punteros.
Publicado por: laurinhabig0 en 21 Noviembre 2017, 14:29 PM
Muchísimas gracias!!!!!