ragazzi, ho ancora problemi con i puntatori, perchè ancora non mi funziona?


codice:
#include <stdio.h>
#include <malloc.h>
#include <conio.h>
int DIM=1;


void OrdinaBC(int **vet,int DIM)
    {
        int i,flag=1,n=DIM-1;int appoggio;
        do
        {
            flag=0;
            for(i=0;i<n;i++)
                if(*vet[i]>*vet[i+1])
                {
                    appoggio= *vet[i];
                    *vet[i]=*vet[i+1];
                    *vet[i+1]=appoggio;
                    flag++;
                }
            n--;
        }while(flag>0);
    }




void RandVet(int vet[],int DIM)
    {
        int i,MIN,MAX;
        printf("\nDefinisci l'intervallo di estrazione degli elementi del vettore (min e max) ");
        printf("\nMIN = ");scanf("%d",&MIN);
        do{printf("\nMAX = ");scanf("%d",&MAX);}while(MAX<MIN);
        for(i=0;i<DIM;i++)
        {
            vet[i]=rand()%(MAX-MIN+1)+MIN;
            printf("\nVET[%d]=%d",i,vet[i]);
        }
    }


void DimVet(int **vet, int *DIM)
{
        int temp=*DIM;
        do
        {
                printf("\n\nInserisci la nuova dimensione del vettore(intero positivo): ",*DIM);
                scanf("%d",DIM);
        }while(*DIM<=0);
        *vet = (int *)realloc(*vet, *DIM * sizeof(int));
        printf("\nLa nuova nuova dimensione del vettore e' %d\n", *DIM);
        getch();
        RandVet(*vet,*DIM);
        OrdinaBC(vet,*DIM);
}

int PosMin(int vet[],int DIM)
    {
        int i,posmin=0;
        for(i=1;i<DIM;i++)
            if(vet[posmin]>vet[i]) posmin=i;
        return posmin;
    }


void Scelta(int **vet,int *DIM)
{
DimVet(vet,DIM);
printf("\nIl minimo vale %d ed occupa la posizione %d",(*vet)[PosMin(*vet,*DIM)],PosMin(*vet,*DIM));
}

int main()
    {
        int *vet;
        vet=malloc(sizeof(int) * DIM);
        srand(time(NULL));
        Scelta(&vet,&DIM);
        free(vet);
        vet=NULL;
        return 0;
    }