(Consulta) - Minimo de un arreglo dinamico

Iniciado por palacio29, 28 Mayo 2019, 01:28 AM

0 Miembros y 1 Visitante están viendo este tema.

palacio29

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


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 5
int * minArrHeap(int *, int *);

int main()
{
    int * arrHeap, i;
    arrHeap=malloc(N*sizeof(int));
    srand(time(NULL));
    for(i=0; i<N-1; i++)
    {
        arrHeap[i]=rand()%9+1;
    }
    arrHeap[i]=0;
    printf("Arreglo al azar: \n");
    for(i=0; i<N; i++)
    {
        printf("%d ", arrHeap[i]);
    }
    printf("\n\nMinimo: %d direccion:%p \n\n", *minArrHeap(arrHeap, arrHeap),  dirMinArrHeap(arrHeap, arrHeap));

    return 0;
}

int * minArrHeap(int * ptr, int *min)
{
    if(*ptr==0)
    return min;
    if(*ptr<*min)
    minArrHeap(ptr+1, ptr);
    else
    minArrHeap(ptr+1, min);
}

K-YreX

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.

int* buscarMinimo(int *arreglo, const int size){
    int *p_minimo = arreglo; // equivalente a int *p_minimo = &arreglo[0]
    for(size_t i = 1; i < size; ++i)
        if(arreglo[i] < *p_minimo)
            p_minimo = (arreglo+i); // equivalente a p_minimo = &arreglo[i]
    return p_minimo;
}

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>.
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;