Teste que somente os novatos conseguem resolver!

Boa Noite amigos, estive em uma entrevista… em um bate-papo bem descontraído, o entrevistador comentou sobre um problema, que somente os iniciantes em programação conseguiriam resolver. Até agora não consegui.

Segue abaixo a descrição:

Ordenar(crescente) 3 números que o usuário digita aleatoriamente, seguindo as regras abaixo:

1- Não é permitido utilizar condicionais(if…ou qualquer outra)

2- Não é permitido Looping(Do…while… ou qualquer outro)

Alguém consegue imaginar como isso pode ser feito???

Já estou quase achando que esse problema é semelhante ao “Par ou ímpar com o espelho, ter q dar número ímpar” uhahuauha

Mas… ele me disse: Por acaso você acha que o “If” foi desenvolvido com outro IF ???

Enfim, caso seja possível, me enviem o código !!!

Umas possibilidades…

usar o operador ? :

ou usar as funções Math.max, e Math.min

e um pouco de lógica hehe

tente ai, com essas dicas você resolve

fw

Pelo menos que eu lembre, o respectivo ao if no assemble é feito com uma comparacao, que basicamente continua executando a sequencia do código se a condição nao for satisfeita e da um salta, parecido com o goto, caso a questao seja satisfeita…

[quote=Dieval Guizelini]Umas possibilidades…

usar o operador ? :

ou usar as funções Math.max, e Math.min

e um pouco de lógica hehe

tente ai, com essas dicas você resolve

fw[/quote]

Acho que os método do Math.max e Math.min usam algum desvio internamente. Mas como tb o não especificou o problema, vai fundo…hehe

Olá senhores, seguindo a dica, segue abaixo:

Muito Obrigado, e em breve eu aviso se era desse jeito…rs

import javax.swing.JOptionPane;
import java.math.*;
public class Simples {
	public static void main(String[] args) {

		int a = 0;
		int b = 0;
		int c = 0;
		
		int pri = 0;
		int seg = 0;
		int ter = 0;


		
		a=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o Primeiro Numero: ","Captação de dados",JOptionPane.INFORMATION_MESSAGE));

		b=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o Segundo Numero: ","Captação de dados",JOptionPane.INFORMATION_MESSAGE));

		c=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o Terceiro Numero: ","Captação de dados",JOptionPane.INFORMATION_MESSAGE));

		int min=Math.min(a, b);
		pri = Math.min(min,c);
		
		int max = Math.max(a,b);
		ter = Math.max(max, c);
		
		seg = a + b + c;
		seg = seg - pri;
		seg = seg - ter;
		
		JOptionPane.showMessageDialog(null,"Primeiro: " + pri,"Números ordenados", JOptionPane.INFORMATION_MESSAGE);

		JOptionPane.showMessageDialog(null,"Segundo: " + seg,"Números ordenados", JOptionPane.INFORMATION_MESSAGE);

		JOptionPane.showMessageDialog(null,"Terceiro: " + ter,"Números ordenados", JOptionPane.INFORMATION_MESSAGE);
		
		
	}

}

Beleza,

foi isso que tinha pensado.

min(a,b,c) <= Soma(a,b,c)-min(a,b,c)-max(a,b,c) <= max(a,b,c)

Este tipo de problema é amplamente explorado em linguagens funcionais ou em clausulas de horn…

fw

Ps: quando postar código fonte no forum, use as tags [ code] … [/code ] elas irão produzir:

... // melhore a apresentação do seu código aqui no guj

As vezes é difícil pensar simples né??

rs…

Mas é isso ae… muito obrigado a todos…

solução tosca que nao usa max/min e obedece os requisitos:

	void ordenaTres (int a, int b, int c) {
		int menor, meio, maior;
		menor=meio=maior=0;
		boolean nada = false;
		
		nada = a > b && a > c && (maior = a) > 0;
		nada = b > a && b > c && (maior = b) > 0;
		nada = c > b && c > a && (maior = c) > 0;

		nada = a < b && a < c && (menor = a) > 0;
		nada = b < a && b < c && (menor = b) > 0;
		nada = c < b && c < a && (menor = c) > 0;
		
		nada = a < b && a > c && (meio = a) > 0;
		nada = b < a && b > c && (meio = b) > 0;
		nada = c < b && c > a && (meio = c) > 0;

		nada = a > b && a < c && (meio = a) > 0;
		nada = b > a && b < c && (meio = b) > 0;
		nada = c > b && c < a && (meio = c) > 0;
		
		System.out.print(menor + " " + meio + " " + maior + "\n");
	}

Essa do Sergio Lopes é boa, é quase como um IF, já que com o operador && ele não executa mais assim que achar um false…

Acho que é melhor que usando Math.min e Math.max.