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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Calcular el máximo usando operador '?'
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Calcular el máximo usando operador '?'  (Leído 4,594 veces)
85

Desconectado Desconectado

Mensajes: 206



Ver Perfil WWW
Calcular el máximo usando operador '?'
« en: 21 Febrero 2013, 01:46 am »

Hola, estaba mirando casualmente dos temas, uno que se refiere al operador ternario y otro sobre como obtener el mayor de 3 números..

y en el tema del operador ternario se hablaba acerca de la utilidad de este operador, en este caso compruebo que resulta conveniente usarlo..
por eso vean la función 2 parece la más conveniente aunque en realidad a mi forma de verlo las 3 terminan realizando comparaciones, que a nivel de ensamblador resultan simples restas..
si alguno sabe como el procesador procesa la información o al menos sabe como se realizan las comparaciones, sabrá a que me refiero.

Código:
int max_valor_de_tres_1(int a,int b,int c){

if(a>b)
if(a>c)
return a;
if(b>a)
if(b>c)
return b;
if(c>a)
if(c>b)
return c;
return 0;
}

Código:
int max_valor_de_tres_2(int a,int b,int c){

return a>b? (a>c?a:(b>c?b:c)) : (b>c?b:c);
}

Código:
int max_valor_de_tres_3(int a,int b,int c){

if((a-b>0)&&(a-c>0)){return a;}
if((b-a>0)&&(b-c>0)){return b;}
if((c-a>0)&&(c-b>0)){return c;}
return 0;
}




Código:
int main(){
int a,b,c;
a = 3;
b=4;
c=5;
int res = max_valor_de_tres_3(a,b,c);
printf("%d",res);
printf("\n");
system("pause");

return 0;
}

Estos eran los temas
http://foro.elhacker.net/programacion_cc/aporte_operador_condicional-t383420.0.html

http://foro.elhacker.net/programacion_cc/help_calcular_maximo_de_3_numeros_usando_funcion-t383403.0.html



« Última modificación: 21 Febrero 2013, 01:50 am por 85 » En línea

Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/
ThePinkPanther

Desconectado Desconectado

Mensajes: 82



Ver Perfil
Re: Calcular el máximo usando operador '?'
« Respuesta #1 en: 21 Febrero 2013, 03:37 am »

muy bueno.


En línea

CloudswX


Desconectado Desconectado

Mensajes: 806


"La física es el sistema operativo del Universo"


Ver Perfil
Re: Calcular el máximo usando operador '?'
« Respuesta #2 en: 21 Febrero 2013, 03:53 am »

Y si los valores de dos de esas 3 variables es igual?

En línea



 «Dios no juega a los dados, usa /dev/random.»
twitter: @cloudswx
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Calcular el máximo usando operador '?'
« Respuesta #3 en: 21 Febrero 2013, 04:15 am »

Y si los valores de dos de esas 3 variables es igual?

Código:
return 0;

retorna 0

aunque debería retornar algo como "false" o NaN porque si el mayor es 0 entonces tendrías un error en el algoritmo
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
85

Desconectado Desconectado

Mensajes: 206



Ver Perfil WWW
Re: Calcular el máximo usando operador '?'
« Respuesta #4 en: 22 Febrero 2013, 03:39 am »

claro, por eso yo decía que la mejor es la función 2, las otras estaban incompletas...

igualmente se puede ahcer eso que dice engelx, es decir , luego de llamar a la función , se evalúa el resultado (por ejemplo 'false') y en base a eso se determina que se va a usar uno de los números, etc también la función puede retornar uno de los números si los 3 son iguales, igualmente me quedo con la opción B para este problema   ;D


En línea

Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Calcular el máximo usando operador '?'
« Respuesta #5 en: 22 Febrero 2013, 16:32 pm »

Hola, estaba mirando casualmente dos temas, uno que se refiere al operador ternario y otro sobre como obtener el mayor de 3 números..
Algunas observaciones.

Cuando se busca el máximo de tres números si no es uno de los dos primeros debe ser el ultimo. La primera función se puede reducir a:
Código
  1. int max_valor_de_tres_1(int a,int b,int c)
  2. {
  3.   if (a > b && a > c)
  4.      return a;
  5.   if (b > a && b > c)
  6.      return b;
  7.  
  8.   return c;
  9. }

En la segunda función primero se comparan las variables a y b, el menor de estos debe ignorarse en las siguientes comparaciones ya que no es posible que sea el máximo. Se reduce a:
Código
  1. int max_valor_de_tres_2(int a,int b,int c)
  2. {
  3.   return a > b ? (a > c ? a : c) : (b > c ? b : c);
  4. }

En la tercera función se debe evitar el uso de expresiones como "a - b" porque en el lenguaje C si el resultado de la resta sale del rango valido del tipo int se genera comportamiento no definido, esto es, no hay garantías sobre el comportamiento del programa. Mejor utilizar las comparaciones "a > b", "a > c", etc. ya que son directas y su resultado esta garantizado (1 o 0, dependiendo del resultado de la comparación).

Por ultimo otra opción es combinar el uso de una sentencia condicional y el operador ternario:
Código
  1. int max_tres(int a, int b, int c)
  2. {
  3.   if (a < c)
  4.      a = c;
  5.  
  6.   return a > b ? a : b;
  7. }

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
peso maximo de un .swf
Desarrollo Web
chulby 3 4,219 Último mensaje 28 Septiembre 2010, 02:20 am
por jdc
Tiempo máximo
PHP
dimitrix 3 1,779 Último mensaje 11 Abril 2012, 11:45 am
por dimitrix
Help! Calcular máximo de 3 numeros usando función
Programación C/C++
sora_ori 5 3,703 Último mensaje 18 Febrero 2013, 23:34 pm
por BatchianoISpyxolo
Calcular máximo de matriz, error
Programación C/C++
Puntoinfinito 7 4,522 Último mensaje 18 Julio 2013, 11:58 am
por Puntoinfinito
La CNMC propone fijar un máximo de 235 MHz por operador en algunas frecuencias..
Noticias
wolfbcn 0 1,045 Último mensaje 13 Abril 2018, 15:03 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines