slacer (Normal User)
Newbie
Messaggi: 13
Iscritto: 16/03/2010
|
Codice sorgente - presumibilmente C++ |
#include <stdlib.h> #include <stdio.h> int *leggi(int n){ int *array=malloc(sizeof(int)*n); int i; for(i=0;i<n;i++)scanf("%d",*array+i); return array; } void stampa(int *sequenza,int n) { int i; for(i=0;i<n;i++){ printf("|%d|",sequenza[i]); } } void main(){ int n,*sequenza; printf("Inserisci grandezza vettore\n"); scanf("%d",&n); sequenza=leggi(n); stampa(*sequenza,n); return 0; }
|
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 |
for(i=0;i<n;i++)scanf("%d",array+i);
|
Presa pari pari da un algoritmo del prof...qualcuno può spiegarla in 2 parole? |
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/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à. |
|
()
Newbie
Messaggi:
Iscritto:
|
Sopratutto non capisco
Codice sorgente - presumibilmente Plain Text |
for(i=0;i<n;i++)scanf("%d",array+i);
|
Presa pari pari da un algoritmo del prof...qualcuno può spiegarla in 2 parole? |
inizialmente fà assumere il valore 0 alla variabile i, fino a quando i è minore di n esegue
Codice sorgente - presumibilmente Plain Text |
e aumenta di 1 i ogni volta Ultima modifica effettuata da il 17/03/2010 alle 17:35 |
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
La cosa importante è che in questa riga
Codice sorgente - presumibilmente Plain Text |
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à. |
|
slacer (Normal User)
Newbie
Messaggi: 13
Iscritto: 16/03/2010
|
Postato originariamente da D@vide:
Sopratutto non capisco
Codice sorgente - presumibilmente Plain Text |
for(i=0;i<n;i++)scanf("%d",array+i);
|
Presa pari pari da un algoritmo del prof...qualcuno può spiegarla in 2 parole? |
inizialmente fà assumere il valore 0 alla variabile i, fino a quando i è minore di n esegue
Codice sorgente - presumibilmente Plain Text |
e aumenta di 1 i ogni volta |
Il for lo so cosa fa xD
Ma il fatto è che non poteva scrivere array ?
Postato originariamente da nessuno:
La cosa importante è che in questa riga
Codice sorgente - presumibilmente Plain Text |
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 |
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/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à. |
|
slacer (Normal User)
Newbie
Messaggi: 13
Iscritto: 16/03/2010
|
Ok capito tutto =) grazie mille!
|
|
slacer (Normal User)
Newbie
Messaggi: 13
Iscritto: 16/03/2010
|
scusate ragà ho sempre un altro problema, scrivo qua senza creare altre discussioni:
Codice sorgente - presumibilmente C++ |
int *leggi(int n){ srand(time(NULL)); printf("Inserisce i valori automaticamente nel vettore di %d elementi\n",n); int j; int *array=malloc(sizeof(int)*n); int i=0; while(i<n){ j = rand()%100+1; array+i=j; i++; return array; }
|
ordfu.c:21: error: lvalue required as left operand of assignment
alla riga: array+i=j;
scusate ma non riesco ad arrivarci da solo
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/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à. |
|