Ver Mensaje Individual
  #4 (permalink)  
Antiguo 07/03/2015, 20:54
RGT
Usuario no validado
 
Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 16 años
Puntos: 5
Pregunta Respuesta: Error usando FOR y Do-While anidados

Cita:
Iniciado por eferion Ver Mensaje
Código C++:
Ver original
  1. } while (laiNumeros[liContador] > 10 && laiNumeros[liContador] < 1)

fíjate que ese while se repetirá mientras el valor introducido sea mayor que 10 y menor que 1, algo que, obviamente, nunca va a suceder.

Tienes que cambiar ese and '&&' por un '||' para dejar la comparación exactamente igual a la que usas para sacar el mensaje de error.

Una forma de evitar este tipo de problemas es almacenar el resultado de la comparación en una variable. Así puedes reutilizar dicho resultado de forma sencilla:

Código C++:
Ver original
  1. int main()
  2. {
  3.     //Declaración de variables
  4.     int liContador, laiNumeros[20];
  5.  
  6.     //Procesamiento
  7.     for (liContador = 0; liContador < 20; liContador++)
  8.     {
  9.         int hayError = 0;
  10.         do
  11.         {
  12.             //Entrada de datos
  13.             printf("Ingrese #%d: ", liContador + 1);
  14.             scanf("%d", &laiNumeros[liContador]);
  15.  
  16.             hayError = (laiNumeros[liContador] > 10 || laiNumeros[liContador] < 1);
  17.             if ( hayError )
  18.                 printf("\n\tError!, debe ingresar un valor entre 1 y 10.\n");
  19.         } while ( hayError);
  20.     }
  21.  
  22.     //Salida de datos
  23.  
  24.     return 0;
  25. }

Un saludo
Hola, gracias por la ayuda amigo.
Otra cosa, sabes o alguien sabe como puedo hacer para saber qué número ha aparecido más veces?, no se me ocurre nada!.