Precedente :: Successivo |
Autore |
Messaggio |
Crono Semidio
Registrato: 24/03/05 14:12 Messaggi: 224 Residenza: Trieste
|
Inviato: 31 Ago 2007 12:46 Oggetto: [C++] Non trovo l'errore in questo programma |
|
|
Non riesco ad individuare gli errori in questo codice:
Codice: | #include<fstream>
#include<iostream>
using namespace std;
class S {
int matrice[8][8];
public:
S();
void ins(int x, int y, int num) {matrice[x][y]=num;}
void mostra();
};
int carica(S &schema);
void main() {
S schema;
switch(carica(schema)) {
case 1: cout<<"Impossibile aprire il file"<<endl
<<"Premi un tasto per terminare";
cin.get();
return;
case 2: cout<<"Input errato"<<endl
<<"Premi un tasto per terminare";
cin.get();
return;
case 3: cout<<"Schema caricato con successo"<<endl<<endl;
break;
}
schema.mostra();
}
S::S() {
int x, y;
for(x=0; x<9; x++) for(y=0; y<9; y++) matrice[x][y]=0;
}
void S::mostra() {
int x=-1, y=-1;
while(++x<9) {
while(++y<9) cout<<matrice[x][y]<<ends;
cout<<endl;
y=-1;
}
}
int carica(S &schema) {
int x=-1, y=-1, num;
ifstream file("schema.txt");
if(!file.is_open()) {
file.close();
return 1;
}
while(++x<9) {
while(++y<9) {
file>>num;
if(num<0 || num>9) {
file.close();
return 2;
}
schema.ins(x, y, num);
}
y=-1;
}
file.close();
return 3;
} |
Contenuto di schema.txt:
1 2 3 4 5 6 7 8 9
9 8 7 6 5 4 3 2 1
1 2 3 4 5 9 8 7 6
0 0 0 0 0 0 0 0 0
1 2 3 4 5 9 8 7 6
9 8 7 6 5 4 3 2 1
1 2 3 4 5 6 7 8 9
5 9 8 7 6 3 4 2 1
0 1 0 2 0 3 0 4 0 |
|
Top |
|
|
SverX Supervisor Macchinisti
Registrato: 25/03/02 11:16 Messaggi: 11568 Residenza: Tokelau
|
Inviato: 04 Set 2007 15:49 Oggetto: |
|
|
cosa dovrebbe accadere e cosa invece accade? |
|
Top |
|
|
Crono Semidio
Registrato: 24/03/05 14:12 Messaggi: 224 Residenza: Trieste
|
Inviato: 05 Set 2007 08:44 Oggetto: |
|
|
Scusate, quando ho scritto questo post avevo poco tempo e non ho spiegato il problema, questo programma non fa nulla se non leggere da un file di testo la serie di numeri dell'esempio, caricarli in memoria e visualizzarli sullo schermo, ma dopo le prime due linee di numeri le altre vengono lette in modo errato e alla fine il programma genera un errore |
|
Top |
|
|
SverX Supervisor Macchinisti
Registrato: 25/03/02 11:16 Messaggi: 11568 Residenza: Tokelau
|
Inviato: 05 Set 2007 10:54 Oggetto: |
|
|
perchè usi dei while() quando invece c'è il for() che è molto meglio e non ti fa introdurre tutti quei
sparsi? Così il codice sarebbe più leggibile e magari trovi l'errore... |
|
Top |
|
|
disturbatore Semidio
Registrato: 25/05/07 14:14 Messaggi: 278 Residenza: pianeta in corso di distruzione
|
Inviato: 02 Dic 2007 21:03 Oggetto: Re: [C++] Non trovo l'errore in questo programma |
|
|
Crono ha scritto: | Codice: | int matrice[8][8]; |
|
La matrice non dovrebbe essere definita di 9 righe e 9 colonne? Codice: | int matrice[9][9]; |
Facendo questa assunzione e inglobando anche il suggerimento di SverX relativo al "for", su cui concordo perchè più adatto ed elegante nel caso che hai proposto, il programma funziona?
Potresti anche aggiungere, nella funzione che carica la matrice, la visualizzazione di ciò che viene caricato, per assicurarti di aver usato correttamente le istruzione, p.e. riga e colonna e valore corrente. |
|
Top |
|
|
|