Oppure

Loading
16/03/10 16:56
baxy
Ciao ragazzi sono un nuovo utente... Premetto che sono anche un principiante nel mondo della programmazione, quindi sarei grato se qualche utente possa aiutarmi.

Questo è il mio piccolo programmino per caricare un vettore in maniera random ed allocarlo in memoria dinamicamente. Il problema che non funziona sapreste mica dirmi dove stò sbagliando...??? grazie

int My_carica (int dim)
{
    int i;
    int *vet = malloc (dim*sizeof(int));
    for(i=0;i<dim;i++)
        vet[i]=1+rand()%100;
    return *vet;
}


int main()
{
    int n,*A,i;
    scanf("%d",&n);
    *A=My_carica(n);
    
    for(i=0;i<n;i++)
        printf("%d",A[i]);
}
Ultima modifica effettuata da baxy 16/03/10 16:56
aaa
16/03/10 17:35
GuglielmoS
Allora la funzione My_carica deve restituire un vettore e non un intero.
Quindi così dovrebbe andare:
int* My_carica (int dim)
{
	int i;
	int *vet = (int*)malloc (dim*sizeof(int)); // cast del puntatore ritornato da malloc
	for(i=0;i<dim;i++)
		vet[i]=1+rand()%100;
	return vet; 
}

int main()
{
	int n,*A,i;
	scanf("%d",&n);
	A=My_carica(n);
	
	for(i=0;i<n;i++)
		printf("%d",A[i]);
}
Ultima modifica effettuata da GuglielmoS 16/03/10 17:37
aaa
16/03/10 17:45
Poggi Marco
Ciao !

Ho letto il tuo programma e ho trovato alcuni errori:

1- La funzione deve essere dichiarata in questo modo:
"int * My_carica (int dim)"
in modo da restituire un puntatore int, non um intero.

2- Non deallochi la memoria utilizzate tramite la funzione free().
:_doubt: A tal proposito, devo ammettere, di non aver molta famigliarità con il c.
(Non so dirti con esattezza coma deallocare un vettore.)
aaa
16/03/10 18:22
baxy
Postato originariamente da GuglielmoS:

Allora la funzione My_carica deve restituire un vettore e non un intero.
Quindi così dovrebbe andare:
int* My_carica (int dim)
{
	int i;
	int *vet = (int*)malloc (dim*sizeof(int)); // cast del puntatore ritornato da malloc
	for(i=0;i<dim;i++)
		vet[i]=1+rand()%100;
	return vet; 
}

int main()
{
	int n,*A,i;
	scanf("%d",&n);
	A=My_carica(n);
	
	for(i=0;i<n;i++)
		printf("%d",A[i]);
}

Sei stato un grande adesso tutto fila liscio. Giustamente dovevo restituire il puntatore al vettore ma non semplicemente un intero. Ti ringrazio ancora molto ciaoooo
aaa