Visualizzazione dei risultati da 1 a 10 su 18

Visualizzazione discussione

  1. #1

    [C++] Esercizio sulle classi

    salve a tutti, quello che vi chiedo oggi riguarda un esercizio per la prova pratica di informatica della mia università, da spiegare come esercizio è un pochino lungo ma comunque è semplice, il testo è il seguente, ci sarebbe anche la seconda parte dell'esercitazione ma per il momento il problema si trova nella prima parte.


    http://it.tinypic.com/r/1zy7979/8

    il codice scritto da me si divide in due parti, un file con estenzione .h in cui dichiaro la classe e tutte le funzioni che andrò ad usare ed un file con estenzione .cpp in cui vado a scrivere le funzioni vere e proprie. ecco il codice di seguito:

    compito.h:
    codice:
    #include <iostream>
    #include <cstring>
    
    
    using namespace std;
    
    
    class Display {
        int n;
        bool *display; //false: led spento , true: led acceso;
    
    
    public:
    
    
        Display (int );
        bool set (const char );
        friend ostream & operator<<(ostream & , const Display & );
    
    
        void specchia ();
        //~Display();
    };
    mentre questo è il compito.cpp:

    codice:
    #include "compito.h"
    
    
    Display::Display (int dim) {
        n= (dim<=0 || ((dim%2)==0))? 5 : dim;
        display=new bool[n*n];
    
    
        for (int i=0; i<n; i++)
            for (int j=0; j<n; j++)
                display[i*dim+j]=false;
    
    
    };
    
    
    bool Display::set (const char ch) {
        int media = n/2;
    
    
        for (int i=0; i<n; i++){
            for (int j=0; j<n; j++){
                
                if (ch=='-' && i==media)
                        display[i*n+j]=true;
                if (ch=='|' && j==media)
                        display[i*n+j]=true;
                if (ch=='/' && i==(n-j-1))
                        display[i*n+j]=true;
    
    
                else
                    return false;
            }
        }
    
    
    
    
    return true;
    }
    
    
    ostream & operator<<(ostream & os, const Display & d) {
        int dim= d.n;    
        
            
        for (int i=0; i<dim; i++){
            for (int j=0; j<dim; j++){
                
                if (d.display)
                    os<<'1';
                else
                    os<<'0';
                
            }
        os<<endl;
        }
    
    
    return os;
    
    
    }
    il main.cpp invece ci viene dato dai professori, chiama le funzioni che abbiamo scritto ed è il seguente:

    codice:
    #include "compito.h"
    #include <iostream>
    using namespace std;
    
    int main(){
    
      //PRIMA PARTE
      cout<<"1/8 Test del costruttore (deve creare un Display 5x5 con tutti i led spenti)"<<endl;
      Display d1(4); 
      cout<<d1<<endl;
        
      cout<<"2/8 Test della set('-') (deve stampare la riga centrale accesa)"<<endl;
      d1.set('-');
      cout<<d1<<endl;
      
      cout<<"3/8 Test della set('|') (deve stampare la colonna centrale accesa)"<<endl;
      Display d2(5);
      d2.set('|');
      cout<<d2<<endl;
        
      cout<<"4/8 Test della set('/') (deve stampare la diagonale ascendente accesa)"<<endl;
      Display d3(7);
      d3.set('/');   
      cout<<d3<<endl;
        
      // SECONDA PARTE
    
      cout<<"5/8 Test dell'or bit a bit (deve stampare il segno '+')"<<endl;
      d1|=d2;
      cout<<d1<<endl;
        
      cout<<"6/8 Test della 'specchia' (deve stampare la diagonale discendente 7x7 accesa)"<<endl;
      d3.specchia();
      cout<<d3<<endl;
      
      {
        Display d4(3);
        cout<<"7/8 Test dell'operatore di assegnamento (deve stampare l'asta '|' 5x5)"<<endl;
        d4=d2;
        cout<<d4<<endl;
        cout<<"8/8 Test (implicito) del distruttore"<<endl;
      }
      
      return 0;
    }
    e contiene pure la chiamata alle funzioni della parte seconda.

    come vi avevo accennato prima il problema si trova nella prima parte del codice e (secondo il mio parere) nella classe ostream che stampa a video il contenuto delle matrici, infatti questo programma mi stampa in ogni caso, una matrice formata da tutti 1 invece che stamparmi:
    -0 se display==false;
    -1 se display==true;

    non riesco tuttavia a capirne il motivo, spero che riusciate ad individuare il problema della funzione ed aiutarmi!
    Grazie mille delle risposte.

    l'uscita del mio terminale è la seguente:

    http://it.tinypic.com/r/2w54zsi/8
    Immagini allegate Immagini allegate
    Ultima modifica di mygametech; 20-02-2014 a 17:45

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.