Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. 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


La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.
--Isaac Asimov
PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 950
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.)


Nulla va più veloce della luce, quindi rilassati.
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