Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
[C++] Non trovo l'errore in questo programma
Nuovo argomento   Rispondi    Indice del forum -> Programmazione
Precedente :: Successivo  
Autore Messaggio
Crono
Semidio
Semidio


Registrato: 24/03/05 14:12
Messaggi: 224
Residenza: Trieste

MessaggioInviato: 31 Ago 2007 12:46    Oggetto: [C++] Non trovo l'errore in questo programma Rispondi citando

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
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 11568
Residenza: Tokelau

MessaggioInviato: 04 Set 2007 15:49    Oggetto: Rispondi citando

cosa dovrebbe accadere e cosa invece accade?
Top
Profilo Invia messaggio privato HomePage
Crono
Semidio
Semidio


Registrato: 24/03/05 14:12
Messaggi: 224
Residenza: Trieste

MessaggioInviato: 05 Set 2007 08:44    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 11568
Residenza: Tokelau

MessaggioInviato: 05 Set 2007 10:54    Oggetto: Rispondi citando

perchè usi dei while() quando invece c'è il for() che è molto meglio e non ti fa introdurre tutti quei

Codice:
y=-1;


sparsi? Così il codice sarebbe più leggibile e magari trovi l'errore...
Top
Profilo Invia messaggio privato HomePage
disturbatore
Semidio
Semidio


Registrato: 25/05/07 14:14
Messaggi: 278
Residenza: pianeta in corso di distruzione

MessaggioInviato: 02 Dic 2007 21:03    Oggetto: Re: [C++] Non trovo l'errore in questo programma Rispondi

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
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Programmazione Tutti i fusi orari sono GMT + 1 ora
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi