Ver Mensaje Individual
  #24 (permalink)  
Antiguo 21/11/2014, 05:06
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 Pantaláimon Ver Mensaje
jajaja, que memoria tienes, pero para que la cosa tenga más lógica creo que el asunto iba de números capicúa o palíndromos, no de primos.

Un saludo!
Sin duda alguna tengo una neurona en cortocircuito porque ya por entonces confundía primos, es que es un tema que me obsesiona y en el que sigo trabajando, con los capicúa y/o palíndromos.

Un fuerte abrazo Pantaláimon, da gusto verte con este "humor".

¡¡¡Saluditos!!!



EDITO:

Cita:
Iniciado por kutcher Ver Mensaje
El inconveniente con strtol es que salta todos los espacios iniciales para localizar los caracteres +/- si es que existen, debido a esto valida la primera cadena como un numero
Sigue el problema de que acepta como válido -123*.

Aprovecho para corregir el que no admita espacios, tipo "123 4":

Código C++:
Ver original
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <ctype.h>
  4.  
  5. int EsNumero( char *cadena ) {
  6.     while ( *cadena  == '-' || *cadena  == '+' || isdigit ( *cadena ) && *cadena != 0 ) *cadena++ ;  
  7.     return  ( strlen ( cadena ) != 0 )  ? 0 : 1 ;
  8. }
  9.  
  10. int main ( ) {
  11.   int numero  ;
  12.   char num [20] ;
  13.   do {
  14.     printf ( "\nIntroduzca un numero entero: " ) ;
  15.     scanf ( "%[^\n]" , num ) ;
  16.     while ( getchar ( ) != '\n' ) ;
  17.   }while( !EsNumero( num ) ) ;
  18.   printf ( "\nnumero = %d\n" , atoi ( num ) ) ;
  19.   return 0 ;
  20. }

Última edición por leosansan; 21/11/2014 a las 05:20