[C, GNU/Linux] Programma termina prima del previsto

sn1054m1
Salve, stavo scrivendo un programma per il semplice calcolo della media di N misure salvate in un array
Nella prima parte del programma volevo solo provare a stampare l'array con tutte le N misure ma mi sono accorto che il ciclo for si ferma a 4 misure anche se in input io inserisco N=10 e inoltre si comporta in modo strano come potete vedere nello screenshot
Non capisco da cosa dipenda, anche perchè altri programmi scritti qualche settimana fa per stampa di vettori formalmente identici a questo ora presentano lo stesso problema che non si era mai presentato prima...

Grazie per l'aiuto


Risposte
Super Squirrel
La dimensione di un array statico deve essere una costante, ossia:
- un numero
double x[20];

- utilizzando la direttiva "define"
#define dim 20;
double x[dim];

- utilizzando lo specificatore "const"
const int dim = 20;
double x[dim];


Detto questo, molti compilatori accettano anche variabili come dimensione di un array, anche se ciò non è formalmente corretto (in questi casi infatti dovresti ricorrere all'allocazione dinamica della memoria).
Comunque il motivo per cui il tuo programma non funzione è che quando dichiari l'array "x", la sua dimensione "N" è stata dichiarata, ma non inizializzata (quindi "N" assumerà un valore casuale); visto che quando dichiari un array viene allocata una certa quantità di memoria, la sua dimensione deve essere nota e quindi nel tuo caso l'inserimento da tastiera di "N" avrebbe dovuto precedere la dichiarazione di "x".

In ogni caso la soluzione migliore per esercizi del genere consiste nel dichiarare un array statico di una fissata dimensione massima (dim_max) e poi considerare solo i primi N elementi (dove N <= dim_max è stato inserito da tastiera).

sn1054m1
Ok, ho capito, avevo immaginato fosse un errore stupido haha
Grazie mille :)

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.