Duda con operados lógico y Do...While

Iniciado por petrusqui, 4 Mayo 2012, 17:26 PM

0 Miembros y 1 Visitante están viendo este tema.

petrusqui

Buenas,

Tengo una duda con los operadores && y ||. Por ejemplo:

1.
Código (cpp) [Seleccionar]
do
{

}while ((cerrar_ventana != 'N') || (cerrar_ventana != 'n'))


Este ejemplo tendria que evaluar cada uno de los operandos, mientras que uno de los dos sea verdadero se continuaria realizando el bucle.

2.
Código (cpp) [Seleccionar]
do
{

}while ((cerrar_ventana != 'N') && (cerrar_ventana != 'n'))


Este ejemplo tendria que evaluar cada uno de los oprandos, si los dos operandos dan como resultado verdadero se continuaria realizando el bucle.


Pues en hacer el programa me pasa justo lo contrario. ¿Mi duda lo que he dicho arriba esta bien o no? dejo como ejemplo este que es muy sencillo:
Código (cpp) [Seleccionar]

#include <iostream>
using namespace std;

int main(int argc, char const *argv[])
{
char cerrar_ventana = 's'; //Pide al usuario si desea cerrar la ventana

do
{
               cout << "Ejemplo" << endl;
cout << "Deseas realizar otra operación (S/N): ";
cin >> cerrar_ventana;
system("CLS");

} while (cerrar_ventana != 'N' && cerrar_ventana != 'n');
return 0;
}



Saludos, petrusqui.

Ferno

Lo que dijiste es correcto.
¿Qué programa no te funciona?

durasno

Hola! el primero esta bien, si cerrar_ventana es 'N' ó 'n' va a continuar en el bucle
El segundo siempre va a ser falso, ya que con el && estas haciendo que cerrar_ventana sea 'N' y 'n' pero es una variable, no puede tomar dos valores al mismo tiempo

Y en el programa a q te referis que hace lo contrario?? Para mi esta bien, si ingresas 'S' o 's' el bucle se sigue realizando, pero si ingresas 'N' o 'n' termina el programa

Por ahi te confundis xq justo tu variable se llama cerrar_ventana y lo que qres hacer es q cuando diga 'S' se cierre el programa...Generalmente la condicion se hace asi:
do
{

}while ((continuar == 'S') || (continuar == 's'))// continua mientras sea 'S' o 's'


Saludos
Ahorrate una pregunta, lee el man

petrusqui

Perdonad, me habia equivocado con los dos códigos del principio.

Y ya lo entendí, esqeu a veces llego a ser cortito jaja Como ponia solo una 'n' continuava siendo cierto ya que 'n' es diferente a 'N' y por eso si pongo && como un operndo es falso todo es falso y se para el bucle. Bueno, almenos he visto el error.


Gracias y saludos :D

s00rk

Usa si deceas la funcion tolower() , asi tu while seria solamente asi:

Código (cpp) [Seleccionar]

while (tolower(cerrar_ventana) != 'n');