PDA

Visualizza la versione completa : problema stampa puntatori


grasszilla
31-05-2013, 22:38
sera a tutti ragazzi, sono ancora inesperto e trovo non poche difficoltà a gestire i puntatori, qualcuno può aiutarmi a capire perchè la stampa del minimo non funziona?

ecco qui il codice

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

void DimVet(int **vet[], int *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);
}


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]);
}
}



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);
RandVet(*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;
}

oregon
01-06-2013, 00:01
Le modifiche nelle linee in rosso ... a te il compito di comprenderle ...



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

void DimVet(int **vet, int *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);
}


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]);
}
}



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);
RandVet(*vet,*DIM);

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

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

grasszilla
01-06-2013, 13:54
Originariamente inviato da oregon
Le modifiche nelle linee in rosso ... a te il compito di comprenderle ...



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

void DimVet(int **vet, int *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);
}


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]);
}
}



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);
RandVet(*vet,*DIM);

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

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



grazie, davvero... ma non riesco a capire il senso delle parentesi

oregon
01-06-2013, 14:17
Di quali parentesi?

grasszilla
01-06-2013, 18:54
(*vet)

oregon
01-06-2013, 19:30
vet è un doppio puntatore e quindi con (*vet) ottieni il puntatore al vettore ... cosa non comprendi?

Loading