Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: palacio29 en 28 Mayo 2019, 01:28 am



Título: (Consulta) - Minimo de un arreglo dinamico
Publicado por: palacio29 en 28 Mayo 2019, 01:28 am
Hola.
Tengo el siguiente codigo para que me de el minimo de un arreglo dinamico.
Mi consulta es, si hay alguna forma mas simple de hacerlo, ya que para usar esto, tendria que mandarle desde el main 2 veces el arreglo para que compare...


Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #define N 5
  5. int * minArrHeap(int *, int *);
  6.  
  7. int main()
  8. {
  9.    int * arrHeap, i;
  10.    arrHeap=malloc(N*sizeof(int));
  11.    srand(time(NULL));
  12.    for(i=0; i<N-1; i++)
  13.    {
  14.        arrHeap[i]=rand()%9+1;
  15.    }
  16.    arrHeap[i]=0;
  17.    printf("Arreglo al azar: \n");
  18.    for(i=0; i<N; i++)
  19.    {
  20.        printf("%d ", arrHeap[i]);
  21.    }
  22.    printf("\n\nMinimo: %d direccion:%p \n\n", *minArrHeap(arrHeap, arrHeap),  dirMinArrHeap(arrHeap, arrHeap));
  23.  
  24.    return 0;
  25. }
  26.  
  27. int * minArrHeap(int * ptr, int *min)
  28. {
  29.    if(*ptr==0)
  30.    return min;
  31.    if(*ptr<*min)
  32.    minArrHeap(ptr+1, ptr);
  33.    else
  34.    minArrHeap(ptr+1, min);
  35. }


Título: Re: (Consulta) - Minimo de un arreglo dinamico
Publicado por: K-YreX en 28 Mayo 2019, 06:42 am
Para recorrer un arreglo, ya sea estático o dinámico, se hace normalmente pasando el puntero al primer elemento del arreglo y el tamaño de este.
Código
  1. int* buscarMinimo(int *arreglo, const int size){
  2.    int *p_minimo = arreglo; // equivalente a int *p_minimo = &arreglo[0]
  3.    for(size_t i = 1; i < size; ++i)
  4.        if(arreglo[i] < *p_minimo)
  5.            p_minimo = (arreglo+i); // equivalente a p_minimo = &arreglo[i]
  6.    return p_minimo;
  7. }
De esta forma al devolver un puntero al elemento mínimo ya tenemos tanto el valor del elemento <*p_minimo> como su dirección de memoria <p_minimo>.