Ajuda ao Ordenar Vector

0 respostas
fajohann

Olá,

Estou fazendo um sistema simples de controle de encomendas por correio, contemplando cartas e pacotes.
Tais cartas e pacotes tem pesos e custos e devem ser adicionadas a um malote que permite agrupar os itens registrados até então em volumes, seguindo o critério de um volume ter no máximo 10 Kg. Esta classe então deve imprimir a listagem dos itens constantes em um ou mais volumes necessários para despachar estes pedidos, com o seguinte formato:

Volume #1
CartaSimples A B 0.1kg
CartaSimples E C 0.1kg
CartaRegistrada D B 0.1kg CR8216
PacotePadronizado B E 2.8kg T3 PP3121
PacotePadronizado A D 1.5kg T2 PP1329
PacoteGenerico C D 5.4kg 21x34x78 PG0012
peso total = 10kg
custo total = 23.5

Volume #2
PacotePadronizado D B 1.6kg T2 PP8121
PacoteGenerico C D 3.0kg 20x40x20 PG1245
PacoteGenerico E C 3.7kg 30x30x30 PG7625
PacotePadronizado A D 0.7kg T1 PP0263
peso total = 9kg
custo total = 31.6

O meu método para gerar tal implementação é :

public void organizarVolumes() throws MaloteEx
  {
    int n = itens.size();
    if (n == 0)
      throw new MaloteEx();
    else{
      System.out.println("Volume#1 ");
      Item i = itens.get(0);
      System.out.println(i);
      pesototal = pesototal + i.obterPeso();
      custototal = custototal + i.obterCusto();
      for (int cont = 1; cont < n; cont++){
        if (pesototal <= 10){
          
          i = itens.get(cont);
          pesototal = pesototal + i.obterPeso();
          custototal = custototal + i.obterCusto();
        }
        if (pesototal >= 10.0){
          
          //aux = pesototal;
          pesototal = pesototal -i.obterPeso();
          custototal = custototal -i.obterCusto();
          System.out.println("Peso total : " + pesototal  + " Kg" );
          System.out.println("Custo total : " + custototal);
          custototal = i.obterCusto();
          pesototal = i.obterPeso() ;
          System.out.println();
          System.out.println("Volume#02" ) ;
         }
         System.out.println(i);
         custototal = custototal + i.obterCusto(); 
      }
      System.out.println("Peso total : " + pesototal + " Kg");
      System.out.println("Custo total : " + custototal);
    }
  }

Este método despacha os volumes nesse formato :

Volume#1
CartaSimples A B 0.1Kg 0.16
CartaSimples D E 0.1Kg 0.04
Carta Registrada D B 0.1Kg CR6614
CartaSimples E C 0.1Kg 0.12
Carta Registrada E A 0.1Kg CR8863
Pacote Padronizado B E 2.8Kg T3 PP7667
Pacote Padronizado A D 1.5Kg T2 PP1607
Peso total : 4.79 Kg
Custo total : 90.67

Volume#02
Pacote Generico C D 5.4Kg 21x34x78 PG6156
Pacote Padronizado D B 1.6Kg T2 PP7064
Peso total : 7.0 Kg
Custo total : 118.6

Volume#02
Pacote Generico C D 5.4Kg 20x40x20 PG4700
Pacote Generico E C 3.7Kg 30x30x30 PG
Pacote Padronizado A D 0.7Kg T1 PP
Peso total : 9.8 Kg
Custo total : 177.24

[color=blue][size=18]A minha dúvida é como eu posso organizar os pesos pra que de algum modo os volumes ocupem o máximo do tamanho possível (<=10kg) fazendo assim com que eu use menos volumes ???? [/size][/color]

Se alguém souber, por favor manifeste-se.

Obrigado.

Criado 11 de abril de 2008
Respostas 0
Participantes 1