Os dejo aquí este aporte mio sobre el operador condicional para que aprendaís puesto que poca gente lo usa, se puede deber a que muchos tutoriales no lo explican o directamente al poco uso.
#include <iostream>
using namespace std;
int main(int argc,char *argv[]){
string saludo=(9>28 && 2<9) ? "Hola" : "adios";
cout << saludo;
}
si la expresion primera es verdadera se asignara "hola" si no "adios"
Saludos
Se conoce mejor como operador ternario.
Saludos.
si es el operador ternario, en el codigo tenes un error el el cout ultimo las comillas. este operador es un operador de seleccion como if... else, podes usar los dos pero si es por un mensaje, podes usarlo después si es por una funcion con más codigo te recomiendo usar if....else
Cita de: Xafi en 17 Febrero 2013, 18:35 PM
Os dejo aquí este aporte mio sobre el operador condicional para que aprendaís puesto que poca gente lo usa, se puede deber a que muchos tutoriales no lo explican o directamente al poco uso.
Se agradece la intensión, pero ¿de dónde sacas que se usa poco?.
Por ejemplo:
http://foro.elhacker.net/programacion_cc/help_calcular_maximo_de_3_numeros_usando_funcion-t383403.0.html
Y si quieres el máximo de cuatro números introducidos separados por un espacio:#include <iostream>
#include <cstdio>
using namespace std;
main()
{
int a,b,c,d,mayor;
char ch,cad[100]/*= "17 32 15 27"*/;
cout <<"Introduzca cuatro numeros separados por un espacio:"<< endl;
gets (cad);
sscanf(cad, "%d%c%d%c%d%c%d",&a, &ch ,&b,&ch, &c,&ch, &d );
if ((a= a>b ? a:b)>(c= c>d ? c:d))
cout << a << endl;
else
cout << "mayor = " << c << endl;
return 0;
}
Y así un porrón de ejemplos que han salido ya.
Saluditos!.
P.D: Te doy la razón en el nombre: operador condicional.
pues un monton de códigos que descargo y veo nunca los veo
xDD
El objetivo es q8ue lo vea los nuevos programadores!
Saludos
@Xafi se agradece el esfuerzo, pero te podias haber explayado un poco mas y haber puesto mas ejemplos, sobre todo para los que empiezan.
Pero de buen rollo xD
Ya pero con eso supongo que es suficiente desde mi punto de vista solo hace falta desarrollar el condicional y luego a la parte izquierda es el valor si la condicion es cierta, la de la derecha es falsa.
En el libro que estoy leyendo de C++ lo menciona una vez y lo deja en el olvido, yo lo veo como una herramienta muy útil a la hora de programar, gracias por el aporte.
Saludos
Yo lo uso mucho para hacer funciones de 1 sola linea.
Pues a mi no me gusta nada, en muchos libros recomiendan no utilizarlo porque hace más confusa la sintaxis del código. Por eso muchos libros tan solo lo mencionan o lo pasan por alto, como el goto.
Saludos.
creo que no podemos comparar esto con el goto.
Cita de: Xafi en 19 Febrero 2013, 16:26 PM
creo que no podemos comparar esto con el goto.
+1
Creo que no se necesita mucha programacion con este condicional (ternario), tan solo un poco de practica:
if (Numero > 2) return 0;
else return 1;
Esto es lo mismo que:
(Numero > 2) ? return 0 : return 1;
Pseudocódigo para ambos:
Si ('Numero' es_mayor_a '2') Entonces_Hacer Devolver 0;
De_Otro_Modo Entonces_Hacer Devolver 1;
Cita de: bemone en 19 Febrero 2013, 01:34 AM
Yo lo uso mucho para hacer funciones de 1 sola linea.
Por ej:
bool esPar(int a){
return a%2 == 0 ? true : false;
}
tiene mucho potencial xD
lo que pasa es que los fieles de poca fe tienen miedo a aprender cosas diferentes y se rehúsan a usar el ternario :P yo lo uso mucho... aunque una vez vi en un sistema como 8 ternarios anidados y eso si es exageración ya
Cita de: Khronos14 en 19 Febrero 2013, 14:21 PM
en muchos libros recomiendan no utilizarlo porque hace más confusa la sintaxis del código. Por eso muchos libros tan solo lo mencionan o lo pasan por alto, como el goto.
Si se utiliza con sentido común el operador ternario hace mas fácil el seguimiento del código fuente. Las buenas costumbres recomiendan enfatizar la selección: de un valor con ese operador y de una sentencia o bloque mediante las sentencias condicionales.
Cita de: Miky Gonzalez en 19 Febrero 2013, 17:30 PMCreo que no se necesita mucha programacion con este condicional (ternario), tan solo un poco de practica:
if (Numero > 2) return 0;
else return 1;
Esto es lo mismo que:
(Numero > 2) ? return 0 : return 1;
No. Ese operador requiere de dos expresiones como sus operandos y del mismo tipo o uno compatible, una sentencia de retorno como "return 1" no lo es. Para que sea valida hay que cambiarla a:
return (Numero > 2) ? 0 : 1;
Cita de: bemone en 19 Febrero 2013, 22:07 PM
Yo lo uso mucho para hacer funciones de 1 sola linea.
Por ej:
bool esPar(int a){
return a%2 == 0 ? true : false;
}
No es un buen ejemplo ya que el resultado de los operadores relacionales es uno si se cumple la condición y cero en caso contrario. Y cuando se convierte un entero a booleano los valores distintos de cero resultan en true, solo cero resulta en false. Considerando eso la función se reduce a:
bool esPar(int a){
return a % 2 == 0;
}
Un saludo
si no se usa es porque no es necesario , pero si se usa puede ser que sea porque se necesita. por ejemplo, el switch puede no usarse y en su lugar usar puros if+elseif+else , a pesar de las ventajas que da switch.