Ver Mensaje Individual
  #16 (permalink)  
Antiguo 20/11/2014, 08:22
Avatar de leosansan
leosansan
 
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 12 años, 7 meses
Puntos: 49
Respuesta: do while false

Cita:
Iniciado por kutcher Ver Mensaje
Pues si es en ese plan dejo mi propuesta haciendo uso de la función strtol para variar :

Código C++:
Ver original
  1. ......................
  2.     numero = atoi(num);
  3.     printf("Numero = %d\n", numero);
  4. .................................

[
Bien por recordar el usa de strol, un poco rebuscado pero efectivo.

Cita:
Iniciado por kutcher Ver Mensaje

leosansan tienes un problema es tus códigos en las lineas :

Código C++:
Ver original
  1. if ( cadena [0] == '-' || cadena [0] == '+' )  ++i;
¡¡¡¡Thanks¡¡¡, y sorry, se me escapo el flag:

Código C++:
Ver original
  1. int EsNumero( char* cadena ) {
  2.     int i , flag = 0 ;
  3.     for ( i = 0 ; cadena [ i ] ; i++ ) {
  4.       if ( cadena [0] == '-' || cadena [0] == '+' && flag == 0 )  ++i , flag = 1 ;
  5.       if ( ! isdigit ( cadena [i] ) )  return 0 ;
  6.     }
  7.     return 1 ;
  8. }

Y puestos a experimentar :

Código C++:
Ver original
  1. int EsNumero( char *cadena ) {
  2.     while ( *cadena  == '-' || *cadena  == '+' || isdigit ( *cadena ) && *cadena != 0 ) *cadena++ ;  
  3.     return  ( strlen ( cadena ) != 0 )  ? 0 : 1 ;
  4. }

Y ¡¡¡más fuerte¡¡¡ , sin usar ningún bucle. A ver quien supera la complejidad del que viene, je je :

Código C++:
Ver original
  1. int EsNumero ( char *num ) {
  2.     int n = log10 ( abs ( atoi ( num ) ) ) + 1 , Strlen;
  3.     return ( n == ( Strlen = ( num [0] == '-' ||  num [0] == '+')  ? strlen ( num ) - 1 : strlen ( num ) ) ) ? 1 : 0 ;
  4. }



¡¡¡Saluditos!!!