Hola, estaba haciendo un programa el cual pedia insertar 10 numeros del 1 al 5, si el usuario insertaba un numero que no estaban dentro de ese rango, el programa en vez de pedir 10 pedia 9, y si insertaba otro, pedia 8, en otras palabras, lo contaba como ingresado.
Para solucionar esto, ingrese la siguiente linea:
while (n[j] != 1 || 2 || 3 || 4 || 5)
El problema esta, en que no funciona correctamente, nunca sale del bucle, entonces mi pregunta es:
¿Que es lo que le estoy diciendo que haga con esa linea?
¿Como puedo decirle que si n[j] no es 1 ni 2, ni 3, ni 4, ni 5, se ejecute el while?
Si saco el while, el codigo funciona bien y hace lo que tiene que hacer, pero lo dejo, por las dudas.
#include <stdio.h>
#define ENCUESTADOS 3
int main(){
int j;
int a=0;
int b=0;
int c=0;
int d=0;
int e=0;
int n[ENCUESTADOS];
int k[4];
printf("Inserte calidad 1,2,3,4,5 \n");
for(j = 0; j < ENCUESTADOS;j++)
{
scanf("%d",&n[j]);
while (n[j] != 1 || 2 || 3 || 4 || 5)
{
printf("%d",n[j]);
printf("inserte numero entre 1 y 5 \n");
scanf("%d",&n[j]);
}
}
for(j=0;j < ENCUESTADOS;j++)
{
switch(n[j]){
case 1:
a++;
break;
case 2:
b++;
break;
case 3:
c++;
break;
case 4:
d++;
break;
case 5:
e++;
break;
}
}
k[0] = a;
k[1] = b;
k[2] = c;
k[3] = d;
k[4] = e;
printf("Calificacion \t Personas \n");
for(j = 0; j < 5;j++)
{
printf("%d \t %d \n",j+1,k[j]);
}
return 0;
}
Saludos, feliz navidad!
El or es el último operador a evaluarse allí... así que primero ejecuta !=
Para el código simplemente compras 1 con n, el resto al no ser 0, son directamente true... tienes que comparar n con cada valor
Cita de: engel lex en 25 Diciembre 2016, 07:59 AM
El or es el último operador a evaluarse allí... así que primero ejecuta !=
Para el código simplemente compras 1 con n, el resto al no ser 0, son directamente true... tienes que comparar n con cada valor
Gracias, ahora entendi mejor lo que estaba haciendo mal. Comparando n con cada valor como dijiste, se resuelve. Gracias
while (n[j] != 1 && n[j] != 2 && n[j] != 3 && n[j] != 4 && n[j] != 5)
Esto es lo mismo que:
while(n[j] < 1 || n[j] > 5)