Oppure

Loading
17/03/10 16:21
slacer

#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
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
aaa
17/03/10 16:25
nessuno
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à.
17/03/10 16:31
Sopratutto non capisco
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
scanf("%d",array+i)
e aumenta di 1 i ogni volta
Ultima modifica effettuata da 17/03/10 16:35
17/03/10 17:15
nessuno
La cosa importante è che in questa riga

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à.
18/03/10 10:29
slacer
Postato originariamente da D@vide:

Sopratutto non capisco
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
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 ?
[i]Postato originariamente da nessuno:

La cosa importante è che in questa riga

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 :)
aaa
18/03/10 17:30
nessuno
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à.
19/03/10 7:54
slacer
Ok capito tutto =) grazie mille!
aaa
23/03/10 11:52
slacer
scusate ragà ho sempre un altro problema, scrivo qua senza creare altre discussioni:
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 :(
aaa