PDA

View Full Version : per favore urgente, sto impazzendo!!


ciottano
16-02-2004, 20:42
Sapreste dirmi cosa è che nn va col seguente codice C?
Me lo compila ma durante l'esecuzione mi di blocca con un errore di windows, di quelli quando un programma ha eseguito un'istruzione nn valida.

Anche il secondo stesso identico problema... grazie mille.

ciottano
16-02-2004, 20:43
ecco il secondo.

cionci
16-02-2004, 21:04
a[p]=1;

a[3010] va fuori dal vettore... L'ultimo elemento disponbile è 3009....

Per inizializzare tutto il vettore devi fare un for...

ciottano
16-02-2004, 21:11
Scusa con fortran lo stesso programma (serve per calcolare 2 alla 10000) mi funge senza inizializzazione...cmq dovrei avere tutte le componenti nulle tranne l'ultima. il vettore dovrebbe avere 3011 celle, quale è la giusta dichiarazione? scusa ma è da questa mattina che faccio programmi e sto un po rincitrullito ed è da pochi giorni che vedo il c. Grazie mille.

cionci
16-02-2004, 21:17
Allora devi azzerare le altre componenti...perchè non sono zero... O almeno non lo sono in tutti i compialtori...
Comunque l'ultima componente è a[p-1]...

ciottano
16-02-2004, 21:22
Per info uso il Borland C++

xybercom
18-02-2004, 20:53
Originariamente inviato da ciottano
Scusa con fortran lo stesso programma (serve per calcolare 2 alla 10000) mi funge senza inizializzazione...cmq dovrei avere tutte le componenti nulle tranne l'ultima. il vettore dovrebbe avere 3011 celle, quale è la giusta dichiarazione? scusa ma è da questa mattina che faccio programmi e sto un po rincitrullito ed è da pochi giorni che vedo il c. Grazie mille.

In fortran gli indici degli array/vettori vanno di default da 1 a N, mentre in C vanno da 0 a N-1, dove N è il numero di elementi dell'array.
Se vuoi 3011 celle inizializzate a zero puoi quindi fare così

const int N=3011;
float data[N]; // oppure double data[N]; o il tipo di dati che ti serve
for (int k=0; k<N; k++) data[k]=0.0; // k va da 0 a N-1, non fino a N (!)

fpucci
19-02-2004, 02:01
Per qquanto riguarda il secondo listato, la scanf () di un vcalore intero deve essere:

scanf ("%d", &q);

Perciò il problema sono le due scanf()

fpucci
19-02-2004, 02:11
Per il primo listato:
sicuramente "ap]=1" è un errore, per come hai definito il vettore.
Deve essere "int a[3011]" se vuoi avere un vettore di 3011 elementi interi.

Per il resto dipende da come devi inizializzare il vettore.
Se esso deve essere iniziaizzato TUTTO a zero, basta fare:

memset ((char *) a, 0, sizeof (a));