elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
14 Febrero 2012, 07:25  

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  funcion para verificar numero
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: funcion para verificar numero  (Leído 1,760 veces)
Geek7

Desconectado Desconectado

Mensajes: 25


Be Free!


Ver Perfil
funcion para verificar numero
« en: 3 Diciembre 2009, 13:22 »

existe alguna funcion para verificar si los datos son numericos en c++?
hay una funcion isdigit() pero no me funciona.

Código
std::cout << "enter your age: ";
std::cin >> age;
 
if(!isdigit(age)) {
std::cout << "Character no valid. Please enter a number";
}
 



En línea

Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.707


Nie Dam Sie


Ver Perfil WWW
Re: funcion para verificar numero
« Respuesta #1 en: 3 Diciembre 2009, 14:13 »

Código
//Example reads in a character and checks to see if it is a digit
#include <cctype>
#include <iostream>
 
using namespace std;
 
int main()
{
   char a_char;
   cin>>a_char;
   if(isdigit(a_char))
   {
       cout<<"Is a digit!";
   }
   else
   {
       cout<<"Is not a digit!";
   }
}


En línea


@NeedOfSecurity

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
Geek7

Desconectado Desconectado

Mensajes: 25


Be Free!


Ver Perfil
Re: funcion para verificar numero
« Respuesta #2 en: 3 Diciembre 2009, 14:32 »

solamente funciona con un char? porque no me anda.

Este es mi codigo:

Código
// Dave Levy
// Dec-2009
// Converts from Celsius to Fahrenheit or vice versa
 
#include <iostream>
#include <cctype>
 
// Performs convertion between Fahrenheit and Celsius
int convertFunc(char degreesTy, int degreesAmnt) {
 
   char degreeSymb = 248;
   degreesTy = toupper(degreesTy);
 
       // Verifying users choice
       switch(degreesTy) {
       case 'F':
           std::cout << degreesAmnt << degreeSymb << "C = " << (degreesAmnt * 9) / 5 + 32 << degreeSymb << "F\n";
       break;
 
       case 'C':
           std::cout << degreesAmnt << degreeSymb << "F = " << (degreesAmnt - 32) * 5 / 9 << degreeSymb << "C\n";
       break;
 
       default:
           std::cout << std::endl << "Non valid type of converstion. Please enter F or C";
       break;
       }
 
   return 0;
}
 
 
int main() {
   int degreesAmount;
   char degreesType, again;
 
   std::cout << "Welcome to the converter!\n|=======================|" << std::endl << std::endl;
 
   do {
   std::cout << "Please enter the number of degrees you want to convert: ";
   std::cin >> degreesAmount;
 
   // Hast to be a number if not...
       if(isdigit(degreesAmount) && degreesAmount > -32765 && degreesAmount < 65000) {
 
           std::cout << std::endl << "Would you like to convert it to Fahrenheit (F) or Celsius (C)?: ";
           std::cin >> degreesType;
           float result = convertFunc(degreesType, degreesAmount);
           std::cout << result << std::endl;
 
       } else {
           std::cout << "ERROR. Number out of range or invalid character." << std::endl;
       }
       std::cout << "\nYou want to convert more? [Q to quit]" << std::endl;
       std::cin >> again;
       again = toupper(again); // If pressed q lowecase, also exits
 
       system("cls");
 
   } while(again != 'Q');
 
 
   system("PAUSE");
   return 0;
}
 
En línea

tragantras


Desconectado Desconectado

Mensajes: 465


Ver Perfil
Re: funcion para verificar numero
« Respuesta #3 en: 3 Diciembre 2009, 15:44 »

con enteros tambien funciona


Citar
#include <stdio.h>
#include <ctype.h>
 
int main()
{
   char cadena[] = ";0ñfáR(4h&~?RÛ1/";
   int i;
   
   for(i = 0; cadena; i++)
      printf("%c, %d\n", cadena, isdigit(cadena));

   return 0;
}


referencia: http://www.conclase.net/c/librerias/macro.php?mac=isdigit
En línea

Colaboraciones:
1 2
Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.707


Nie Dam Sie


Ver Perfil WWW
Re: funcion para verificar numero
« Respuesta #4 en: 3 Diciembre 2009, 18:36 »

No usen la etiqueta [quote] para poner codigo, aparece mal formateado ya que interpreta ciertas porciones de codigo como etiquetas.

