Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Piccola funzione x caricare un vettore
Forum - C/C++ - Piccola funzione x caricare un vettore

Avatar
baxy (Normal User)
Newbie


Messaggi: 2
Iscritto: 16/03/2010

Segnala al moderatore
Postato alle 17:56
Martedì, 16/03/2010
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=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);
}

Ultima modifica effettuata da baxy il 16/03/2010 alle 17:56
PM Quote
Avatar
GuglielmoS (Ex-Member)
Pro


Messaggi: 114
Iscritto: 27/11/2009

Segnala al moderatore
Postato alle 18:35
Martedì, 16/03/2010
Allora la funzione My_carica deve restituire un vettore e non un intero.
Quindi così dovrebbe andare:
Codice sorgente - presumibilmente C++

  1. int* My_carica (int dim)
  2. {
  3.         int i;
  4.         int *vet = (int*)malloc (dim*sizeof(int)); // cast del puntatore ritornato da malloc
  5.         for(i=0;i<dim;i++)
  6.                 vet[i]=1+rand()%100;
  7.         return vet;
  8. }
  9.  
  10. int main()
  11. {
  12.         int n,*A,i;
  13.         scanf("%d",&n);
  14.         A=My_carica(n);
  15.        
  16.         for(i=0;i<n;i++)
  17.                 printf("%d",A[i]);
  18. }


Ultima modifica effettuata da GuglielmoS il 16/03/2010 alle 18:37
PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 18:45
Martedì, 16/03/2010
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.)

PM Quote
Avatar
baxy (Normal User)
Newbie


Messaggi: 2
Iscritto: 16/03/2010

Segnala al moderatore
Postato alle 19:22
Martedì, 16/03/2010
Testo quotato

Postato originariamente da GuglielmoS:

Allora la funzione My_carica deve restituire un vettore e non un intero.
Quindi così dovrebbe andare:
Codice sorgente - presumibilmente C++

  1. int* My_carica (int dim)
  2. {
  3.         int i;
  4.         int *vet = (int*)malloc (dim*sizeof(int)); // cast del puntatore ritornato da malloc
  5.         for(i=0;i<dim;i++)
  6.                 vet[i]=1+rand()%100;
  7.         return vet;
  8. }
  9.  
  10. int main()
  11. {
  12.         int n,*A,i;
  13.         scanf("%d",&n);
  14.         A=My_carica(n);
  15.        
  16.         for(i=0;i<n;i++)
  17.                 printf("%d",A[i]);
  18. }



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

PM Quote