[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?
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);
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.