Oppure

Loading
18/04/09 16:45
Pierga
Volevo fare un sempice esercizio ma non so più a che santo votarmi :doubt: :
volevo semplicemente inserire in un arrey dei valori e poi stamparli a video...
Che c'è che non va?

#include <iostream>
using namespace std;

int main(void)
{
float arrey[2][2];
float n;
int i;
int j;

//inserimento dati nella matrice
for ( i=0; i<=2; i++ ) {
for (j=0; j<=2; j++ ) {
cout << "inserisci il numero "<< i << j<< ": ";
cin >> n;
arrey[i][j]=n;
}
cout<< endl;
}

//stampa della matrice
for ( i=0; i<=2; i++ ) {
for (j=0; j<=2; j++) {
cout << arrey[i][j] << " ";
}
cout<< endl;
}

cout<< endl<< endl;
system("pause";);
return 0;
}

:-?:-?:-?
Grazie a chiunque risponda!
aaa
18/04/09 16:55
theprogrammer
Gli elementi dimensionati sono 2 x 2 ... gli indici devono variare tra 0 e 1, quindi nelle for non devi scrivere

<=2

ma solo

<2

P.S. Si scrive array ...
aaa
18/04/09 20:56
andrea.b89
C'è anche un altro errore. Quando inserisci un valore in un array devi specificare tutti gli indici mentre te ne indichi solo uno :

Dove tu fai

arrey[j] = n;


devi scrivere

arrey[i][j] = n;


PS: come dice theprogrammer si scrive array e non arrey :k:
aaa
18/04/09 21:41
theprogrammer
Quello e' un problema del forum. Se scrivi

[ i ]

(senza spazi) viene interpretato come codice per il corsivo. Non lo vedi piu' ma il testo appare in corsivo.
Ultima modifica effettuata da theprogrammer 18/04/09 21:41
aaa
18/04/09 21:49
andrea.b89
ah giusto, è perchè non lo ha inserito all'interno del tag code. :rotfl:
aaa
18/04/09 22:15
theprogrammer
Postato originariamente da andrea.b89:

ah giusto, è perchè non lo ha inserito all'interno del tag code. :rotfl:


Esatto ...
aaa
19/04/09 6:18
Pierga
Ooops :blush: :-| arrAy arrAy arrAy arrAy... arrAy!

Bene, lezione imparata: quando dichiaro un array (array[2][2]) ho una matrice 2x2 e non 3x3 come pensavo. Ma i dati contenuti vengono contati dallo 0!

Analizzando però ciò che fa il programma sbagliato: perchè non mi dà errore, ma mi inserisce come ultimo dato della prima riga il primo della seconda; come ultimo della seconda il primo della terza e la terza riga viene giusta?

Ultima modifica effettuata da Pierga 19/04/09 6:20
aaa
19/04/09 8:16
theprogrammer
Semplicemente perche' i tuoi dati vanno a "sforare" in memoria e, per caso, trovano spazio non allocato dal tuo programma che e' possibile utilizzare. Un classico buffer overflow.
aaa