Ver Mensaje Individual
  #3 (permalink)  
Antiguo 06/03/2015, 00:53
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 10 años, 1 mes
Puntos: 204
Respuesta: Error usando FOR y Do-While anidados

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