Código C++:
Ver original} 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 originalint main()
{
//Declaración de variables
int liContador, laiNumeros[20];
//Procesamiento
for (liContador = 0; liContador < 20; liContador++)
{
int hayError = 0;
do
{
//Entrada de datos
printf("Ingrese #%d: ", liContador
+ 1); scanf("%d", &laiNumeros
[liContador
]);
hayError = (laiNumeros[liContador] > 10 || laiNumeros[liContador] < 1);
if ( hayError )
printf("\n\tError!, debe ingresar un valor entre 1 y 10.\n"); } while ( hayError);
}
//Salida de datos
return 0;
}
Un saludo