Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: recostico en 27 Noviembre 2018, 19:18 pm



Título: Resolver C++
Publicado por: recostico en 27 Noviembre 2018, 19:18 pm
Indique  cuál seria la salida  que  se obtendría ejecutando el siguiente  trozo  de código  en  c++:
for  (int  i=1;  i++<10;  i++)  { (  (i  ==  5)?  cout<<  "Cinco":  cout  <<  i  <<  "");}
a)  0 2 4 6 8  b)  1 3  Cinco  7 9
c)  2 4 6 8 10  d)  1 3 5 7 9



Título: Re: Resolver C++
Publicado por: K-YreX en 27 Noviembre 2018, 19:23 pm
Como comprenderás el foro no está para que te hagamos la tarea.
Te recomiendo que comentes lo que entiendes tú de ese código y te podremos ayudar a entenderlo y resolverlo.


Título: Re: Resolver C++
Publicado por: Beginner Web en 29 Noviembre 2018, 00:57 am
La verdad que es medio raro eso, se la respuesta pero no se como es que el signo ? funciona en ese fragmento de codigo alguien sabe?
Por cierto una pista de la respuesta son numeros del mismo tipo... ;-)


Título: Re: Resolver C++
Publicado por: AlbertoBSD en 29 Noviembre 2018, 01:05 am
La verdad que es medio raro eso, se la respuesta pero no se como es que el signo ?

Es el Operador Ternario, es basicamente un mini if

Código
  1. char C = 'A';
  2. printf("%s\n",(C == 'A')? "Verdadero": "Falso");
  3.  

Se utiliza para realizar ciertas evaluaciones rapidamente.

De manera que te devuelve el primer valor el que esta antes del ":" si la evaluacion fue verdadera, encaso contrareo te devuelve lo que esta despues del ":"

Otro ejemplo seria:

Código
  1. char C = 'A',otro;
  2. otro = (C == 'A') ? 'q' : 'r' ;
  3.  


Saludos


Título: Re: Resolver C++
Publicado por: CalgaryCorpus en 29 Noviembre 2018, 01:37 am
Aunque un código así escrito compile, no es el más leible.
Una manera no tan obfuscada de escribirlo podría ser:


Código
  1. cout << ( (i == 5) ? "Cinco" : i ) << " ";


Título: Re: Resolver C++
Publicado por: Beginner Web en 29 Noviembre 2018, 03:16 am
Es el Operador Ternario, es basicamente un mini if

Código
  1. char C = 'A';
  2. printf("%s\n",(C == 'A')? "Verdadero": "Falso");
  3.  

Se utiliza para realizar ciertas evaluaciones rapidamente.

De manera que te devuelve el primer valor el que esta antes del ":" si la evaluacion fue verdadera, encaso contrareo te devuelve lo que esta despues del ":"

Otro ejemplo seria:

Código
  1. char C = 'A',otro;
  2. otro = (C == 'A') ? 'q' : 'r' ;
  3.  


Saludos
Ahh claro es por esto (int  i=1;  i++<10;  i++)  que i nunca va a valer 5 por lo tanto nunca se mostrara "Cinco" por pantalla, solamente el valor de i ya que i no cumple con esa condicion, gracias Alberto, ya lo entendí  :laugh:


Título: Re: Resolver C++
Publicado por: recostico en 29 Noviembre 2018, 06:56 am
Muchas gracias a todos, me parecía muy complejo y no llegaba a entenderlo.  ;-)