Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Volevo fare un sempice esercizio ma non so più a che santo votarmi oubt: :
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[j]=n;
}
cout<< endl;
}
//stampa della matrice
for ( i=0; i<=2; i++ ) {
for (j=0; j<=2; j++) {
cout << arrey[j] << " ";
}
cout<< endl;
}
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?
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.