Java - URGENTE. Arboles binarios!!!!

 
Vista:

URGENTE. Arboles binarios!!!!

Publicado por Emiliano (4 intervenciones) el 25/09/2006 18:27:02
Mi problema es el siguiente. Tengo que hacer un trabajo practico y me piden dos cosas que no me salen, les resumo lo que tengo

Clases:
* Equipo: "Codigo de Equipo, Descripción del Producto, Costo"
* Herramental: Hereda lo de equipo y tiene "Utilidad, Costo de accesorios, calcularGanancia(), toString()."
* Maquinaria: Hereda lo de Equipo y tiene "Tipo de maquinaria, dias de alquiler, Nombre de cliente, calcularGanancia() , toString()"
* Pañol: Arbol binario donde cada nodo tiene un Herramental o una Maquinaria, el cual tiene los metodos, "insercion, busqueda, toString, mostrarAlquiler(long codigoEquipo), calcularBalance() ".

El arbol y nodos son genericos. Creando un applet, tengo que mostrar todos los metodos implementados en pañol. Insersion, toString. Me salieron correctamente. Pero el problema es mostrarAlquier(long codigoEquipo) el cual tiene que retornar las ganancias obtenidas por el alquiler de la maquinaria pasada por parámetro y calcularBalance() que muestra las ganancias totales obtenidas en el periodo(o sea de todo el arbol). En el primer caso no se como resolverlo ya que debo recorrer el arbol comparando los valores de codigo de equipo, pero no se como hacerlo porque el compareTo que tengo lo hace con respecto a objetos de tipo Comparable. En el segundo caso no se como ir acumulando los valores del arbol con respecto a sus ganancias. (calcularGanancia() devuelve lo ganado por cada maquinaria/herramental)

Nota: SI hay algo que no se entienda avisenme que les mando el proyecto y lo ven. Please! lo tengo que hacer urgente, mientras mas rapido respondan mejor!!

Muchas gracias... Atte Emiliano-
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:URGENTE. Arboles binarios!!!!

Publicado por camus (240 intervenciones) el 25/09/2006 23:01:46
Hola, la verdad es dificil entender todo lo que necesitas, ademas de que el tema "ARBOLES" no cualquiera lo maneja y ni mucho menos hay muchos ejemplos, asi que seria mejor que postearas codigo donde tienes problemas, asi seria mas facil ayudarte.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:URGENTE. Arboles binarios!!!!

Publicado por Emiliano (4 intervenciones) el 25/09/2006 23:10:06
aca va el enunciado

Enunciado
Una empresa dedicada a la venta de herramientas para la construcción y alquileres de maquinarias pesadas para la construcción, solicita un sistema que permita obtener las ganancias obtenidas en un periodo de tiempo
Para ello usted cuenta con la siguiente jerarquía que representan a los elementos que vende la empresa:

-Equipo: que permite representar los datos relacionados a los elementos que vende o alquila le empresa, conteniendo los datos:
• Código de Equipo: que es generado automáticamente por el sistema
• Descripción del Producto
• Costo

-Herramental: es un equipo que incluye las siguientes propiedades
• Utilidad (Perforar, Remachar, etc).
• Costo accesorios
Y debe poseer las siguientes operaciones
• Constructores por defecto y con parámetros
• Constructor Copia
• calcularGanancia() que retorna el porcentaje en que se incrementa la herramienta si se incluyen los accesorios mas utilizados, se calcula sobre el 100 % que resulta de sumar el costo original mas el costo de los accesorios
• toString()

-Maquinaria: es un equipo que incluye las siguientes propiedades
• Tipo de maquinaria (1 – Cementera, 2 – Remolcadora, 3 – Tractores)
• Días de alquiles
• Nombre cliente
Y debe poseer las siguientes operaciones
• Constructores por defecto y con parámetros
• Constructor Copia
• calcularGanancia() que retorna el total de lo ganado por haber alquilado la maquinaria por n días (costo * n días)
• toString()

-Pañol: que esta representado por un árbol binario de búsqueda en donde cada nodo del mismo puede ser un herramental a vender o una maquinaria a alquilar. El cual será ordenado por el código del equipo. Se sabe que el pañol está conformado por 50 elementos-
Y debe poseer las siguientes operaciones:
• Constructores necesarios
• Métodos de inserción y búsqueda de un árbol binaria (usar recursividad)
• toString(), que muestre el contenido del pañol en forma ordenada.
• mostrarAlquiler(long codEquipo) que retorne las ganancias obtenidas por el alquiler de la maquinaria pasada por parámetro
• calcularBalance() que muestre las ganancias totales obtenidas en el periodo

Realizar una clase un applet (con los componentes gráficos que considere necesarios) que ejemplifique el uso de las clases, creando una instancia de la clase pañol y usando las funciones que allí se detallan
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:URGENTE. Arboles binarios!!!!

