Ver la versión completa : Es correcto?
jairogon
07-01-2010, 06:39 PM
fact *=n==0 ? 1.0 : n;
Es correcto expresar lo anterior como
fact=fact*n;
if(fact==0) fact=1.0;
else fact=n;
csaralg
07-01-2010, 08:56 PM
Hola, me parece que no es correcto.
fact *= n==0 ? 1.0 : n;
se puede expresar de esta forma:
if( n==0 ) {
fact = fact * 1.0;
}
else {
fact = fact * n;
}
¿quieres calcular el factorial de n? que te parece éste código:
int fact = 1;
while( n!=0 ) fact *= n--;
Saludos.
Shell Root
07-01-2010, 09:14 PM
A simple vista, es correcto. Falta mirar en tiempo de ejecución.
Hola, me parece que no es correcto.
mmm no sé, creo que si es correcto.
csaralg
07-01-2010, 09:52 PM
@Shell Root
Seguro? Ummm...
El codigo:
fact *= n==0 ? 1.0 : n;
Esta usando una estructura de asignacion condicional:
[variable] = [codicion] ? [valor si verdadero] : [valor si falso]
eso se puede representar como:
if( [condicion] ) {
[variable] = [valor si verdadero]
}
else {
[variable] = [valor si falso]
}
pero el operador de asignación no es simple es una asignación con producto:
[variable] *= [valor]
que puede expresarse como:
[variable] = [variable] * [valor]
Reemplazando:
[variable] = fact
[condicion] = n==0
[valor si verdadero] = 1.0
[valor si falso] = n
nos quedara:
if( n==0 ) {
fact = fact * 1.0;
}
else {
fact = fact * n;
}
El código de jairogon, esta bien escrito sintácticamente pero no representa la instrucción que quiere.
Saludos.
Powered by vBulletin® Version 4.2.0 Copyright © 2013 vBulletin Solutions, Inc. All rights reserved.