El siguiente ejercicio fue propuesto en la asignatura Sistémico I del grado Técnico en Sistemas de la Universidad Politécnico Jaime Izasa Cadavid. El problema original dice:
Problema
Desarrollar un programa que solicite al usuario las dimensiones del lado de un cuadrado. Repetir este requerimiento hasta que el usuario lo estime. Luego imprima las dimensiones de los cuadrados que tengan un lado menor al promedio de los lados considerados. Como ejemplo considere:
Entre el lado de un Cuadrado: 3
Desea entrar el lado de otro Cuadrado(s/n): s
Entre el lado de un Cuadrado: 4
Desea entrar el lado de otro Cuadrado(s/n): s
Entre el lado de un Cuadrado: 6
Desea entrar el lado de otro Cuadrado(s/n): s
Entre el lado de un Cuadrado: 5
Desea entrar el lado de otro Cuadrado(s/n): n
Las propiedades de los cuadrados leidos son:
Cuadrado( lado 3 área= 9 Perímetro= 12)
Cuadrado( lado 4 área= 16 Perímetro= 16)
Cuadrado( lado 6 área= 36 Perímetro= 24)
Cuadrado( lado 5 área= 25 Perímetro= 20)
El promedio de las areas de los cuadrados es: 21.5
Las propiedades de los cuadrados con un area inferior a la media son:
Cuadrado( lado3 área= 9 Perímetro= 12)
Cuadrado( lado4 área= 16 Perímetro= 16)
Solución
Se implementan 3 clases: Cuadrado, Array_Cuadrado y Examen_Lista. La primera contiene todos los datos relacionados con un cuadrado, la segunda almacena los Cuadrados en un ArrayList y calcula las estadísticas necesarias. La última clase implemente un método de Array_Cuadrado.
Clase Cuadrado
public class Cuadrado {
// Private variable (Final significa que no se vuelve a cambiar una vez contruido).
private final int lado_;
// Constructor
public Cuadrado(int lado){
lado_ = lado;
}
// Methods
public int get_lado(){return lado_;}
public int Area(){return lado_ * lado_;}
public int Perimetro(){return 4 * lado_;}
}
Clase Array_Cuadrados
package examen_lista;
import java.util.Scanner;
import java.util.ArrayList;
public class Array_Cuadrados {
private ArrayList
private Scanner read_lado = new Scanner(System.in);
private Scanner read_answer = new Scanner(System.in);
private double promedio_areas;
private void WelcomeMsg(){
System.out.print("Entre el lado de un Cuadrado: ");
}
private void print_Cuadrados(){
System.out.println("Las propiedades de los cuadrados leidos son: ");
for(Cuadrado x : Cuadrados_Lista){
System.out.println("Cuadrado( lado "+ x.get_lado()+ " área= " + x.Area() + " Perímetro= " + x.Perimetro()+")");
}
System.out.println("El promedio de las areas de los cuadrados es: "+ promedio_areas);
}
// Promedio areas
private void Stat1(){
double accumulator = 0;
int n = 0;
for(Cuadrado x : Cuadrados_Lista){
accumulator += x.Area();
n += 1;
}
promedio_areas = accumulator / n;
}
// Imprime los cuadrados cuya area es inferior a la media
private void printStat2(){
System.out.println("Las propiedades de los cuadrados con un area inferior a la media son: ");
for(Cuadrado x : Cuadrados_Lista){
if(x.Area() < promedio_areas)
System.out.println("Cuadrado( lado"+ x.get_lado()+ " área= " + x.Area() + " Perímetro= " + x.Perimetro() + ")");
}
}
public void start(){
boolean test = true;
int lado;
String option;
while(test){
WelcomeMsg();
lado = read_lado.nextInt();
Cuadrado tmp = new Cuadrado(lado);
Cuadrados_Lista.add(tmp);
System.out.print("Desea entrar el lado de otro Cuadrado(s/n): ");
option = read_answer.next();
if(option.equals("n")){
Stat1();
print_Cuadrados();
printStat2();
test = false;
}
}
}
Array_Cuadrados(){
this.Cuadrados_Lista = new ArrayList
}
}
Main class
public class Examen_Lista {
public static void main(String[] args) {
Array_Cuadrados test = new Array_Cuadrados();
test.start();
}
}
No comments:
Post a Comment