Ejercicio figuras

This commit is contained in:
PC de clase committed 2026-10-30 10:28:46 +01:00
1 parent 43d1b4d5a9
commit 9a436e8a70
1 file changed
+109
+109
View File
@@ -0,0 +1,109 @@
import java.util.*;
public class Metodos8 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int altura, anchura;
boolean terminar = false;
while(!terminar){
System.out.println("=== Menú de Figuras ===\n" +
"1. Rectángulo\n" +
"2. Triángulo\n" +
"3. Rombo\n" +
"0. Salir\n" +
"Elige una opción:");
int opt = leerEnteroPositivo(sc);
switch(opt){
case 1:
System.out.println("Introduce el ancho del rectángulo");
anchura = leerEnteroPositivo(sc);
System.out.println("Introduce la altura del rectángulo");
altura = leerEnteroPositivo(sc);
dibujarRectangulo(anchura, altura);
break;
case 2:
System.out.println("Introduce la altura del triangulo");
altura = leerEnteroPositivo(sc);
dibujarTriangulo(altura);
break;
case 3:
System.out.println("Introduce la altura del rombo");
altura = leerEnteroPositivo(sc);
if((altura & 1) != 1) {
System.out.println("ERROR: Es un numero impar");
continue;
}
dibujarRombo(altura);
break;
case 0:
return;
default:
}
}
sc.close();
}
private static void pintar(char c, int len){
for(int i = 0; i < len; i++) System.out.printf("%c", c);
}
private static void dibujarTriangulo(int altura){
int longitud = altura * 2 - 1;
for(int i = 0; i < altura; i++){
int asteriscos = i * 2 + 1;
int espacios = (longitud - asteriscos) / 2;
pintar(' ', espacios);
pintar('*', asteriscos);
System.out.println();
}
}
private static void dibujarRombo(int altura) {
int espacios = altura / 2;
int asteriscos = 1;
for (int i = 1; i <= altura / 2; i++) {
pintar(' ', espacios);
espacios--;
pintar('*', asteriscos);
asteriscos += 2;
System.out.println();
}
pintar('*', altura);
System.out.println();
asteriscos -= 2;
for (int i = 1; i <= altura / 2; i++) {
espacios++;
pintar(' ', espacios);
pintar('*', asteriscos);
asteriscos -= 2;
System.out.println();
}
}
private static void dibujarRectangulo(int anchura, int altura){
for(int i = 0; i < altura; i++) {
pintar('*', anchura);
System.out.println();
}
}
private static int leerEnteroPositivo(Scanner sc) {
boolean parar = false;
int n = -1;
while (!parar) {
try {
n = sc.nextInt();
} catch (Exception e) {
System.out.println("Numero invalido vuelve a insertar uno");
sc.nextLine();
continue;
}
if (n > 0) parar = true;
else System.out.println("Tiene que ser un numero positivo!");
}
sc.nextLine();
return n;
}
}