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

Messaggioda sn1054m1 » 01/02/2018, 13:57

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

Immagine
sn1054m1
Starting Member
Starting Member
 
Messaggio: 18 di 48
Iscritto il: 23/05/2017, 14:05

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

Messaggioda Super Squirrel » 01/02/2018, 15:55

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

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

- utilizzando lo specificatore "const"
Codice:
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).
Chi dorme in democrazia, si sveglia in dittatura.
Super Squirrel
Senior Member
Senior Member
 
Messaggio: 157 di 1486
Iscritto il: 16/05/2013, 22:05

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

Messaggioda sn1054m1 » 01/02/2018, 16:29

Ok, ho capito, avevo immaginato fosse un errore stupido haha
Grazie mille :)
sn1054m1
Starting Member
Starting Member
 
Messaggio: 19 di 48
Iscritto il: 23/05/2017, 14:05


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite