DESCARGAR
import java.util.Scanner;
/**
*
*/
public class Main {
/**
* Lee una colección de figuras con su identificador y sus medidas básicas asociadas
* por la entrada estándar y devuelve sus áreas y perímetros, en orden ascendente respecto
* a su identificador de figura.
*
* La entrada será de la forma siguiente
* <LetraTipoFigura> <número_identificativo_unico> <lista_medidas>
*
* donde <LetraTipoFigura> será una T por triángulo, una R por rectángulo y una C por círculo,
* <número_identificativo_único> será un número long único por cada figura, independientemente del
* tipo de figura que sea y <lista_medidas> serán tres números dobles para un triángulo, representando
* la longitud de sus tres lados, dos números dobles para un rectángulo, representando la longitud de
* sus lados y un único número para un círculo, representando la longitud del radio del círculo.
*
* La salida será una línea por cada figura de la entrada, ordenadas por su identificador único de la
* forma:
* <número_identificativo único> <perímetro_figura> <área_figura>
* donde tanto el perímetro como el área se darán con dos dígitos decimales.
* @param args
*/
public static void main(String[] args) {
Scanner lee = new Scanner(System.in);
ColeccionFiguras cf = new ColeccionFiguras();
while (lee.hasNext()){
String tipoFig = lee.next();
long id = lee.nextLong();
Figura f=null;
switch (tipoFig) {
case "T": f = new Triangulo(id, lee.nextDouble(), lee.nextDouble(), lee.nextDouble()); break;
case "R": f = new Rectangulo(id, lee.nextDouble(), lee.nextDouble()); break;
case "C": f = new Circulo(id, lee.nextDouble()); break;
}
cf.add(f);
}
cf.ordenaFiguras();
System.out.print(cf);;
}
}
public class Circulo extends Figura {
}
/**
* Clase que permite almacenar un conjunto de figuras y realizar algunas operaciones con la colección.
*
*/
public class ColeccionFiguras implements ListaFiguras{
}
/**
* Interfaz que declara un método para comparar dos figuras.
*/
public interface Comparable {
/**
* Compara según el orden definido por el identificador de una figura la figura this con la figura fig que se pasa como parámetro.
* @param fig Objeto Figura a comparar con this.
* @return Devuelve un -1 si this es menor que o, 0 si es igual, y 1 si es mayor.
*/
int comparaA(Figura fig);
}
/** Clase abstracta que representa figuras geométricas planas.
*
*/
public abstract class Figura implements Comparable{
protected long idFigura; //Identificador único de una figura
public long getIdFigura(){
return idFigura;
}
/**
* Calcula el área de una figura geométrica plana.
* @return El área en unidades de longitud al cuadrado.
*/
public abstract double area();
/**
* Calcula el perímetro de una figura geométrica plana.
* @return El perímetro en unidades de longitud al cuadrado.
*/
public abstract double perimetro();
}
/**
* Define un conjunto de operaciones para manipular una colección de figuras.
*/
public interface ListaFiguras {
/**
* Añade una figura a la colección.
* @param f La figura a añadir.
*/
void add (Figura f);
/**
* Ordena las figuras que pertenezcan al objeto de la clase que implementa el interfaz ListaFiguras.
* Después de llamar a éste método las figuras están en orden de menor a mayor respecto a su atributo
* identificador.
*/
void ordenaFiguras ();
}
public class Rectangulo extends Figura {
}
public class Triangulo extends Figura {
}