Ordenar 10 numeros em ordem crescente, e somar os 5 maiores números.... (sem utilizar vetor)

[size=12][size=18][b]Gostaria de resolver o seguinte problema:

Inserir 10 numeros em 10 variaveis distintas e ordenalas em ordem crescente e no fim mostrar a seguencia ordenada das variáveis e a soma dos cinco maiores números.

Obs: gostaria de resolver isso sem utilizar if, e nem vetores…

de preferencia utilizando while;[/b][/size][/size]

[quote=filipegpaulo][size=12][size=18][b]Gostaria de resolver o seguinte problema:

Inserir 10 numeros em 10 variaveis distintas e ordenalas em ordem crescente e no fim mostrar a seguencia ordenada das variáveis e a soma dos cinco maiores números.

Obs: gostaria de resolver isso sem utilizar if, e nem vetores…

de preferencia utilizando while;[/b][/size][/size][/quote]

Sem if? Mas como você vai comparar dois números?

Você tá querendo fazer isso em Java ou em alguma linguagem funcional?

gostaria de resolver utilizando o while, mas não posso usar vetor…

se não tiver como pode ser utilizado o if sim mas não o vetor

estou a 2 meses tentando resolver isso mas é mto complicado…

obrigado

se a dificuldade é fazer sem vetor, faça com vetor usando o bubble sort e depois com o mesmo raciocínio faça sem usar vetor.

Bom, um jeito é:

Você faz o while variar de 1…10 e dentro do while vc faz uma porrada de ifs comparando: primeira variavel com segunda, segunda com terceira e assim sucessivamente.
Se na comparação, o valor a direita da comparação for menor que o da esquerda, vc faz a troca.

Assim vc conseguirá resolver o problema, mas sinceramente não vejo muita lógica em resolver esse problema desta forma.

List<Integer> list = new ArrayList<Integer>;
while (list.size() < 10)
  list.add((int) Math.random() * 50);
Collections.sort(list);
System.out.println(list);

Tentei isso mas não funcionou:

[code]int cont = 0;

        while (cont < 10)
        {
            if (in1 > in2)
            {
                continue;
                
            }
            else { in1 = in2; }
            //....................
            if (in2 > in3)
            {
                continue;

            }
            else { in2 = in3; }
            //......................
            if (in3 > in4)
            {
                continue;

            }
            else { in3 = in4; }
            //........................
            if (in4 > in5)
            {
                continue;

            }
            else { in4 = in5; }
            //......................
            if (in5 > in6)
            {
                continue;

            }
            else { in5 = in6; }
            //.......................
            if (in6 > in7)
            {
                continue;

            }
            else { in6 = in7; }
            //......................
            if (in7 > in8)
            {
                continue;

            }
            else { in7 = in8; }
            //........................
            if (in8 > in9)
            {
                continue;

            }
            else { in8 = in9; }
            //........................
            if (in9 > in10)
            {
                continue;

            }
            else { in9 = in10; }
            //.......................
            if (in10 > in1)
            {
                continue;
            }
            else { in10 = in1; }





            cont = cont + 1;

}

System.out.println (“A seguencia é:” + in1 + ", " + in2 + ", " + in3 + ", " + in4 + ", " + in5 + ", " + in6 + ", " + in7 + ", " + in8 + ", " + in9 + ", " + in10); [/code]

oque será que há de errado?

[color=red]Evite duplicar posts.[/color]

http://www.guj.com.br/posts/list/199948.java#1006295

Acho o problema bem inútil na prática, mas vai lá um modelo:

      int i1 = 5;
      int i2 = 1;
      int i3 = 4;
      int i4 = 3;
      int i5 = 2;
      
      int aux = 0;

      while (i1 > i2 || i2 > i3 || i3 > i4 || i4 > i5)
      {
         aux = i4;
         i4 = i5;
         i5 = aux;
         
         while (i1 > i2 || i2 > i3 || i3 > i4)
         {
            aux = i3;
            i3 = i4;
            i4 = aux;
            
            while (i1 > i2 || i2 > i3)
            {
               aux = i2;
               i2 = i3;
               i3 = aux;

               while (i1 > i2)
               {
                  aux = i1;
                  i1 = i2;
                  i2 = aux;
               }
            }
         }
      }
      
      System.out.println(i1);
      System.out.println(i2);
      System.out.println(i3);
      System.out.println(i4);
      System.out.println(i5);

Ou fazer com listas ligadas circulares:

   public class No
   {
      public int valor;
      public No prox;
      
      public No (int valor, No prox)
      {
         this.valor = valor;
         this.prox = prox;
      }
   }
[/code][code]
      No n5 = new No(2, null);
      No n4 = new No(4, n5);
      No n3 = new No(1, n4);
      No n2 = new No(3, n3);
      No n1 = new No(5, n2);
      n5.prox = n1;
      
      No head = n1;
      No curr = head.prox;
      
      while (curr.prox != head)
      {
         while (curr.prox != head && curr.valor > curr.prox.valor)
         {
            int aux = curr.valor;
            curr.valor = curr.prox.valor;
            curr.prox.valor = aux;
            
            curr = head;
         }
         
         curr = curr.prox;
      }
      
      curr = head;
      System.out.println(curr.valor);
      
      while (curr.prox != head)
      {
         System.out.println(curr.prox.valor);
         curr = curr.prox;
      }

De qualquer forma, sem vetores nem ifs.

Edit: O método acima só funciona para mais que dois valores.