strcmp a mano // operador ternario // #define en lenguaje C

Iniciado por NOB2014, 29 Diciembre 2016, 12:46 PM

0 Miembros y 1 Visitante están viendo este tema.

NOB2014

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? -

#include <stdio.h>

int d( char *a, char *b);

int main( void ){
char a[] = "rosita", b[] = "Rosita";
int res;

res = d( a, b );
if( res == 0 )
printf( "\n Las frases %s y %s son IGUALES\n\n", a, b );
else if( res < 0 )
printf( "\n %s es MAYOR que %s\n\n", a, b );
else
printf( "\n %s es MENOR que %s\n\n", a, b );

return 0;
}


// Lo que regresa la función: >0 si a<b ==> 0 si a==b ==> <0 si a>b
int d( char *a, char *b ){

for( ; *a == *b; a++, b++ )
if( *a == '\0' )
return 0;

return *a - *b;
}



Desde ya muchas gracias por el tiempo que le dediquen. -
Saludos.
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

ivancea96

Son 2 condiciones, así que es posible hacerlo con 2 operadores ternarios.

printf( res == 0 ? "\n Las frases %s y %s son IGUALES\n\n"
                 : ( res < 0 ? "\n %s es MAYOR que %s\n\n"
                             : "\n %s es MENOR que %s\n\n" ), a, b);

NOB2014

Bien amigo es lo que necesitaba, me parece que me faltaba algún paréntesis por ello no lo podía hacer. -
Gracias.
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-