Forum Informatica Unict

LAUREA TRIENNALE (D.M. 270/04) => Programmazione 1, 9 CFU => Topic started by: Meluccio10 on 12-11-2011, 16:30:05



Title: Es.asterischi
Post by: Meluccio10 on 12-11-2011, 16:30:05
ehi ragazzi sapete suggerirmi un soluzione per avere in output la seguente rappresentazione:
    +
   ++
  +++
 ++++
+++++
 ++++
  +++
   ++
    +


grazie mille anticipatamente...


Title: Re:Es.asterischi
Post by: Saro Newland on 12-11-2011, 17:35:25
ehi ragazzi sapete suggerirmi un soluzione per avere in output la seguente rappresentazione:
    +
   ++
  +++
 ++++
+++++
 ++++
  +++
   ++
    +


grazie mille anticipatamente...

io ho fatto così, ma credo che sia troppo grossolana come situazione
http://paste.ubuntu.com/734736/


Title: Re:Es.asterischi
Post by: rEDTUNING on 12-11-2011, 19:22:51
io ho fatto così, ma credo che sia troppo grossolana come situazione
http://paste.ubuntu.com/734736/

mmm penso che non vada bene, il senso dell'esercizio è sfruttare le iterazioni per creare quella figura in modo "automatico". Tu in pratica hai messo gli spazi in modo graduale aumentandoli\diminuendoli e hai usato le iterazioni solo per fare n simboli in ogni riga. Il senso dell'esercizio a mio parere non è questo ma è fare un programma che in automatico generi quella figura grazie a delle iterazioni. Un pò come l'esempio della matrice che andava a righe alterne da 1 a 10 e da 10 a 1.


Title: Re:Es.asterischi
Post by: VanDir on 12-11-2011, 21:20:27
Ciao ragazzi io molto probabilmente mi sono complicato la vita però alla fine sono riuscito a risolverlo. In pratica bisogna implementare un while che stampa gli spazi e uno che stampa i caratteri. Di sotto ho scritto il codice(all'aumentare del numero che vi chiede all'inizio aumenta la lunghezza dell'altezza).

Qui c'è il codice:

Code:
import javax.swing.JOptionPane;
public class romboPiu1
{
        public static void main(String[] args)
{
char x = '+';
String space = " ";
int riga = 1;
int contI = 1;
                String figura = "";
int n = Integer.parseInt(JOptionPane.showInputDialog("Scrivi un numero:"));
while (riga <= n)
{
contI = riga;
while (contI < n)
{
System.out.print(space);
contI++;
}
figura += x;
System.out.println(figura);
riga++;
}
figura = "";
contI = 1;
riga = 1;
while (riga < n)
{
contI = riga;
System.out.print(space);
space += " ";
while (contI < n-1)
{
System.out.print(x);
contI++;
}
System.out.println(x);
riga++;
}
System.exit(0);
}
}

o così(non mi ricordavo bene l'output scritto alla lavagna):

Code:
import javax.swing.JOptionPane;
public class romboPiu2
{
        public static void main(String[] args)
{
int riga = 1;
int contatore = 1;
int n = Integer.parseInt(JOptionPane.showInputDialog("Scrivi un numero(non troppo grande):"));
char x = '+';
String spazio = "  ";
                String figura = "+";

while (riga <= n)   
{
contatore = riga;  //serve a far diminuire il numero di spazi da stampare nel prossimo ciclo interno
while (contatore < n)  //stampa un numero di spazi senza andare a capo che va a diminuire con la ripetizione del ciclo più esterno
{
System.out.print(spazio);
contatore++;
}
System.out.println(figura); //stampa (andando a capo) un numero di asterisci che va sempre ad aumentare con la ripetizione del ciclo
figura += x + "" + x;
riga++;
}

riga = 1;

while (riga < n)
{
contatore = riga;
System.out.print(spazio);
spazio += "  ";
while (contatore < n-1)
{
System.out.print(x+""+x);
contatore++;
}
System.out.println(x);
riga++;
}

System.exit(0);
}
}



Title: Re:Es.asterischi
Post by: ɹǝǝuıƃuǝsɹǝʌǝɹ on 12-11-2011, 23:48:56
Sicuro che la progressione di asterischi (o comunque di simboli) vada letta, riga per riga, come incrementale di una sola unità .penso?
Te lo chiedo perché per disegnare quel "rombo" penso si utilizzi la console, che è una matrice rettangolare di caratteri, e purtroppo, proprio per tale reticolarità, non è possibile mostrare due simboli centrandoli entrambi sotto uno stesso simbolo.

Forse per caso la rappresentazione dovrebbe incrementare di 2? Ad esempio, così:

   *        1 simbolo
  ***       
3 (1+2) simboli
 *****     
5 (3+2) simboli
*******     
7 (5+2) simboli, ecc...
 *****
  ***
   *


Title: Re:Es.asterischi
Post by: rEDTUNING on 13-11-2011, 00:18:38
Sicuro che la progressione di asterischi (o comunque di simboli) vada letta, riga per riga, come incrementale di una sola unità .penso?
Te lo chiedo perché per disegnare quel "rombo" penso si utilizzi la console, che è una matrice rettangolare di caratteri, e purtroppo, proprio per tale reticolarità, non è possibile mostrare due simboli centrandoli entrambi sotto uno stesso simbolo.

Forse per caso la rappresentazione dovrebbe incrementare di 2? Ad esempio, così:

   *        1 simbolo
  ***       
3 (1+2) simboli
 *****     
5 (3+2) simboli
*******     
7 (5+2) simboli, ecc...
 *****
  ***
   *


Questo in effetti me lo chiedevo pure io, non ricordo il prof cosa di preciso avesse chiesto come esercizio, se lo ricordate scrivetelo qui


Title: Re:Es.asterischi
Post by: matteo on 14-11-2011, 11:29:15
io l'ho fatto pure.... spero che sia di aiuto... non dovrebbe essere troppo difficile... se lo eseguite con qualsiasi valore della variabile numero funziona correttamente. numero corrisponde al numero massimo di + che vengono stampati al centro.


public class eserciziopiufattodame
{
   public static void main(String[] args)
   {
      
   double riga,j,i,i1,i2,j1,j2,j3;
      
      
   double numero;
      
   
   riga = 1.0;
   numero = 17.0;   
   i=1;
   j= (numero/2)-0.5;
   i2 = (numero-2);
      j3=1;      
      while ((riga <= (numero/2)+0.5)){
      
         j1=j;
         while(j1>0){
            System.out.print("   ");
            j1--;
         }
         
         
         
         i1=i;
         while(i1>0){
            System.out.print("+");
            i1--;
         }
      
      j--;
      i=i+2;
      riga ++;
      System.out.print("\n");
      }
      
      while(riga<=numero){
         
         j2=1;
         while(j2<=j3){
            System.out.print("   ");
            j2++;
         }
         
         i1=1;
         while(i1<=i2){
            System.out.print("+");
            i1++;
         }
         j3++;
         i2=i2-2;
         riga++;
         System.out.print("\n");
      }
      
      
   }
}
   


Title: Re:Es.asterischi
Post by: LtWorf on 15-11-2011, 02:36:34
C'è un qualche motivo che mi sfugge per usare variabili double invece che interi?


Title: Re:Es.asterischi
Post by: matteo on 15-11-2011, 10:29:45
no nessun motivo... tranne per alcune variabili di cui eseguo la divisione... comunque ho notato che il mio programma su windows gira diversamente... diciamo che gli spazi li legge in maniera diversa quindi non prendetelo per buono... il l'ho compilato su ubuntu e mi funzionava bene... se riuscirò a risolvere lo posterò nuovamente..


Title: Re:Es.asterischi
Post by: LtWorf on 15-11-2011, 17:42:12
Probabilmente usi output su qualcosa con font a larghezza variabile. Per sbrigarmi io lo proverei sul terminale, che è a larghezza fissa.



Title: Re:Es.asterischi
Post by: Ocelot92 on 17-11-2011, 18:41:30
Vi consiglio di usare come IDE Geany o Netbeans così potete impostare il font "monospace". Su scite ai tempi non ci riuscii a farlo  .nono.

O se preferite usare Scite e Linux andate di terminale  :yoh


Title: Re:Es.asterischi
Post by: ɹǝǝuıƃuǝsɹǝʌǝɹ on 17-11-2011, 19:22:58
Per programmazione 1 io abolirei (leggasi sconsiglierei .arrossisco) l'uso degli IDE... poco istruttivi a mio avviso .penso...