Oppure

Loading
03/12/09 16:02
faller
salve a tutti
Ecco il mio problema: Stò facendo un programmma che riorganizzi gli elementi di un vettori e calcoli la media e la frequenza degli elementi stessi.La compilazione procede bene ,però una volta avviato il programma , nella rappresentazione tabulare della frequenza non mi visualizza il testo dandomi al posto del testo :"segmentation fault".




ecco la funzione:


void tabulare(int risultati[], int size){


int i;
int j;
int o;
int c;
int frequenza[]={0};
printf("*******\n moda \n*******";);
printf("\n";);
printf("\n";);
printf("\n";);


printf("%s%15s%15s\n", "voto :", "frequenza:", "tabulare:";);

for(o=1;o<size;o++){


++frequenza[risultati[o]];

}

for(c=1;c<10;c++){

printf("%d%15d\n", c, frequenza[c]);

}



for(i=1;i!=10;i++){



for(j=0;j!=frequenza[i];j++){
printf("%s", "*";);

}

printf("\n";);

}

}





P.S:Scusate la lunghezza e il disordine8-|
aaa
03/12/09 17:25
GuglielmoS
Qui sbagli perchè non indichi quanto dovrà essere grande il vettore!
int frequenza[]={0}; 

aaa
03/12/09 19:00
faller
grazie mille ho risolto. Avevo dimenticato la dimensione a frequenza[].:rotfl:
aaa
03/12/09 20:58
Lawliet
Io non ne sarei tanto sicuro, anche perchè quello potrebbe essere lasciato così, in main l'hai dichiarato quel vettore? Se non erro la dimensione viene presa in automatico.
aaa
04/12/09 7:20
TheKaneB
@Lawliet: erri, erri...

in C un array non esiste (vedi miei precedenti post), ma decade automaticamente a puntatore in ogni operazione. Ergo, una dichiarazione del tipo:
int mioArray[];

equivale esattamente a:
int *mioArray;

In entrambi i casi bisogna allocare la memoria esplicitamente con malloc() o una delle sue varianti.
aaa
04/12/09 13:55
Lawliet
TheKaneB Hai ragione ERRO sull vettore sbagliato!
Io pensavo che si riferiva al vettore passato come parametro per riferimento che si poteva non mettere la dimensione è a quello mi riferivo io. Invece è un altro il problema! Che non ha dichiarato un vettore con dimensione all'interno della funzione ma questo è ovvio :)
aaa
04/12/09 14:21
TheKaneB
ah certo... se è allocato fuori dalla funzione, tutto quadra :) ma in questo caso non lo alloca nessuno, quindi abbiamo un puntatore non allocato che scodinzola allegro in attesa di far crashare tutto :D
aaa