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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Solucionado] Duda en operador ternario ?:
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Solucionado] Duda en operador ternario ?:  (Leído 3,366 veces)
Mario Olivera

Desconectado Desconectado

Mensajes: 108


Ser loco es pensar diferente.


Ver Perfil
[Solucionado] Duda en operador ternario ?:
« en: 21 Julio 2014, 04:22 am »

Hola gente, miren tengo una linea de codigo que la verdad no la entiendo mucho, si bien se como funciona el operador ?: y el sigo de modulo (%) no logró entender esta linea:

Código
  1. cout <<(cuenta % 2 ? "****" : "+++++") << endl;

ok, entiendo que si se cumple Cuenta % 2 se imprime **** de lo contrario se imprime +++++.....

Bueno tambien se que 10 % 5 el resultado es 0.

Lo que no entiendo de la linea es que pone a cuenta despues a modulo y el numero 2, o seria cuenta sobra 2 o seria cuenta % 2 sobra (y eso no lo dice), no se si entienden lo que explico que no entiendo... pero bueno me vendria de 10 que alguien me explique la instruccion..

Desde ya muchas gracias por cualquier ayuda recibida  ::)


« Última modificación: 21 Julio 2014, 17:21 pm por 718208 » En línea

diskontrol

Desconectado Desconectado

Mensajes: 89


RAWR!


Ver Perfil
Re: Duda en operador ternario ?:
« Respuesta #1 en: 21 Julio 2014, 08:07 am »

No se si es esto por lo que preguntas porque es un poco difícil entenderte.

Lo que hace es comprobar si el número es par  (cuenta % 2 = 0)  o impar (cuenta % 2 = 1) .


En línea

Siempre ten tus cosas cuando las necesites con @Dropbox. ¡Una cuenta de 2 GB es gratis! http://db.tt/YxRhsCI
eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Duda en operador ternario ?:
« Respuesta #2 en: 21 Julio 2014, 08:11 am »

"cuenta % 2" significa "cuenta MOD 2"... es decir, devuelve el módulo 2 del valor de "cuenta" o, dicho de otra forma, el resto de dividir "cuenta" entre 2. De esta forma sólo se pueden obtener dos resultados: 0 si "cuenta" es par y 1 si "cuenta" es impar.

Por tanto, si "cuenta" es par se imprime "+++++", mientras que si "cuenta" es impar, se imprime "****".
En línea

Mario Olivera

Desconectado Desconectado

Mensajes: 108


Ser loco es pensar diferente.


Ver Perfil
Re: Duda en operador ternario ?:
« Respuesta #3 en: 21 Julio 2014, 15:44 pm »

Muchas gracias por sus ayudas, con respecto a lo que me dijieron entendi, pero me  parecio muy raro que el programa sepa que si da cero se imprima algo y sino otra cosa cuando no se pasa ningun cero, si se pasa una cuenta a hacer pero nada mas :S

Saludos  :)
En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Duda en operador ternario ?:
« Respuesta #4 en: 21 Julio 2014, 16:09 pm »

Muchas gracias por sus ayudas, con respecto a lo que me dijieron entendi, pero me  parecio muy raro que el programa sepa que si da cero se imprima algo y sino otra cosa cuando no se pasa ningun cero, si se pasa una cuenta a hacer pero nada mas :S

Saludos  :)
Hola 718208, creo que no has entendido del todo lo que te han querido decir eferion y diskontrol. Para las condiciones en C no hay tipos booleanos como en C++ (es decir true o false) , por tanto digamos (mira el mensaje de eferion abajo) que el true en C es el número 1 y el false el 0. Por eso cuando tu en el operador ternario que indicas arriba pones por ejemplo el número 5:

5 mod 2 = 1

Entonces lo que tienes en el código realmente es:
Código
  1. cout << (5 mod 2 ? "****" : "++++") << endl;
Código
  1. cout << (1 ? "****" : "++++") << endl;

Como es 1 entonces ejecuta lo primero  e imprime "****", si fuese 6 mod 2 imprimiría lo segundo.

Gracias por la corrección eferion.
« Última modificación: 21 Julio 2014, 16:23 pm por avesudra » En línea

Regístrate en
eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Duda en operador ternario ?:
« Respuesta #5 en: 21 Julio 2014, 16:14 pm »

... por tanto digamos que el true en C es el número 1 y el false el 0.

Pequeño inciso al respecto: false es 0, cualquier otro valor será identificado como true

Código
  1. int main( )
  2. {
  3.  if ( 0 )
  4.    printf( "Este mensaje no sale nunca\n" );
  5.  
  6.  if ( 5 )
  7.    printf( "Este, en cambio, sale siempre\n" );
  8.  
  9.  if ( -4 )
  10.    printf( "Este otro tambien sale siempre\n" );
  11. }
En línea

Mario Olivera

Desconectado Desconectado

Mensajes: 108


Ser loco es pensar diferente.


Ver Perfil
Re: Duda en operador ternario ?:
« Respuesta #6 en: 21 Julio 2014, 17:17 pm »

Hola 718208, creo que no has entendido del todo lo que te han querido decir eferion y diskontrol. Para las condiciones en C no hay tipos booleanos como en C++ (es decir true o false) , por tanto digamos (mira el mensaje de eferion abajo) que el true en C es el número 1 y el false el 0. Por eso cuando tu en el operador ternario que indicas arriba pones por ejemplo el número 5:

5 mod 2 = 1

Entonces lo que tienes en el código realmente es:
Código
  1. cout << (5 mod 2 ? "****" : "++++") << endl;
Código
  1. cout << (1 ? "****" : "++++") << endl;

Como es 1 entonces ejecuta lo primero  e imprime "****", si fuese 6 mod 2 imprimiría lo segundo.

Gracias por la corrección eferion.


Gracias Avesudra  ;-)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con operador max(int,int); [Solucionado]
Java
Debci 2 2,898 Último mensaje 22 Mayo 2009, 15:37 pm
por Debci
duda sobre operador new
Programación C/C++
<[(x)]> 1 2,053 Último mensaje 19 Mayo 2011, 10:22 am
por willyhunting
(Solucionado) [Ruby] Duda sobre FOR con operador de rango
Scripting
Eleкtro 3 3,223 Último mensaje 24 Febrero 2012, 13:42 pm
por Eleкtro
[Ayuda] Operador ternario
Java
Senior++ 2 2,104 Último mensaje 13 Julio 2012, 15:24 pm
por Senior++
strcmp a mano // operador ternario // #define en lenguaje C
Programación C/C++
NOB2014 2 1,842 Último mensaje 29 Diciembre 2016, 14:21 pm
por NOB2014
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines