Il secondo ciclo ho inserito 2 * n -1
ma mi stampa 5 righe lineari.
Ancora non comprendo
Grazie che mi stai aiutando.
import java.util.*;
public class CicloEs17 {
public static void main(String[] args) {
/*Si scriva un programma che chieda all'utente di inserire le dimensioni di un triangolo
* (un intero compreso tra 1 e 50). Si utilizza il triangolo mostrando righe di asterischi.
* La prima riga avrà un asterisco solo, la seconda due e cosi via; ciascuna riga avrà
* un asterisco in più della precendente fino a raggiungere il numero di righe indicato dall'utente.
* per le righe successive, il numero di asterischi per riga deve decrescere di uno per ogni nuova riga.
* Suggerimento: si usino dei cicli annidati; il ciclo più esterno deve controllare il numero di righe
* da scrivere, mentre il ciclo interno deve controllare il numero di asterischi da scrivere in una riga.
* per esempio scrive 3 l'output sarà:
*
* *
* **
* ***
* **
* *
*
* */
/*Chiaramente manca la parte del triangolo che "scende".
* Ma qui basterebbe un po' di "logica". Se per fare la prima parte che "sale" del triangolo
* ci vogliono N cicli principali (con input N), per fare anche la parte che scende ci vogliono
* 2*N-1 cicli. Ma devi anche determinare quando far incrementare e quando decrementare.
* Basta un test: se i <= N allora la i è appropriata per la salita.
* Altrimenti la lunghezza la calcoli diversamente:
Con input N = 3, hai tot cicli=3*2-1 = 5
Codice: Seleziona tutto
1 1
2 2
3 3
4 3-(4-3) = 2
5 3-(5-3) = 1
P.S. ma lo puoi anche fare più semplice: basta una variabile in più per la lunghezza.
Fino al ciclo N compreso la incrementi, altrimenti la decrementi.
Ancora più semplice che logiche matematiche con gli indici.*/
/*Una cosa semplice che si può fare:
Se in input hai 3, fai 3*2=6 e quindi realizzi un ciclo con indice che va da 1 (non 0) e si incrementa finché < 6. Pertanto avrai 1 2 3 4 5 (che sono appunto le cinque righe come nell'esempio.
Tieni un'altra variabile, inizialmente a 1. Questa la usi per il numero di asterischi nella riga. Poi ad ogni ciclo, finché l'indice è <= 3, la incrementi, altrimenti la decrementi. Con questo otterrai 1 2 3 2 1.
Ovviamente "generalizzalo" tu. ;)*/
Scanner tastiera = new Scanner(System.in);
int n = 0;
System.out.println("Inserire le dimensioni di un triangolo: ");
n = tastiera.nextInt();
if(n >= 1 && n <= 50){
for(int i = 1; i <= n; i++){ // Salita del triangolo, il ciclo esterno controlla il numero di righe Altezza
for(int j = 1; j <= 2 * (n - 1); j++ ){ //ciclo interno controlla il numero di colonne cresce di 1
System.out.print("*");
}
System.out.println(); // inizia una nuova riga Altezza di n
}
}
else {
System.out.println("Inserisci numero intero > 1");
System.exit(0);
}
}
}