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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Resuelto] Problema con while (Loop)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Resuelto] Problema con while (Loop)  (Leído 2,977 veces)
jaxoR

Desconectado Desconectado

Mensajes: 93

?


Ver Perfil WWW
[Resuelto] Problema con while (Loop)
« en: 28 Abril 2014, 01:06 am »

Bueno, mi problema es que en esta sentencia se queda echo un loop, no importa si pongo S o N, repite infinitas veces lo mismo y no sale de ahí:

Código
  1. while((conf != 'S') || (conf != 'N') || (conf != 's') || (conf != 'n'))
  2.    {
  3.        printf("Desea realizar una operacion? - S/N\n");
  4.        scanf("%c", &conf);
  5.    }


« Última modificación: 28 Abril 2014, 03:28 am por wiD^ » En línea

nolasco281


Desconectado Desconectado

Mensajes: 319


Ver Perfil
Re: Problema con while (Loop)
« Respuesta #1 en: 28 Abril 2014, 01:12 am »

Hola creo que no es nesesario que pongas la N ni la n

Código
  1. while((conf != 'S') || (conf != 's'))
  2. {
  3.       printf("Desea realizar una operacion? - S/N\n");
  4.       scanf("%c", &conf);
  5. }

y cualquier letra distinta de S terminara el ciclo pudes probar. ya sea N o n.

ahora que me fijo si el usuario preciona s tiene que entrar si no tiene que salir

y tu primero debes de preguntar que desea hacer

ejemplo

Código
  1. printf("Desea realizar una operacion? - S/N\n");
  2.       scanf("%c", &conf);
  3.  
  4. while((conf = 'S') || (conf = 's'))       //No recuerdo si es asi o
  5. while((conf != 'S') || (conf != 's'))    //asi
  6. {
  7.     //Instruciones si es S
  8. }
  9.      //si es N continua nunca entra al while


aca esta tambien puedes usar un break para pararlo

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4. /* run this program using the console pauser or add your own getch, system("pause") or input loop */
  5.  
  6. int main(int argc, char** argv) {
  7.  
  8. char conf;
  9. cout << ("Desea realizar una operacion? - S/N\n");
  10. cin >> conf;
  11.  
  12. while(conf == 'S' || conf == 's')
  13.    {
  14.       cout << "hola";
  15.       break;
  16.    }
  17. return 0;
  18. }


« Última modificación: 28 Abril 2014, 01:27 am por nolasco281 » En línea

Lo que se puede imaginar... se puede programar.
jaxoR

Desconectado Desconectado

Mensajes: 93

?


Ver Perfil WWW
Re: Problema con while (Loop)
« Respuesta #2 en: 28 Abril 2014, 01:23 am »

No se supone que entra al while porque conf no tiene un valor igual a S o N? Y cuando se ingresa S o N sale del bucle?
En línea

nolasco281


Desconectado Desconectado

Mensajes: 319


Ver Perfil
Re: Problema con while (Loop)
« Respuesta #3 en: 28 Abril 2014, 01:38 am »

while((conf != 'S') || (conf != 'N') || (conf != 's') || (conf != 'n'))

Bueno, mi problema es que en esta sentencia se queda echo un loop, no importa si pongo S o N, repite infinitas veces lo mismo y no sale de ahí:

Claro segun entiendo yo le dice:

mientras conf !=  (<- negacion y asignacion) no sea S, s, n, N cualquier otra letra que tu pongas entrara al while

ya dentro del while te va a estar pidiendo esto infinitas veces por que nunca va salir

printf("Desea realizar una operacion? - S/N\n");
      scanf("%c", &conf);

recuerda que lo puedes controlar por centinela o por numero de veces que se repita.
En línea

Lo que se puede imaginar... se puede programar.
jaxoR

Desconectado Desconectado

Mensajes: 93

?


Ver Perfil WWW
Re: Problema con while (Loop)
« Respuesta #4 en: 28 Abril 2014, 01:44 am »

Claro pero porque cuando ingreso S y se almacena en conf, cuando va a comprobar el whiletendría que salir porque la variable tiene el valor S
En línea

noele1995

Desconectado Desconectado

Mensajes: 137



Ver Perfil
Re: Problema con while (Loop)
« Respuesta #5 en: 28 Abril 2014, 01:55 am »

Debes cambiar los or(||) por and (&&) asi si una se cumple se hace falso y sale del while.

Saludos
En línea

vangodp


Desconectado Desconectado

Mensajes: 455



Ver Perfil
Re: Problema con while (Loop)
« Respuesta #6 en: 28 Abril 2014, 02:51 am »

    while((conf != 'S') || (conf != 'N') || (conf != 's') || (conf != 'n'))
       {
           printf("Desea realizar una operacion? - S/N\n");
           scanf("%c", &conf);
       }

analicemos esto =D
(conf != 'S') || (conf != 'N') || (conf != 's') || (conf != 'n')

a ver... while necesita una condición verdadera para entrar en el bucle, vamos a ver si se da dicha condición...

Lo que intentas colar a while es(conf != 'S') || (conf != 'N') || (conf != 's') || (conf != 'n')...
que en lenguaje humano seria algo como:
mientras (conf no sea igual 'S') o (conf no sea igual 'N') o (conf no sea igual 's') o (conf no sea igual 'n') sera verdadero.

O sea que si conf tiene alguna de las letras n,N,s,S es falso por que lo que dices es que si conf es diferente de ellas sera verdad.
Ya falla la lógica
Para entrar en el bucle necesita ser verdad.

La mas lógica seria...

(conf == 's' || conf == 'S') || ( conf != 'n' || conf  != 'N' )

Esa seria la condición si la cabeza no me falla XDD

mientras (conf es igual a s o S sera verdad) o (conf sea diferente de n o N sera verdad).

si conf == n o N se rompe el bucle por que no debe ser igual según hemos dicho antes

interpretar el código bien te va ayudar mucho.

En línea

jaxoR

Desconectado Desconectado

Mensajes: 93

?


Ver Perfil WWW
Re: Problema con while (Loop)
« Respuesta #7 en: 28 Abril 2014, 03:27 am »

Debes cambiar los or(||) por and (&&) asi si una se cumple se hace falso y sale del while.

Saludos

Ahora funciona perfecto. Gracias a todos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con Do Loop
Programación Visual Basic
stork32 6 2,765 Último mensaje 22 Octubre 2008, 01:31 am
por seba123neo
[Autoit] Loop
Scripting
mubimeiquer 2 5,433 Último mensaje 13 Febrero 2009, 16:36 pm
por gna08
Problema con loop while « 1 2 »
Programación C/C++
miketru 10 5,868 Último mensaje 11 Septiembre 2010, 05:41 am
por miketru
Problema con loop
Programación C/C++
jaxoR 7 3,184 Último mensaje 2 Marzo 2014, 21:30 pm
por jaxoR
problema con el do while loop
Programación C/C++
josephb401 3 1,901 Último mensaje 4 Abril 2016, 19:03 pm
por crack81
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines