Java - PROBLEMA JAVA, TRIANGULO CON NUMEROS

 
Vista:

PROBLEMA JAVA, TRIANGULO CON NUMEROS

Publicado por Pepe (2 intervenciones) el 15/10/2022 17:26:34
Buenas, estoy en un curso de programacion y llevo horas haciendo bucles for para que me salga el ejercicio y no hay manera de que haga lo que necesito, solo me queda recurrir aqui, es necesario que sea con bucles for, paso a continuacion el enunciado y me piden la piramide de la siguiente manera:

/** Escribe un programa que lea un número e imprima dos triángulos de la forma
siguiente: (Bucle For)

a. Si n = 4

1
22
333
4444

1
22
333
4444
333
22
1 */


ayudenme porfavor, lo necesito
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

PROBLEMA JAVA, TRIANGULO CON NUMEROS

Publicado por Kabuto (1381 intervenciones) el 15/10/2022 18:30:46
Obviamente hay que usar dos bucles anidados.

Para el primer triángulo, basta con que el bucle "interno" use como límite de su índice, el valor del índice del bucle "externo".
Así, según el bucle externo va aumentando su indice;1, 2, 3 , 4,... hasta llegar al valor de n, pues el bucle interno irá imprimiendo el valor de ese índice y lo hará tantas veces como indique el valor de dicho índice.


El segundo triángulo es muy parecido, pero hay diferencias importantes.
El bucle externo primero ha de ir aumentando su índice, o sea, incrementar.
Y cuando su índice llegue al valor n, ahora ha de cambiar y comenzar a decrementar para invertir el proceso que ha estado siguiendo.

Por tanto, el bucle externo no va a a poder establecer ningún incremento o decremento por sí mismo.
Para decidir si está en proceso de incrementación o de decrementación, tendremos que apoyarnos en un boolean. Mientras este sea TRUE, haremos que el índice se incremente.
Cuando el índice alcance el valor de n, cambiaremos el valor del boolean a FALSE y ahora el índice se decrementará hasta llegar a 0, que será la condición que pondrá fin al bucle externo.

Así explicado puede ser un poco confuso, quizás viendo el código escrito, se entienda mejor.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public class TrianguloNum {
 
	public static void main(String[] args) {
 
		int n = 6;
 
		//Primer triangulo
		for (int i = 1; i <= n; i++) {
			for (int j = 0; j < i; j++ ) {
				System.out.print(i);
			}
			System.out.println();//Salto de línea
		}
 
		System.out.println("\n\t--------------------\n");
 
		//Segundo triangulo
		boolean incrementando = true;
		//Este for no altera su indice, el boolean anterior decide si se ha de incrementar o decrementar
		for (int i = 1; i > 0; ) {
			for (int j = 0; j < i; j++ ) {
				System.out.print(i);
			}
			System.out.println();//Salto de línea
			//Si la i ha alzando valor n, el triangulo ahora comienza a revertirse.
			if (i == n)
				incrementando = false; //A partir de ahora, la i se decrementará
			//El booolean nos dice si hay que incrementaro o no
			if (incrementando)
				i++;
			else
				i--;
		}
	}
 
}

Fíjate que en el caso del segundo triángulo, su bucle for externo solo tiene dos argumentos, en lugar de los tres habituales.
No tiene el típico i++ ni i--. Estos argumentos son opcionales y hay casos como este, donde nos interesa omitir el argumento que indica cómo ha de variar el índice, ya que esta variación va a depender de lo que nos diga el boolean.


Estas son las soluciones que se me han ocurrido a mí, puede que haya otras distintas e incluso más eficientes.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

PROBLEMA JAVA, TRIANGULO CON NUMEROS

Publicado por Pepe (2 intervenciones) el 15/10/2022 19:24:49
Gracias por la respuesta, como me lo has contado me ha parecido un pelin complejo pero leyendo el codigo lo voy comprendiendo, gracias por responder tan rapido, el programa va genial, gracias!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar