[ Foro de C# ]

Ejercicio 2.2.2.4

07-Feb-2016 18:30
jose ignacio vazquez
2 Respuestas

En este ejercicio se pide un identificador(1234) y una contraseña(1111).
No entiendo muy bien porque usando el operador && con que se cumpla solo una condicion la acepte, en lugar de esperar que se cumplan las dos.
En cambio si uso || tengo que cumplir las dos condiciones.
Este es el codigo que he escrito


int identificador;
            int clave;
            do
            {
                Console.WriteLine("Escribe el identificador:");
                identificador = Convert.ToInt32(Console.ReadLine());
                Console.WriteLine("Escribe la clave:");
                clave = Convert.ToInt32(Console.ReadLine());

            } while ((identificador != 1234) && (clave != 1111));
            Console.WriteLine("Adelante.");


 


07-Feb-2016 21:51
Nacho Cabanes (+84)

El que uses "y" o bien "no" es algo que depende de varios factores, como si la condición es un "mientras" o un "hasta" y de si cada condición particular es afirmativa o negativa. Por ejemplo, ese algoritmo se puede plantear de varias formas:

- hasta que contraseña = correcta y clave = correcta

- mientras que contraseña no sea correcta o clave no sea correcta

- mientras que no ocurra que (contraseña = correcta y clave = correcta)


Verás que tu planteamiento no es ninguno de esos, de modo que si tecleas bien el usuario pero mal la contraseña, parte de la condición es cierta y parte es falsa, la condición resultante (al estar unida con "y") es falsa... y deja de repetir (es decir, permites el acceso al usuario incorrecto).


08-Feb-2016 14:23
jose ignacio vazquez

Muchas gracias, veo que el problema estaba en mi razonamiento logico. Ahora ya lo he entendido.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)