Programming
T03-001-04 Dibujar cuadrados con funciones (opcional)
Enunciado
Queremos hacer un programa Java que dibuje cuadrados con caracteres.
Los cuadrados se dibujarán pintando el borde y el relleno o interior.
El borde puede pintarse usando un caracter distinto al caracter usado para el relleno o interior.
Los cuadrados pueden no tener relleno, con lo que solo se pintará el borde (el relleno se pintará con el caracter "espacio").
Los cuadrados puden no tener borde (realmente tendrán un borde transparente), con lo que solo se pintará el relleno (el borde se pintará con el caracter "espacio").
También puede haber cuadrados que no tengan ni borde ni relleno. Realmente tendrán un borde transparente. (Se pintará tanto el borde como el relleno con el caracter "espacio")
ATENCIÓN: Deberás buscar en StackOverflow cómo se puede leer un carácter de teclado con el Scanner.
ENTRADA
La entrada comienza con un número indicando cuántos casos de prueba habrá que procesar.
Cada uno de los casos estará en una línea con el siguiente formato:
- Un número entero que indicará el tamaño de los lados del cuadrado. Si el número introducido es menor de 2, entonces no se pintará el rectángulo.
- Un SI o un NO para indicar si se pinta el borde del cuadrado. Si es un SI, entonces a continuación vendrá el caracter que hay que utilizar para pintar el borde.
- Un SI o un NO para indicar si se pinta el relleno o interior del cuadrado. Si es un SI, entonces a continuación vendrá el caracter que hay que utilizar para pintar el relleno o interior.
SALIDA
Por cada caso de prueba, el programa pintará el cuadrado correspondiente.
Entre caso y caso se imprimirá CASO y el número del caso.
RESTRICCIONES
Deberá resolverse el problema diseñando una función (técnicamente un PROCEDIMIENTO) que reciba como entrada el tamaño del lado del cuadrado y el caracter que debe usarse para pintar el borde del cuadrado y el caracter que debe usarse para pintar el relleno del cuadrado. El procedimiento dibujará por pantalla el cuadrado del tamaño correspondiente usando los caracteres indicados.
Se proporcionan la cabecer o interfaz de dicha función en la sección MUST CONTAIN
Solución
import java.util.Scanner;
public class FDibujarCuadrado {
public static void main(String[] args) {
// TODO code application logic here
Scanner teclado = new Scanner(System.in);
int size;
char caracterBorde = '*';
char caracterRelleno = '+';
boolean tieneBorde = true;
boolean tieneRelleno = true;
String cadena;
int numCasos = 0;
numCasos = teclado.nextInt();
for (int i = 1; i <= numCasos; i++) {
System.out.println("CASO " + i);
size = teclado.nextInt();
cadena = teclado.next();
tieneBorde = (cadena.equals("SI"));
if (tieneBorde) {
caracterBorde = teclado.next().charAt(0);
} else {
caracterBorde = ' ';
}
cadena = teclado.next();
tieneRelleno = (cadena.equals("SI"));
if (tieneRelleno) {
caracterRelleno = teclado.next().charAt(0);
} else {
caracterRelleno = ' ';
}
dibujarCuadrado(size, caracterBorde, caracterRelleno);
}
}
public static void dibujarCuadrado(int tamLado, char borde, char relleno) {
if (tamLado > 1) {
for (int i = 0; i < tamLado; i++) {
for (int j = 0; j < tamLado; j++) {
if (i == 0 || i == tamLado - 1 || j == 0 | j == tamLado - 1) {
System.out.print(borde);
} else {
System.out.print(relleno);
}
}
System.out.println();
}
}
}
}
Input
10 2 SI - SI + 1 SI * SI * 3 NO NO 5 SI * NO 5 SI * SI * 5 NO SI - 6 SI 0 SI * 4 NO SI * 3 SI - NO 8 SI o NO
10 2 SI - SI + 1 SI * SI * 3 NO NO 5 SI * NO 5 SI * SI * 5 NO SI - 6 SI 0 SI * 4 NO SI * 3 SI - NO 8 SI o NO
Output
CASO 1 -- -- CASO 2 CASO 3 CASO 4 ***** * * * * * * ***** CASO 5 ***** ***** ***** ***** ***** CASO 6 --- --- --- CASO 7 000000 0****0 0****0 0****0 0****0 000000 CASO 8 ** ** CASO 9 --- - - --- CASO 10 oooooooo o o o o o o o o o o o o oooooooo
CASO 1 -- -- CASO 2 CASO 3 CASO 4 ***** * * * * * * ***** CASO 5 ***** ***** ***** ***** ***** CASO 6 --- --- --- CASO 7 000000 0****0 0****0 0****0 0****0 000000 CASO 8 ** ** CASO 9 --- - - --- CASO 10 oooooooo o o o o o o o o o o o o oooooooo

