Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: NOB2014 en 29 Diciembre 2016, 12:46 pm



Título: strcmp a mano // operador ternario // #define en lenguaje C
Publicado por: NOB2014 en 29 Diciembre 2016, 12:46 pm
Hola, muy buen día para todos.
Hoy no les consulto por un error sino por algo que por más que busco en la web no encuentro la respuesta, ¿es posible agrupar desde la línea 10 a la 15 con un operador ternario y de no ser así me podrían dar alguna idea de como hacerlo con un #define? -

Código
  1. #include <stdio.h>
  2.  
  3. int d( char *a, char *b);
  4.  
  5. int main( void ){
  6. char a[] = "rosita", b[] = "Rosita";
  7. int res;
  8.  
  9. res = d( a, b );
  10. if( res == 0 )
  11. printf( "\n Las frases %s y %s son IGUALES\n\n", a, b );
  12. else if( res < 0 )
  13. printf( "\n %s es MAYOR que %s\n\n", a, b );
  14. else
  15. printf( "\n %s es MENOR que %s\n\n", a, b );
  16.  
  17. return 0;
  18. }
  19.  
  20.  
  21. // Lo que regresa la función: >0 si a<b ==> 0 si a==b ==> <0 si a>b
  22. int d( char *a, char *b ){
  23.  
  24. for( ; *a == *b; a++, b++ )
  25. if( *a == '\0' )
  26. return 0;
  27.  
  28. return *a - *b;
  29. }


Desde ya muchas gracias por el tiempo que le dediquen. -
Saludos.


Título: Re: strcmp a mano // operador ternario // #define en lenguaje C
Publicado por: ivancea96 en 29 Diciembre 2016, 13:30 pm
Son 2 condiciones, así que es posible hacerlo con 2 operadores ternarios.

Código
  1. printf( res == 0 ? "\n Las frases %s y %s son IGUALES\n\n"
  2.                 : ( res < 0 ? "\n %s es MAYOR que %s\n\n"
  3.                             : "\n %s es MENOR que %s\n\n" ), a, b);


Título: Re: strcmp a mano // operador ternario // #define en lenguaje C
Publicado por: NOB2014 en 29 Diciembre 2016, 14:21 pm
Bien amigo es lo que necesitaba, me parece que me faltaba algún paréntesis por ello no lo podía hacer. -
Gracias.