Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Problema con gli arrey... sono agli inizi!
Forum - C/C++ - Problema con gli arrey... sono agli inizi!

Avatar
Pierga (Normal User)
Newbie


Messaggi: 14
Iscritto: 14/04/2009

Segnala al moderatore
Postato alle 18:45
Sabato, 18/04/2009
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[j]=n;
         }
     cout<< endl;
     }
        
//stampa della matrice
for ( i=0; i<=2; i++ ) {
     for (j=0; j<=2; j++) {
         cout << arrey[j] << " ";
         }
     cout<< endl;
     }
        
cout<< endl<< endl;
system("pause");
return 0;
}

:-?:-?:-?
Grazie a chiunque risponda!

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 18:55
Sabato, 18/04/2009
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 ...

PM Quote
Avatar
andrea.b89 (Ex-Member)
Pro


Messaggi: 129
Iscritto: 03/03/2009

Segnala al moderatore
Postato alle 22:56
Sabato, 18/04/2009
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

Codice sorgente - presumibilmente Plain Text

  1. arrey[j] = n;



devi scrivere

Codice sorgente - presumibilmente Plain Text

  1. arrey[i][j] = n;



PS: come dice theprogrammer si scrive array e non arrey :k:

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 23:41
Sabato, 18/04/2009
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 il 18/04/2009 alle 23:41
PM Quote
Avatar
andrea.b89 (Ex-Member)
Pro


Messaggi: 129
Iscritto: 03/03/2009

Segnala al moderatore
Postato alle 23:49
Sabato, 18/04/2009
ah giusto, è perchè non lo ha inserito all'interno del tag code. :rotfl:

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 0:15
Domenica, 19/04/2009
Testo quotato

Postato originariamente da andrea.b89:

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



Esatto ...

PM Quote
Avatar
Pierga (Normal User)
Newbie


Messaggi: 14
Iscritto: 14/04/2009

Segnala al moderatore
Postato alle 8:18
Domenica, 19/04/2009
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?



Pierga ha allegato un file: immagine1.jpg (19379 bytes)
Clicca qui per guardare l'immagine

Ultima modifica effettuata da Pierga il 19/04/2009 alle 8:20
PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 10:16
Domenica, 19/04/2009
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.

PM Quote