Ver Mensaje Individual
  #3 (permalink)  
Antiguo 30/01/2016, 05:00
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 10 años, 2 meses
Puntos: 204
Respuesta: Hallar numero menor sin usar if ni case

Hay varias formas de resolver el problema. Tirando de ingeniería puedes hacerte unas funciones tal que:

Código C:
Ver original
  1. int min(int a, int b)
  2. {
  3.   return b ^ ((a ^ b) & -(a < b));
  4. }
  5.  
  6. int max(int a, int b)
  7. {
  8.   return a ^ ((a ^ b) & -(a < b));
  9. }
  10.  
  11. void sort(int* first, int* second)
  12. {
  13.   int a = min(*first,*second);
  14.   int b = max(*first,*second);
  15.  
  16.  *first = a;
  17.  *second = b;
  18. }

Con esta función ya tienes todo lo necesario para trabajar. Sort va a dejar en el primer parámetro el número menor. Si llamas a sort con, por ejemplo, n3 y n4, n3 se quedará con el menor de los dos. Después comparas n2 y n3 y el menor se quedará en n2... Si consigues dejar el menor en, por ejemplo n1 simplemente tienes que preocuparte de calcular el promedio de n2, n3 y n4.

Un saludo
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.