Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    16

    classe che stampa quadrati!

    salve, sto studiando il java in quanto a metà febbraio devo sostenere l'esame di fondamenti di informatica!
    Seguendo gli esercizi proposti dal libro mi è stato chiesto di modificare una classe che usa cicli annidati per stampare a video quadrati invece di triangoli.

    Qui di seguito il codice della classe che crea i quadrati:
    codice:
    class quadrato
    { 
     public quadrato(int l)
     { 	    
      lato = l;
     }
       
     public String costruisci()
     { 	    
      String q = "";   
      for (int i = 1; i <= lato; i++)
      {	     	   	
       for (int j = 1; j <= lato; j++)
       
       q = q + "[]";	 	
       q = q + "\n";
       }           
       return q;
     }
    
    private int lato;
     }
    Ora il problema è il seguente:
    Nella classe sopra citata io per far apparire un quadrato invece di un triangolo ho scritto nel secondo ciclo for "j <= lato" mentre per far apparire un triangolo scrivevo "j <= i".
    Non mi è chiaro cosa cambia tra le 2 cose, cioè non capisco perchè facendo quella sostituzione stampa un quadrato!
    Ringrazio in anticipo per l'aiuto che potreste darmi.

  2. #2

    Re: classe che stampa quadrati!

    Originariamente inviato da demi90
    Ora il problema è il seguente:
    Nella classe sopra citata io per far apparire un quadrato invece di un triangolo ho scritto nel secondo ciclo for "j <= lato" mentre per far apparire un triangolo scrivevo "j <= i".
    Non mi è chiaro cosa cambia tra le 2 cose, cioè non capisco perchè facendo quella sostituzione stampa un quadrato!
    Ringrazio in anticipo per l'aiuto che potreste darmi.
    Perchè nel caso del triangolo ti serve incrementare il numero di "[]" da stampare.
    Infatti succede che:
    codice:
    prima chiamata: i = 1;
                          j = 1;
    
    stampa: []
    
    seconda chiamata: i = 2;
                              1 <= j <= 2;
    
    stampa: [][]
    
    e così via..
    Quindi il risultato delle prime due chiamate è
    []
    [][]
    un tringolo rettangolo.

    Nel caso del quadrato, ti interessa solo stampare L (altezza del quadrato) volte una sequenza di "[]" che ha lunghezza costante pari alla larghezza del quadrato, in quanto l'altezza è pari alla lunghezza.

  3. #3

    Re: Re: classe che stampa quadrati!

    Spero sia chiaro.

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    codice:
    lato = 4;
    i = 1;
    j = 1;
    
    // entra nel ciclo di j ed inserisce nella stringa
    [][][][]
    poi va a capo \n
    [][][][]
    poi va a capo \n
    [][][][]
    poi va a capo
    [][][][]
    quindi, infine, ottieni:
    codice:
    [][][][]
    [][][][]
    [][][][]
    [][][][]
    Triangolo
    codice:
    lato = 4;
    i = 1;
    j = i; // inizialmente 1
    
    []
    va a capo \n
    [][]
    va a capo \n
    [][][]
    va a capo \n
    [][][][]
    ed ottieni
    codice:
    []
    [][]
    [][][]
    [][][][]
    Mettendo come condizione "j<=i" costringi j ad essere non più grande di i. Questo significa che nel primo ciclo, abbiamo i=1. Viene eseguito il for di J che conta sino a che j<=i. Si ferma, e va a capo. i ora verrà incrementato e varrà 2, quindi j scorre sino a che non sarà <=i, concatena quindi [][] e poi torna capo, poichè esce dal ciclo...e così via.

    Spero ti sia chiaro

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    16
    Ringrazio moltissimo ad entrambi, siete stati chiarissimi e tempestivi

  6. #6
    Originariamente inviato da demi90
    Ringrazio moltissimo ad entrambi, siete stati chiarissimi e tempestivi
    Bene. Adesso sei in grado di ottenere la stampa su console di un triangolo equilatero/isoscele.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.