diff --git a/soluciones/05_Bucles/S05Ejercicio35.java b/soluciones/05_Bucles/S05Ejercicio35.java index bbc02e3..58a0169 100644 --- a/soluciones/05_Bucles/S05Ejercicio35.java +++ b/soluciones/05_Bucles/S05Ejercicio35.java @@ -11,64 +11,36 @@ public class S05Ejercicio35 { public static void main(String[] args) { - System.out.print("Por favor, introduzca la altura de la X: "); - int alturaIntroducida = Integer.parseInt(System.console().readLine()); + int altura; - int altura = 1; - int i = 0; - int espaciosInternos = alturaIntroducida - 1; - int espaciosPorDelante = 0; + do { + System.out.print("Por favor, introduzca la altura de la X: "); + altura = Integer.parseInt(System.console().readLine()); + + if (altura % 2 == 0 || altura < 3) { + + System.out.println("Datos incorrectos. Debe introducir una altura impar mayor o igual a 3."); + } + + } while (altura % 2 == 0 || altura < 3); - if ((alturaIntroducida < 3) || (alturaIntroducida % 2 == 0)) { - System.out.print("Datos incorrectos. Debe introducir una altura impar mayor o igual a 3."); - } else { - // parte de arriba ///////////////////////////////////// - while (altura < alturaIntroducida / 2 + 1) { - - // inserta espacios delante - for (i = 1; i <= espaciosPorDelante; i++) { - System.out.print(" "); - } - - // pinta la línea - System.out.print("*"); - for (i = 1; i < espaciosInternos; i++) { - System.out.print(" "); - } - System.out.print("*"); - System.out.println(); - altura++; - espaciosPorDelante++; - espaciosInternos -= 2; - } // while parte de arriba /////////////////////// - - // parte de abajo ///////////////////////////////////// - espaciosInternos = 0; - espaciosPorDelante = alturaIntroducida / 2; - altura = 1; - while (altura <= alturaIntroducida / 2 + 1) { - - // inserta espacios delante - for (i = 1; i <= espaciosPorDelante; i++) { - System.out.print(" "); - } - - // pinta la línea - System.out.print("*"); - for (i = 1; i < espaciosInternos; i++) { - System.out.print(" "); - } - - if(altura>1) { - System.out.print("*"); + + // Este bucle pinta las filas indicadas en la altura + for (int i = 1; i <= altura; i++) { + + // Este bucle pinta las columnas de cada fila + for (int j = 1; j <= altura; j++) { + + // Con un bloque IF indicamos cuando queremos un "_" o un "*" + if (j == i || j == altura + 1 - i) { + System.out.print("*"); + } else { + System.out.print(" "); + } + + } + System.out.println(); } - - System.out.println(); - altura++; - espaciosPorDelante--; - espaciosInternos+=2; - } // while parte de abajo /////////////////////// - } // else - } + } }