Publicado por Emiliano (4 intervenciones) el 25/09/2006 23:12:19
Me trabe en la clase pañol en los dos ultimos metodos. Estos van a ser llamados desde los botones "Buscar Pedido" y "Calcular Balance". Como no alcanzan los caracteres lo separo.

// CLASE EQUIPO

public abstract class Equipo implements Comparable{

private String desc;
private float cost;
private long codeq;
private static long code = 0;

public Equipo(){
desc = " ";
cost = 0;
codeq = ++code;
}

public Equipo(String desc, float cost, long codeq){
this.desc = desc;
this.cost = cost;
this.codeq = ++ code;
}

public Equipo(Equipo e){
desc = e.desc;
cost = e.cost;
codeq = e.codeq;
}

public float getCosto(){
return cost;
}

public void setCodEquipo(long ce){
codeq = ce;
}

public int compareTo(Object o){
if(o instanceof Equipo){
return (int)(codeq-((Equipo)o).codeq);
}
else{
return -1;
}
}

public String toString(){
String aux = "Descripcion: \t\t" + desc;
aux += "\nCosto: \t\t$" + this.getCosto();
aux += "\nCodigo de Equipo: \t" + codeq;
return aux;
}

}

//CLASE MAQUINARIA
public class Maquinaria extends Equipo{

private int tipmaq; //TIPO DE MAQUINA (1.2 o 3)
private int dias; //DIAS DE ALQUILER
private String nomcli; //NOMBRE DE CLIENTE

public Maquinaria(){
super();
tipmaq = 0;
dias = 0;
nomcli = " ";
}

public Maquinaria(String desc, float cost, long codeq, int tipmaq, int dias, String nomcli){
super(desc, cost, codeq);
this.tipmaq = tipmaq;
this.dias = dias;
this.nomcli = nomcli;
}

public Maquinaria(Maquinaria m){
super(m);
tipmaq = m.tipmaq;
dias = m.dias;
nomcli = m.nomcli;
}

public float calcularGanancia(){
return (super.getCosto() * dias);
}

public String toString(){
String aux = "\nMaquinaria:\n\n";
aux += super.toString();
aux += "\nTipo de maquina: \t" + tipmaq;
aux += "\nDias de alquiler: \t" + dias;
aux += "\nNombre de Cliente: \t" + nomcli;
aux += "\n---------------------------------------------------------------------------------------------------------";
return aux;
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:URGENTE. Arboles binarios!!!!

Publicado por Emiliano (4 intervenciones) el 25/09/2006 23:12:50
//CLASE HERRAMENTAL
public class Herramental extends Equipo{

private String util; //UTILIDAD
private float costacc; // COSTO DE ACCESORIOS

public Herramental(){
super();
util = " ";
costacc = 0;
}

public Herramental(String desc, float cost, long codeq, String util, float costacc){
super(desc, cost, codeq);
this.util = util;
this.costacc = costacc;
}

public Herramental(Herramental h){
super(h);
util = h.util;
costacc = h.costacc;
}

public float calcularGanancia(){
return (super.getCosto() + costacc);
}

public String toString(){
String aux = "\nHerramental:\n\n";
aux += super.toString();
aux += "\nUtilidad: \t\t" + util;
aux += "\nCosto de accesorios: \t$" + costacc;
aux += "\n---------------------------------------------------------------------------------------------------------";
return aux;
}
}

//CLASE PAÑOL
import java.lang.Comparable;

public class Pañol
{
protected Nodo raiz;

public Pañol(){
raiz=null;
}

public Comparable buscar(Comparable d){
Comparable aux=buscar(raiz,d);
return aux;
}

private Comparable buscar(Nodo p,Comparable d){
Comparable aux=null;
if (p!=null){
if (d.compareTo(p.getDato())==0){
return p.getDato();
}
else{
if (d.compareTo(p.getDato())<0){
aux=buscar(p.getIzq(),d);
}
else{
aux=buscar(p.getDer(),d);
}
}
}
return aux;
}

public boolean insertar (Comparable d){
if (buscar(d)==null){
raiz=insertar(raiz,d);
return true;
}
else{
return false;
}
}

private Nodo insertar(Nodo n,Comparable d){
if (n==null){
n=new Nodo(d);
}
else if(d.compareTo(n.getDato())<0){
n.setIzq(insertar(n.getIzq(),d));
}
else if(d.compareTo(n.getDato())>0){
n.setDer(insertar(n.getDer(),d));
}
return n;
}

private String posOrden(Nodo p){
String r = "";
if(p!=null){
r+=posOrden(p.getIzq());
r+=posOrden(p.getDer());
r+=p.toString();
}
return r;
}

public String posOrden(){
return posOrden(raiz);
}

public void calcularBalance(){

}

public void mostrarAlquiler(){

}


}

//CLASE NODO
public class Nodo implements Comparable{

private Comparable dato;
private Nodo izq;
private Nodo der;

public Nodo(Comparable d){
dato = d;
izq = null;
der = null;
}

public void setIzq(Nodo izq){
this.izq = izq;
}

public void setDer(Nodo der){
this.der = der;
}

public void setDato(Comparable dato){
this.dato = dato;
}

public Nodo getIzq(){
return izq;
}

public Nodo getDer(){
return der;
}

public Comparable getDato(){
return dato;
}

public int compareTo(Object o){
if (o instanceof Nodo){
Nodo n=(Nodo) o;
return dato.compareTo(n.getDato());
}
return -1;
}

public String toString(){
return dato.toString();
}
}

//APPLET EN EL CUAL SE INCIALIZA EL PROYECTO
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class Prueba extends JApplet
{
private Pañol equipos;
private JLabel lbTitulo;
private JTextArea txa;
private JButton btnBuscarPed;
private JButton btnMostrar;
private JButton btnInsertarH;
private JButton btnInsertarM;
private JButton btnCalcular;
private JScrollPane sp;

public void init(){

equipos = new Pañol();
getContentPane().setLayout(null);
getContentPane().setBackground(Color.GRAY);

//TITULO
lbTitulo = new JLabel(" ConZtruCCioN S.A.");
lbTitulo.setIcon(new ImageIcon("casco.gif"));
lbTitulo.setBounds(25,10,500,65);
getContentPane().add(lbTitulo);

//AREA TEXTO
txa = new JTextArea();
txa.setLineWrap(true);
txa.setWrapStyleWord(true);
txa.setEditable(false);
txa.setBackground(Color.lightGray);
txa.setForeground(Color.BLUE);
txa.setBorder(BorderFactory.createTitledBorder("Productos Vendidos/Alquilados"));
txa.setBounds(25,90,450,280);
getContentPane().add(txa);
sp = new JScrollPane(txa);

//BOTON MOSTRAR ARBOL
btnMostrar = new JButton("Actualizar Lista");
btnMostrar.setBounds(25,440,200,20);
getContentPane().add(btnMostrar);

//BOTON INSTERTAR Herramental
btnInsertarH = new JButton("Nuevo Herramental");
btnInsertarH.setBounds(25,470,200,20);
getContentPane().add(btnInsertarH);

//BOTON INSTERTAR Maquinaria
btnInsertarM = new JButton("Nueva Maquinaria");
btnInsertarM.setBounds(250,470,200,20);
getContentPane().add(btnInsertarM);

//BOTON CALCULAR
btnCalcular = new JButton("Balance General");
btnCalcular.setBounds(250,440,200,20);
getContentPane().add(btnCalcular);

//BOTON BUSCAR PEDIDO
btnBuscarPed = new JButton("Buscar Pedido");
btnBuscarPed.setBounds(325,400,130,20);
getContentPane().add(btnBuscarPed);

//ALGUNOS EQUIPOS CREADOS POR PARAMETROS
Herramental h = new Herramental("Lindo,de madera y metal, Medio caro.",100,0,"Martillar",10);
Maquinaria m = new Maquinaria("Puff, un espectaculo. Muy grande y nueva",100,0,2,10,"Pedro Sosa");
Herramental h2 = new Herramental("Pala de punta de metal. No se rompe nunca",250,0,"Cavar",130);
Maquinaria m2 = new Maquinaria("Montacargas,4 ruedas y un coso para cargar",1000,0,1,30,"Coco Loza");
boolean s1= equipos.insertar(h);
boolean s2= equipos.insertar(m);
boolean s3= equipos.insertar(h2);
boolean s4= equipos.insertar(m2);

//ESCUCHA
Escucha e= new Escucha();
btnMostrar.addActionListener(e);
btnInsertarH.addActionListener(e);
btnInsertarM.addActionListener(e);
} // Cierra init();

class Escucha implements ActionListener{
public void actionPerformed(ActionEvent e){
if(e.getSource()==btnMostrar){ //Muestra todos los pedidos
txa.setText(equipos.posOrden());
sp.setBounds(25,90,450,280);
getContentPane().add(sp);
}
if(e.getSource()==btnInsertarH){ //Inserta un nuevo Herramental y actualiza la lista
Herramental h = new Herramental("Tiene Mucho filo, nuevo",50,0,"Cerruchar",15);
boolean s= equipos.insertar(h);
txa.setText(equipos.posOrden());
sp.setBounds(25,90,450,280);
getContentPane().add(sp);

}
if(e.getSource()==btnInsertarM){ //Inserta una nueva Maquinaria y actualiza la lista
Maquinaria m = new Maquinaria("",200,0,3,15,"Claudio Fernandez");
boolean s2= equipos.insertar(m);
txa.setText(equipos.posOrden());
sp.setBounds(25,90,450,280);
getContentPane().add(sp);
}
if(e.getSource()==btnBuscarPed){
//aca se manda el mensaje para buscar un pedido
// que se pasa por parametro un codigo de equipo
}
if(e.getSource()==btnCalcular){

//calcular y retornar el valor balance
// del periodo. todos las ganancias del arbol.

}

}
}// Cierra Clase Escucha
} // Fin clase prueva (applet)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar