elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Como colocar OR dentro de un while de diferencia
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como colocar OR dentro de un while de diferencia  (Leído 2,392 veces)
Naimaderis

Desconectado Desconectado

Mensajes: 74



Ver Perfil
Como colocar OR dentro de un while de diferencia
« en: 25 Diciembre 2016, 07:33 am »

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:

Código
  1. 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.

Código
  1. #include <stdio.h>
  2.  
  3. #define ENCUESTADOS 3
  4.  
  5. int main(){
  6.  
  7.    int j;
  8.    int a=0;
  9.    int b=0;
  10.    int c=0;
  11.    int d=0;
  12.    int e=0;
  13.    int n[ENCUESTADOS];
  14.    int k[4];
  15.  
  16.    printf("Inserte calidad 1,2,3,4,5 \n");
  17.  
  18.    for(j = 0; j < ENCUESTADOS;j++)
  19.    {
  20.        scanf("%d",&n[j]);
  21.  
  22.        while (n[j] != 1 || 2 || 3 || 4 || 5)
  23.        {
  24.            printf("%d",n[j]);
  25.            printf("inserte numero entre 1 y 5 \n");
  26.            scanf("%d",&n[j]);
  27.        }
  28.    }
  29.  
  30.    for(j=0;j < ENCUESTADOS;j++)
  31.    {
  32.        switch(n[j]){
  33.  
  34.        case 1:
  35.        a++;
  36.        break;
  37.  
  38.        case 2:
  39.        b++;
  40.        break;
  41.  
  42.        case 3:
  43.        c++;
  44.        break;
  45.  
  46.        case 4:
  47.        d++;
  48.        break;
  49.  
  50.        case 5:
  51.        e++;
  52.        break;
  53.  
  54.        }
  55.    }
  56.  
  57.    k[0] = a;
  58.    k[1] = b;
  59.    k[2] = c;
  60.    k[3] = d;
  61.    k[4] = e;
  62.  
  63.    printf("Calificacion \t Personas \n");
  64.  
  65.    for(j = 0; j < 5;j++)
  66.    {
  67.        printf("%d \t %d \n",j+1,k[j]);
  68.    }
  69.  
  70.    return 0;
  71. }
  72.  
  73.  

Saludos, feliz navidad!


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Como colocar OR dentro de un while de diferencia
« Respuesta #1 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


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Naimaderis

Desconectado Desconectado

Mensajes: 74



Ver Perfil
Re: Como colocar OR dentro de un while de diferencia
« Respuesta #2 en: 25 Diciembre 2016, 20:57 pm »

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
Código
  1. while (n[j] != 1 && n[j] != 2 && n[j] != 3 && n[j] != 4 && n[j] != 5)
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Como colocar OR dentro de un while de diferencia
« Respuesta #3 en: 25 Diciembre 2016, 22:14 pm »

Esto es lo mismo que:
Código
  1. while(n[j] < 1 || n[j] > 5)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines