viernes, 11 de abril de 2014

Programame Ourense H (para modificar)

Este código no controla duplicados en las categorías, modificarlo para que si lo haga:

package h.presupuestos;
import java.util.Scanner;
import java.util.ArrayList;

public class HPresupuestos {

  
    public static void main(String[] args) {
       Scanner leo = new Scanner(System.in);
       String linea;
       String palabras [];
       Categoria leida;
       Empresa empGana,empActual;
      
        empGana= new Empresa();
        linea=leo.nextLine();
        while (!linea.equalsIgnoreCase("FIN")) {
            empActual = new Empresa(linea);
            linea=leo.nextLine();
            palabras=linea.split(" ");
            while (!(palabras[1].equals("0") && palabras[2].equals("0") && palabras[3].equals("0"))) {
                leida= new Categoria(palabras[0].charAt(0),Double.parseDouble(palabras[1]),Double.parseDouble(palabras[2]),Double.parseDouble(palabras[3]));
                empActual.pushCategoria(leida);
                linea=leo.nextLine();
                palabras=linea.split(" ");
            }
            if ((empGana.nombre.equals("primera") || empActual.getPresupuesto()<empGana.getPresupuesto()) ||(empActual.getPresupuesto()==empGana.getPresupuesto()&&empActual.getHoras()<empGana.getHoras()))
            {
               empGana=empActual;
              
            }
          
          
            linea=leo.nextLine();
        }
        System.out.println(empGana.nombre+" "+empGana.getHoras());
      
      
      
      
    }
}




class Categoria{
    private char letra;
    private double precio;
    private double horas;

    public Categoria(char letra,double horas,double precioHora,double materiales) {
        this.letra = letra;
        this.horas=horas;
        this.precio = calcularPrecio(horas,precioHora,materiales);
      
    }

    public double getHoras() {
        return horas;
    }
  
    private double calcularPrecio(double horas,double precioHora,double materiales)
    {
       return ((horas*precioHora)+materiales);
    }

    public char getLetra() {
        return letra;
    }

    public void setLetra(char letra) {
        this.letra = letra;
    }

    public double getPrecio() {
        return precio;
    }

  
}

class Empresa{
    public String nombre;
    ArrayList<Categoria> tareas;

    public Empresa(String nombre) {
        this.nombre = nombre;
        tareas = new ArrayList<>();
    }

    public Empresa() {
        nombre="primera";
      
    }
  
    public void pushCategoria(Categoria una){
        tareas.add(una);
    }
    public double getHoras(){
       double total=0;
              
        for (Categoria categoria : tareas) {
            total+=categoria.getHoras();
        }
        return total;
    }
    public double getPresupuesto(){
        double total=0;
              
        for (Categoria categoria : tareas) {
            total+=categoria.getPrecio();
        }
        return total;
      
      
    }
}