[C con Clase] Formato de fecha y simbolo !

Gastón Borysiuk gaston.borysiuk en gmail.com
Jue Jul 7 00:44:32 CEST 2011




No esta bien escrito el ejemplo pero en caso de que la contraseña sea
igual te va a decir que es incorrecta. Solo para que entiendas el
concepto.


No podes asignar un valor de cadena a un char a no ser que lo declares
como array ej char contrasena[] = "1234"

Luego no podes comparar así el char contra una cadena.

Por otro lado en caso de que la condición fuera if (!contraseña ==
"1234") /* aclaro lo del doble igual, no te olvides que sino harías algo
así como asignar un valor 1234 que seguido de eso le asigna un false a
un char jeje  obvio no te dejaría compilarlo por que esta mal escrito */

Pero volviendo al tema del !


es invertir lo que hace la condición


if (!pepe)
{
	se ejecuta en caso de que pepe sea falso
}
else
{
	se ejecuta en caso de que pepe sea verdadero
}


if (pepe)
{
	se ejecuta si pepe es verdadero
}
else
{
	se ejecuta si pepe es falso
}


Básicamente para los true y false se aplican bien.



Luego si miras en algún manual de C++ o en la web de la lista mira las
condiciones.

if (condicion)
{
	esto se ejecuta si es verdadero
}
else
{
	esto se ejecuta si es falso
}


Por ejemplo en el caso de comparar un string

string contrasena = "1234";

if (contrasena == "1234")
{
	//	verdadero
	cout << "La contraseña es correcta" << endl;
}
else
{
	//falso
	cout << "La contraseña es inválida" << endl;
}


En cambio con el operador

string contrasena = "1234";

if (!(contrasena == "1234"))
{
	cout << "La contraseña es inválida" << endl;	
}
else
{
	cout << "La contraseña es válida" << endl;
}


Ok por partes, vos decis contrasena es igual a 1234 y la estas
comparando con 1234, entonces la condición de la comparación entre
contrasena y 1234 es verdadera PERO al poner el ! negas o invertis la
condición. sería algo así para que veas como se interpretaría con el !
delante.

Sería lo mismo que hacer algo así:

if (contrasena != "1234")
{
	cout << "La contraseña no es válida" << endl;
}
else
{
	cout << "la contraseña es inválida << endl;
}



No hace esto obviamente pero sería la explicación  mas sencilla para el
caso.



Espero que te haya ayudado un poco jeje.





El mié, 06-07-2011 a las 21:14 +0200, Antonio Cascales escribió:
> Hola:
>  
>    me parece que ya entiendo el concepto, asociandolo a la
> expresión... "si * no..." Por ejemplo:
>  
> char contraseña = "1234";
>  
> if (!contraseña = "1234")
> {
> printf("La contraseña es incorrecta.\n");
> else
> printf("¡Contraseña correcta! Accediendo al programa...\n");
> }
>  
>    Lo que querría decir... Si la contraseña no es 1234, te doy el
> mensaje que la contraseña es incorrecta, si lo es, te dejo accceder al
> programa. ¿no?
>  
>    Espero haberlo entendido. Muchas gracias por la ayuda. Un saludo,
>  
>          Antonio
>  
>         ----- Original Message ----- 
>         From: carlos loureda parrado 
>         To: Lista de correo sobre C y C++ 
>         Sent: Wednesday, July 06, 2011 6:27 PM
>         Subject: Re: [C con Clase] Formato de fecha y simbolo !
>         
>         
>         Se me fue la olla en la ultima linea: " ... numeros menores de
>         1 o mayores de 9".
>          Perdón
>         
>         El 6 de julio de 2011 18:24, carlos loureda parrado
>         <balanzeneto en gmail.com> escribió:
>                 Buenas con lo de la fecha no te puedo ayudar porque ni
>                 me suena esa función, soy novatillo sorry. con
>                 respecto al ! que ya te respondia josep te pongo algún
>                 ejemplo por si no lo acabas de entender.
>                 
>                 -> Primero en C/C++ se considera por convenio que un
>                 valor es CIERTO si es != 0 y FALSO  si su valor es =
>                 0. 
>                 Supongo que tu los ifs los haces de la siguiente
>                 manera:
>                 
>                 int x = 2;
>                 
>                 if( 0 == x) cout<<"x vale 0";
>                 else cout<<"valor de x: "<<x;
>                 
>                 --->  Pero si usas solo if( x ) o if ( ! x) estas
>                 expresiones tambien son válidas:
>                 
>                 if( x ) se cumplirá siempre que X sea CIERTO, y como
>                 hemos dicho esto por norma es cuando su  valor sea !=
>                 0.
>                 if ( ! x) se cumplirá siempre que X sea falso, es
>                 decir cuando X valga 0. Así el ejemplo anterior lo
>                 podrías poner así:
>                 
>                 int x = 2;
>                 
>                 if( !x) cout<<"x vale 0";
>                 else cout<<"valor de x: "<<x;
>                 
>                 -> Una vez que entiendas esto te veras negando
>                 expresiones complejas sin darte cuenta: Ejemplo:
>                 
>                 !(x > 0 && x < 10) es equivalente a (x <= 0 || x >=
>                 10). Porque lo que queremos son numeros que NO estén
>                 entre 1 y 9, o lo que es lo mismo numeros menores de 1
>                 o mayores de 10.
>                 
>                 Un saludo!
>                 
>                 El 6 de julio de 2011 01:17, Antonio Cascales
>                 <antonio.cascales en gmail.com> escribió:
>                         
>                         Hola a todos:
>                          
>                            Muchas gracias por los diferentes mensajes
>                         con las respuestas, ya parece que empiezo a
>                         entender los conceptos de arrays y punteros,
>                         aunque hasta que no haga algunos ejemplos,
>                         practique un poco, y vea que me salen bien, no
>                         podré decir que lo tengo dominado.
>                          
>                            ahora me gustaría haceros una preguntita no
>                         muy complicada. He visto un ejemplo,
>                         relativamente sencillo para mostrar la fecha
>                         actual, pero me surge un inconveniente, y es
>                         que cuando voy a mostrarla con asctime(fecha),
>                         me la muestra con el formato inglés, y yo
>                         quiero modificar el formato, para que me diga
>                         por ejemplo, Miércoles 6 de Junio de 2011.
>                         ¿podéis indicarme de que manera podría
>                         hacerlo?
>                          
>                            Y otra consultita, bastante sencilla pero
>                         que no termino de entender, es el símbolo '!'
>                         cuando se utiliza en if, do-while, while, etc.
>                          
>                            Muchas gracias a quien responda. Un saludo,
>                          
>                                Antonio
>                          
>                         
>                         
>                         _______________________________________________
>                         Lista de correo Cconclase
>                         Cconclase en listas.conclase.net
>                         http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>                         Bajas:
>                         http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>                         
>                 
>         
>         
>         
>         
>         ______________________________________________________________
>         
>         _______________________________________________
>         Lista de correo Cconclase Cconclase en listas.conclase.net
>         http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>         Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ






Más información sobre la lista de distribución Cconclase