Estas usando mal isdigit ya que al pasarle el entero la funcion interpreta un valor incorrecto. Imagina este ejemplo:

El programa empieza y pide un valor, tu ingresas el 47. Un numero normal aparentemente y que seguro el programa deberia interpretar correctamente. Ahora bien, la funcion no lo interpreta correctamente porque considera que el 47 representa al simbolo '/', el cual obviamente no pertenece al rango de digitos. Ahora si pruebas ponerle un 48, seguramente si funcione. Por que? porque isdigit interpretara que lo que estas pasando como parametro no es un 48, si no un '0'.

http://es.wikipedia.org/wiki/ASCII
http://www.conclase.net/c/librerias/funcion.php?fun=sprintf

Un saludo.
En línea


@NeedOfSecurity

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
nicolas_cof


Desconectado Desconectado

Mensajes: 343


Into the Wild


Ver Perfil WWW
Re: funcion para verificar numero
« Respuesta #5 en: 3 Diciembre 2009, 22:54 »

Ahi te dejo un codigo, fijate si te sirve...

scanf devuelve el número de elementos de la entrada asignados, que pueden ser menores que los formatos suministrados para conversión, o incluso cero, en el caso de un fallo de concordancia. Cero indica que, mientras había caracteres disponibles en la entrada, no ocurrió ninguna asignación; normalmente esto es debido a un carácter de entrada inválido, como un carácter alfabético para una conversión ‘%d’.

Código
#include <stdio.h>
 
int main (void)
{
int num;
 
if (scanf ("%d", &num) != 0)
puts ("Es un numero");
else
puts ("No es un numero");
 
return 0;
}

Otra forma de comprobar haciendo uso de la funcion isdigit() seria

Código
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
 
int main (void)
{
char *num, *tmp;
int n;
 
num = malloc (5 * sizeof (char));
 
num = fgets (num, 5, stdin);
 
tmp = num;
while (*num != '\0')
{
if ((n = isdigit (*num)) == 0)
break;
num++;
}
 
free (tmp);
 
if (n != 0)
puts ("Es un numero");
else
puts ("No es un numero");
 
return 0;
}

tragantras en el ejemplo que pusiste te olvidaste de indicar las posiciones del arreglo

Código
for(i = 0; cadena; i++)
     printf("%c, %d\n", cadena, isdigit(cadena));

Codigo arreglado

Código
for(i = 0; cadena[i]; i++)
     printf("%c, %d\n", cadena[i], isdigit(cadena[i]));

Salu10.
« Última modificación: 4 Diciembre 2009, 03:17 por nicolas_cof » En línea

Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.707


Nie Dam Sie


Ver Perfil WWW
Re: funcion para verificar numero
« Respuesta #6 en: 4 Diciembre 2009, 00:18 »

No se olvido de poner las posiciones, se formatea mal por utilizar la etiqueta para citar en lugar de la etiqueta para poner codigo.

En cuanto al topic. No esta utilizando mal la funcion isdigit, el problema no es de sintaxis, mas bien de concepto.

De todas maneras esto ya se ha hablado aqui y aqui.

Un saludo
En línea


@NeedOfSecurity

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
nicolas_cof


Desconectado Desconectado

Mensajes: 343


Into the Wild


Ver Perfil WWW
Re: funcion para verificar numero
« Respuesta #7 en: 4 Diciembre 2009, 02:02 »

 :laugh: :laugh: :laugh: :laugh: :laugh: no me habia dado cuenta de eso.

Gracias Littlehorse por avisarme.

Salu10.
En línea

SpesMod

Desconectado Desconectado

Mensajes: 81


-reflejo-


Ver Perfil
Re: funcion para verificar numero
« Respuesta #8 en: 4 Diciembre 2009, 15:51 »

y no es la unica funcion que verifica un dato, tambien hay:

Código
isalnum();
isalpha();
isascii();
iscntrl();
isdigit();
isgraph();
islower();
isprint();
ispunct();
isspace();
isupper();
isxdigit();
si quieres saber que hace cada funcion, o en que te puede ayudar ve a esta direccion:
http://www.conclase.net/c/librerias/macro.php?mac=isalnum
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Verificar argumentos de función[Python]
Scripting
S3kh 3 703 Último mensaje 20 Septiembre 2011, 02:26
por Novlucker
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines