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++ - Allocazione dinamica [prime armi]
Forum - C/C++ - Allocazione dinamica [prime armi]

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
slacer (Normal User)
Newbie


Messaggi: 13
Iscritto: 16/03/2010

Segnala al moderatore
Postato alle 17:21
Mercoledì, 17/03/2010
Codice sorgente - presumibilmente C++

  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. int *leggi(int n){
  5. int *array=malloc(sizeof(int)*n);
  6. int i;
  7. for(i=0;i<n;i++)scanf("%d",*array+i);
  8. return array;
  9.  
  10. }
  11.  
  12. void stampa(int *sequenza,int n)
  13. {
  14. int i;
  15. for(i=0;i<n;i++){
  16. printf("|%d|",sequenza[i]);
  17. }
  18.  
  19. }
  20.  
  21. void main(){
  22. int n,*sequenza;
  23. printf("Inserisci grandezza vettore\n");
  24. scanf("%d",&n);
  25. sequenza=leggi(n);
  26. stampa(*sequenza,n);
  27. return 0;
  28. }



Apparte i 3-4 warning mi da errore:
Segmentation fault.
Quando deve stampare il vettore.
Scusate l'ignoranza, ma provengo da una scuola superiore in cui usavo il c++(2 anni fa) e non avevo mai visto la malloc...
Sopratutto non capisco
Codice sorgente - presumibilmente Plain Text

  1. for(i=0;i<n;i++)scanf("%d",array+i);


Presa pari pari da un algoritmo del prof...qualcuno può spiegarla in 2 parole? :D


La fisica studia il mondo come funziona... Nell informatica sei tu che crei il mondo, e puoi essere un "dio", in piccola scala.
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5714
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 17:25
Mercoledì, 17/03/2010
Questa

stampa(*sequenza,n);

deve essere

stampa(sequenza,n);


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 17:31
Mercoledì, 17/03/2010
Testo quotato

Sopratutto non capisco
Codice sorgente - presumibilmente Plain Text

  1. for(i=0;i<n;i++)scanf("%d",array+i);


Presa pari pari da un algoritmo del prof...qualcuno può spiegarla in 2 parole? :D



inizialmente fà assumere il valore 0 alla variabile i, fino a quando i è minore di n esegue
Codice sorgente - presumibilmente Plain Text

  1. scanf("%d",array+i)

e aumenta di 1 i ogni volta

Ultima modifica effettuata da il 17/03/2010 alle 17:35
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5714
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 18:15
Mercoledì, 17/03/2010
La cosa importante è che in questa riga

Codice sorgente - presumibilmente Plain Text

  1. scanf("%d",array+i)



si utilizza l' "aritmetica dei puntatori" ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
slacer (Normal User)
Newbie


Messaggi: 13
Iscritto: 16/03/2010

Segnala al moderatore
Postato alle 11:29
Giovedì, 18/03/2010
Testo quotato

Postato originariamente da D@vide:

Testo quotato

Sopratutto non capisco
Codice sorgente - presumibilmente Plain Text

  1. for(i=0;i<n;i++)scanf("%d",array+i);


Presa pari pari da un algoritmo del prof...qualcuno può spiegarla in 2 parole? :D



inizialmente fà assumere il valore 0 alla variabile i, fino a quando i è minore di n esegue
Codice sorgente - presumibilmente Plain Text

  1. scanf("%d",array+i)

e aumenta di 1 i ogni volta



Il for lo so cosa fa xD
Ma il fatto è che non poteva scrivere array ?
Testo quotato

Postato originariamente da nessuno:

La cosa importante è che in questa riga

Codice sorgente - presumibilmente Plain Text

  1. scanf("%d",array+i)



si utilizza l' "aritmetica dei puntatori" ...


Cioè?
Praticamente incrementa la memoria di I per scrivere il valore di ogni dato del vettore fino a n-1?

Grazie a tutti per le risposte :)


La fisica studia il mondo come funziona... Nell informatica sei tu che crei il mondo, e puoi essere un "dio", in piccola scala.
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5714
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 18:30
Giovedì, 18/03/2010


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
slacer (Normal User)
Newbie


Messaggi: 13
Iscritto: 16/03/2010

Segnala al moderatore
Postato alle 8:54
Venerdì, 19/03/2010
Ok capito tutto =) grazie mille!


La fisica studia il mondo come funziona... Nell informatica sei tu che crei il mondo, e puoi essere un "dio", in piccola scala.
PM Quote
Avatar
slacer (Normal User)
Newbie


Messaggi: 13
Iscritto: 16/03/2010

Segnala al moderatore
Postato alle 12:52
Martedì, 23/03/2010
scusate ragà ho sempre un altro problema, scrivo qua senza creare altre discussioni:
Codice sorgente - presumibilmente C++

  1. int *leggi(int n){
  2. srand(time(NULL));
  3. printf("Inserisce i valori automaticamente nel vettore di %d elementi\n",n);
  4. int j;
  5. int *array=malloc(sizeof(int)*n);
  6. int i=0;
  7. while(i<n){
  8. j = rand()%100+1;
  9. array+i=j;
  10. i++;
  11. return array;
  12. }


ordfu.c:21: error: lvalue required as left operand of assignment
alla riga: array+i=j;
scusate ma non riesco ad arrivarci da solo :(


La fisica studia il mondo come funziona... Nell informatica sei tu che crei il mondo, e puoi essere un "dio", in piccola scala.
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5714
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 13:22
Martedì, 23/03/2010
*(array+i)=j;

oppure

array[ i]=j;

Ultima modifica effettuata da nessuno il 23/03/2010 alle 13:23


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo