Visualizzazione dei risultati da 1 a 10 su 18

Hybrid View

  1. #1
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    codice:
    if (d.display)
       os<<'1';
    else
       os<<'0';
    d.display è un array... quindi va indicizzato, altrimenti quell'espressione sarà sempre vera (essendo che stai testando la "bontà" del puntatore)... infatti stai usando due for annidati, ma non ne stai usando gli indici.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  2. #2
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    codice:
    if (d.display)
       os<<'1';
    else
       os<<'0';



    Ciao.
    grazie mille!!!

  3. #3
    allora ho indicizzato l'array modificando questa parte di codice:

    codice:
    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[i*dim+j]==true)
    				os<<'1';
    			else if (d.display[i*dim+j]==false)
    				os<<'0';
    			
    		}
    	os<<endl;
    	}
    
    
    return os;
    
    
    }
    ma ora mi da il problema oppposto, ovvero stampa tutti 0, cosa sbaglio (scusami ancora!!!)?

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    codice:
    if ( d.display[i*dim+j] )   // Se il valore è true, l'espressione è true e andrà in then, altrimenti in else
       os<<'1';
    else   // Se non è true, non serve un secondo if per sapere che è false... :)
       os<<'0';

    Questo è più che sufficiente...

    Perchè stampa tutti 0... Guarda, ad esempio, la "set()":


    codice:
        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;
            }
        }
    Se il carattere passato è '-', comincierà il controllo. Siamo sulla prima cella (0,0), il primo if non viene soddisfatto.
    Va a vedere il secondo if, non viene soddisfatto.
    Va a vedere il terzo if, non viene soddisfatto quindi ritorna false... ma come? E tutte le altre celle non le controlliamo? Ci fermiamo alla prima?

    Ricorda che gli "else" non sono obbligatori... se il flusso logico non ha bisogno di una "alternativa", semplicemente non metterla.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    quindi basta togliere l'else alla set?

  6. #6
    Quote Originariamente inviata da mygametech Visualizza il messaggio
    quindi basta togliere l'else alla set?
    è vero!!! Grazie mille del tuo auto ora funziona, grazie!!!

  7. #7
    scusa se ti disturbo ancora, ora ho visto che funziona tutto tranne una seconda funzione, la specchia che dovrebbe stampare la matrice come se fosse riflessa a specchio.

    questo è il mio codice:

    codice:
    void Display::specchia () {
    		bool temp;
    		
    		for (int i=0; i<n; i++){
    			for (int j=0; j<n; j++){
    				temp=display[i*n+j];
    				display[i*n+j]=display[i*n+(n-j-1)];
    				display[i*n+(n-j-1)]=temp;
    
    
    
    
    			}
    		}
    return;
    }
    il problema è che mi ristampa la stessa matrice senza invece scambiare le righe, anche qui, cosa sbaglio?

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.