Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Disegno Java

  1. #1

    Disegno Java

    Buonasera a tutti,

    devo disegnare una figura utilizzando il carattere *;
    la figura è questa:
    FIGURA 1
    * *
    ** **
    *** ***
    *******

    con il seguente codice sono riuscito a sviluppare solo questo:
    FIGURA2
    *******
    *******
    *******
    *******
    codice:
    public class DisegnoC
    
    {   
    
          public static void main(String[] args)
    
        {
    		int x = 4; //righe
    		int j = 7; //colonne
    				
    	    for(int i=0; i<x; i++)
    			 
    			{
    			    				
    				for(int z=0; z<j; z++)
        			             System.out.print("*");
    				System.out.println();
    					
    			}
    		 
    }
    }
    Come posso sviluppare la figura 1 in alto?

    Grazie per l' aiuto.

  2. #2
    la cosa più semplice è disegnarla a mano
    codice:
    System.out.println("* *");
    System.out.println("** **");
    System.out.println("*** ***");
    Questo perchè non vedo regolarità nella figura. Al massimo puoi fare
    codice:
    for (int i = 1; i <= 3; i++)
    {
        for (int j = 0; j < i; j++) //notare che j arriva fino ad i
            System.out.print("*"); // stampa senza andare a capo
        
        System.out.println(); // va a capo
    }
    L'ultima riga va comunque inserita a mano...

  3. #3
    Ciao e grazie per la risposta,

    forse ho impaginato male la figura; quella che dovrebbe uscire fuori è questa:

    Praticamente:
    la prima riga, solo due * *
    la seconda riga, ** **
    la terza riga, *** ***
    la quarta riga, *******

    Grazie

  4. #4
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    E se invece creassi un array bidimensionale di boolean ? Diciamo una matrice di 5 righe e 8 colonne.
    Ora si tratta di disegnare sulla matrice i punti nella posizione in cui servono, così poi con un ciclo di for innestato

    codice:
    for (int row=0; row<5; row++)
    {
      for (int col=0; col<8; col++)
      {
        if (matrice[row][col])
          System.out.print (*);
      }
      System.out.println ();
    }
    un'altra alternativa potrebbe essere di memorizzare le posizioni in una matrice di interi.
    Se una riga del disegno contiene
    01234567
    *BBB*BB*
    Dove B sta per spazio vuoto, la riga nella matrice corrispondente sarà:
    int riga = {0,4,-1,-1,-1,...};

    Visto che le colonne sono 8 si possono usare come righe della matrice vettori di dimensione 8

    ovviamente la stampa diventa un po' più complicata del caso precedente...

    Ciao!
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  5. #5
    mmm... entrambe le maniere mi sembrano più lunghe ed arzigogolate rispetto ad una semplice serie di stampe o_O
    Senza contare che se devi cambiare il disegno ti tocca riscriverti una sfilza di true e false

  6. #6
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Il punto è capire il motivo per il cui il disegno va fatto.. A me sembra di capire che si tratti di un esercizio sui cicli di for annidati..

    L'unica è sperare che almeno una delle nostre interpretazioni sia quella corretta

    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  7. #7
    Ciao Pastore12,

    in effetti è un' esercitazione.
    Trovo difficolta' nel sviluppare il codice..
    Non so come fare...

  8. #8
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Capisco che iniziare a programmare sia difficile, ma passare dall'HelloWorld a scrivere un ciclo di for non è che sia poi la fine del mondo...

    Che ne dici di provare con il metodo della matrice di boolean ?
    Ti garantisco che è la via più semplice.

    Prova per esercizio a stampare solo una riga della matrice, quindi devi solo crearti un array di boolean, inizializzarlo e poi scorrerlo con un semplice ciclo di for.

    Se hai problemi, posta tutto il codice della classe, ma spero che tu ci possa riuscire dando un veloce sguardo alle api.

    Quando sei sicuro che la cosa funzioni correttamente, prova a costruire una matrice bidimensionale di boolean. Alla fine è un vettore di vettori, quindi il problema è solo non perdere la testa

    Poi stampa la matrice.. e hai finito. Ciao!
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  9. #9
    Ciao Pastore12,

    allora, per risolvere il problema, ho creato una matrice:
    Questo il codice:
    codice:
    public class DisegnoD 
    {
      public static void main(String[] args) 
      {
        int a[][]=new int[4][7];
    	int i,j;
    	//i = righe + j = colonne
        
        for(i=0; i<=3; i=i+1) 
    	{
          for(j=0; j<=6; j=j+1) 
    	  {
            a[i][j]=0;
          }
        }
    
        a[0][1]=1;
    	a[0][2]=1;
        a[0][3]=1;
    	a[0][4]=1;
    	a[0][5]=1;
    	a[1][2]=1;
    	a[1][3]=1;
    	a[1][4]=1;
    	a[2][3]=1;
    
        for(i=0; i<=3; i=i+1) 
    	{
          for(j=0; j<=6; j=j+1) 
    	  {
            System.out.print(a[i][j]);
          }
          System.out.println();
        }
      }
    }
    Considera il numero 0 come * e il numero 1 come " " (spazio)
    La figura esce bene....
    Ora pero' vorrei sostituire al numero 0 il segno * e al numero 1 lo spazio " "....
    E' necessario convertire int to String??

    Grazie

  10. #10
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    O usi una matrice di stringhe, oppure usi una matrice di boolean come ti avevo già detto.

    codice:
    if(matrice[i][j])
      // Scrivi *
    else
      // Scrivi " "
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

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.