C/Visual C - validar enteros

 
Vista:

validar enteros

Publicado por jhon (1 intervención) el 01/04/2005 21:51:26
buenas, soy un principiante en c y quisiera saber como hago para validar si el número que ingreso un usuario es un entero, ya que si es decimal debo terminar la ejecución del programa.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:validar enteros

Publicado por fernando.gomez (1603 intervenciones) el 02/04/2005 03:35:47
Arggggghhhhhhhh! Vaya, sólo se me ocurre una forma bastante bastante deficiente. Si se me ocurre alguna otra, te aviso.

El algoritmo sería: convertir a cadena y esa cadena buscar que tenga un punto decimal...

bool isdecimal(double d)
{
bool bIsDec;
char* pNum;

bIsDec =true;
int dec, sign;
pNum = NULL;

pNum = fcvt(d, 2, &dec, &sign);
for (int i = 0; i < strlen(pNum) && bIsDec; i++)
{
bIsDec = pNum[i] == '.';
}
return bIsDec
}

Sí, sí, bastante sucio e ineficiente, vale. Te digo, si me acuerdo de otra forma, te aviso. Saludos.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:validar enteros

Publicado por zeus54 (2 intervenciones) el 02/04/2005 10:22:46
Hay otra mejor, pasas el numero a una variable entera (con lo que eliminas la parte decimal (si la hay)) y despues compruebas si los dos numeros son iguales
#include <stdio.h>
main() {
int comprobar;
float numero;
printf("Introduce un numero\n");
scanf("%f", &numero);
comprobar = numero;
if(comprobar == numero) {
printf("este numero es entero\n");
/*lo que pongas dentro del if se ejecutara si el numero es entero*/
}
/*sino lo es, no haces nada*/
system("pause");
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:validar enteros

Publicado por Wireframe Beast (5 intervenciones) el 04/04/2005 09:39:58
FACIL!!! Solo usa el MOD, en C me parece que es el %

#include "math.h"
....
int entrada;
.....
//capturas entrada

if(entrada%1!=0) /*OK*/
else /*NO OK*/

Funciona porque el MOD te regresa el residuo de la división, si es diferente de 0, significa que tu entrada no es entera.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar