Ver Mensaje Individual
  #2 (permalink)  
Antiguo 30/01/2016, 04:53
vizen
 
Fecha de Ingreso: enero-2014
Mensajes: 60
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: Hallar numero menor sin usar if ni case

hola jpaulxD, el problema lo llevas bien encaminado quizás faltaría saber que pasaría si hay valores repetidos

la variable de salida de bucle 'x' debes asignarle un cero antes de entrar en el bucle y no en la pregunta del while, ahí deberías comparar "==", no asignar '='

la variable menos no es necesaria pues ya sabes cuales son los mas altos, así te ahorrarías una asignación, una suma, y una resta además de la variable

cuando preguntas si hay otra forma ...

pues claro que hay, por ejemplo lo mismo con un for que se repita solo una vez
for(int i=0; i<1; i++){ ... }

otra forma de hacerlo es con el operador ternario '?' y te pongo el ejemplo:

Código c:
Ver original
  1. #include <stdio.h>
  2.  
  3. void main(){
  4.  
  5.    int n1, n2 ,n3, n4, promedio;
  6.  
  7.    printf("introduce 4 numeros separados por espacios:\n");
  8.    scanf("%i %i %i %i",&n1, &n2, &n3, &n4);
  9.  
  10.    (n1<=n2 && n1<=n3 && n1<=n4) ? (promedio=(n2+n3+n4)/3)              // el n1 queda último
  11.       : ((n2<=n1 && n2<=n3 && n2<=n4) ? (promedio = (n1+n3+n4)/3)      // el n2 queda último
  12.          :((n3<=n1 && n3<=n2 && n3<=n4) ? (promedio = (n1+n2+n4)/3)    // el n3 queda último
  13.             :(promedio = (n1+n2+n3)/3)));                              // el n4 queda último
  14.    printf("el promedio de los tres numeros mas altos es %i ", promedio);
  15. }

espero te sirva