4.29 Escriba una aplicación que pida al usuario que introduzca el tamaño del lado de un cuadrado y que muestre un cuadrado hueco de ese tamaño, compuesto de asteriscos. Su programa debe funcionar con cuadrados que tengan lados de todas las longitudes entre 1 y 20.
_____________________________________________________________________________________
SOLUCIÓN: Este programa recibe cualquier entero como lado, por lo cual se debe de tener cuidado para que el tamaño no sea más grande que la pantalla.
Este código debe guardarse con el nombre UsaDeitel_4_29.java
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Este programa recibe un numero e imprime un cuadrado + + hueco de lado igual al numero recibido + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ public class UsaDeitel_4_29 { // Abre UsaDeitel_4_29 public static void main(String args[]) { // Abre main Deitel_4_29 miObjeto = new Deitel_4_29("Hola"); miObjeto.Recibe(); } // Cierra main } // Cierra UsaDeitel_4_29
Este archivo debe de guardarse con el nombre: Deitel_4_29.java
import java.util.Scanner; public class Deitel_4_29 { // Abre clase Deitel_4_29 private String mensaje; Scanner entrada = new Scanner(System.in); //////////////////////////////////////////////////////////////////////// //ABRE CONSTRUCTOR ////////////////////////////////////////////////////////////////////// public Deitel_4_29(String cadena) { // Abre constructor mensaje = cadena; } // Cierra constructor /////////////////////////////////////////////////////////////////////// //METODO RECIBE /////////////////////////////////////////////////////////////////////// public void Recibe() { // Abre metodo recibe int lado; // Se recibe el lado del cuadrado System.out.println("\nPor favor introduzca un numero entre 1 y 20 y se imprimira un cuadrado con ese numero de lado:"); lado = entrada.nextInt(); Imprime( lado); } // Cierra metodo recibe /////////////////////////////////////////////////////////////////////////// //METODO IMPRIME ////////////////////////////////////////////////////////////////////////// public void Imprime( int x) { // Abre el metodo Imprime int contadorHorizontal = 1; int contadorVertical = 2; while( contadorHorizontal++ <= x) { // Abre while System.out.print("*"); } // Cierra while System.out.print("\n"); // Aqui se cambia el valor de contadorHorizontal a 1, indicando que se esta en un nuevo renglon. contadorHorizontal = 1; while ( contadorVertical++ < x) // LOs limites van de 2( valor inicial) a // x-1, ya que enla primera y ultima linea se imprimen asteriscos { // Abre while que controla columnas while ( x >= contadorHorizontal) // Aqui se imprime el renglon { // Abre while anidado if ((1 == contadorHorizontal) || (x == contadorHorizontal)) System.out.print("*"); else System.out.print(" "); contadorHorizontal++; } // Cierra while anidado System.out.print("\n"); // con esto se cambia de renglon contadorHorizontal = 1; } // Cierra while contadorHorizontal = 1; while ( contadorHorizontal++ <= x) { // ABre while System.out.print("*"); } // Cierra while System.out.println("\n"); } // Cierra el metodo Imprime } // Cierra clase Deitel_4_29
Una ejecución de este programa es la siguiente:
Por favor introduzca un numero entre 1 y 20 y se imprimira un cuadrado con ese numero de lado: 8 ******** * * * * * * * * * * * * ********
_____________________________________________________________________________________
Esta entrada es parte de los problemas resueltos del libro Java. Cómo Programar de P. Deitel y H. Deitel
Entrada Anterior
Entrada Siguiente
yo tengo una version de mi propia autoria aun que el que me esta generando dificultad es el de conversion de binario a decimal
ResponderEliminarpublic void pintaCuadros()
ResponderEliminar{
int fila;
int Max;
int columna;
Scanner entrada = new Scanner(System.in);
System.out.print("Digite el lado del cuadrado [comprendido entre 1-20]: ");
fila = entrada.nextInt();
//valida el rango de entrada
if(fila >= 1 && fila <= 20)
{
// se asign fila a max ya que es el valor máximo
Max = fila;
while(fila>=1)
{
columna = 1;
//pinta los renglones
while(columna <= Max)
{
//se pintan el primer y el ultimo renglon del cuadro con puros asterirscos controlados por los saltos de línea
//por medio de la variable fila
if(fila == 1 || fila == Max)
{
System.out.print("*");
}
else // en caso contrario el control pasa a los renglones para pintar los asteriscos y los espacios en blanco
//por medio de la variable columna
{
//dado que el primer renglon ya fue llenado con asteriscos el siguiente renglon debera iniciar y finalizar con un asterisco
//y los demas espacios seran llenados con espacios en blanco
if(columna == 1 || columna == Max)
System.out.print("*");
else
System.out.print(" ");
}
++columna;
}
--fila;
System.out.println();
}
}
else
System.out.println("Error se introdujo un valor no válido");
}
Hola, disculpa, ¿me podrías explicar el programa más detalladamente? es que es parte de mi tarea y no entiendo muy bien.
EliminarPor fi.
Eliminar¡Hola, Edgar! Gracias por compartir tu programa. Con respecto al otro, al de la conversión de binario a decimal, te dejo éste a ver si te sirve: Decimal a Binario. Es un programa en lenguaje C, pero no es difícil de trasladar a java. Saludos.
ResponderEliminargracias por la ayuda la tomare en cuenta pero en el libro comentan que solo se utilize el operador % y la división sin utilizar arrays lo intentaré como lo plantea el libro y si lo logro lo comparto con ustedes
Eliminar