Comprobación tipo variables C
Comprobación tipo variables C
Hola
Tengo una práctica de programación y estoy teniendo un quebradero de cabeza con una cosa que luego seguro es una tontería:
El caso es, tengo un programa secuencia.c al que se le tienen que pasar 3 argumentos al ejecutarlo , y yo necesito comprobar que esos 3 argumentos son int o float.
Ahora viene lo bueno, yo creo que de llevar toda la tarde programando no me funciona bien la cabeza, y no se me ocurre como comprobar que los 3 argumentos sean int o float xDD
Agradezco cualquier ayuda, la práctica lo que tiene que hacer es despues de comprobar que son números los argumentos, es recorrer desde el argumento 2 hasta el argumento 1 sumandole cada paso el valor del argumento 3 (pero vamos, esto sé hacerlo sin problemas, el tema es hacer las comprobaciones)
Muchas gracias, y lo más importante, perdón por el tocho
Tengo una práctica de programación y estoy teniendo un quebradero de cabeza con una cosa que luego seguro es una tontería:
El caso es, tengo un programa secuencia.c al que se le tienen que pasar 3 argumentos al ejecutarlo , y yo necesito comprobar que esos 3 argumentos son int o float.
Ahora viene lo bueno, yo creo que de llevar toda la tarde programando no me funciona bien la cabeza, y no se me ocurre como comprobar que los 3 argumentos sean int o float xDD
Agradezco cualquier ayuda, la práctica lo que tiene que hacer es despues de comprobar que son números los argumentos, es recorrer desde el argumento 2 hasta el argumento 1 sumandole cada paso el valor del argumento 3 (pero vamos, esto sé hacerlo sin problemas, el tema es hacer las comprobaciones)
Muchas gracias, y lo más importante, perdón por el tocho
[equipo]Sobremesa jugón|Intel Core 2 Q8200 @2.8|Asus Maximus Formula|2x2gb Samsung Drr2 667@800|AMD 6870 xfx OC|||Thermaltake isgc 300||Nox coolbay W|Creative soundblaster|Windows 7 Ultimate|||Logitech g400||[/equipo]
Re: Comprobación tipo variables C
Con stdlib.h las funciones atof o atoi por ejemplo convierten cadenas a números, pero no comprueban nada... con las funciones strto* puedes leer los errores devueltos por la conversión para saber si son o no un tipo u otro. También puedes hacerlo con sscanf y comprobando que las cadenas estén hechas solo con números, etc.
Re: Comprobación tipo variables C
Quizás te interese usar la función isdigit; junto con if (s == '.') para saber si es un float.
¡Descarga programas gratis en la Lista de software libre y/o gratuito para Windows!
Re: Comprobación tipo variables C
Muchas gracias, luego probaré con strto, a ver que tal
[equipo]Sobremesa jugón|Intel Core 2 Q8200 @2.8|Asus Maximus Formula|2x2gb Samsung Drr2 667@800|AMD 6870 xfx OC|||Thermaltake isgc 300||Nox coolbay W|Creative soundblaster|Windows 7 Ultimate|||Logitech g400||[/equipo]
Re: Comprobación tipo variables C
estoy teniendo problemas al usar strod, por ejemplo, llamando a la función asi:
Recibo un "Violacion de segmento" al ejecutar el programa, ya sea sin parametro, con un parametro entero, un float, un string
¿Alguien puede saber porque?
Un saludo
PD: lo que necesito es lo de antes, ver si mis tres argumentos son numeros
Código: Seleccionar todo
char *finalPtr;
strtod(argv[1], &finalPtr);
¿Alguien puede saber porque?
Un saludo
PD: lo que necesito es lo de antes, ver si mis tres argumentos son numeros
[equipo]Sobremesa jugón|Intel Core 2 Q8200 @2.8|Asus Maximus Formula|2x2gb Samsung Drr2 667@800|AMD 6870 xfx OC|||Thermaltake isgc 300||Nox coolbay W|Creative soundblaster|Windows 7 Ultimate|||Logitech g400||[/equipo]
Re: Comprobación tipo variables C
Aunque no sea lo más eficiente, móntate una función que lo haga, por ejemplo algo similar a esto (en C++):
Código: Seleccionar todo
#include <iostream>
#include <string>
using namespace std;
bool es_numero (char *palabra) {
bool ya_tengo_punto = false;
for (int i = 0; palabra[i]; ++i) {
if (palabra[i] >= '0' and palabra[i] <= '9');
else if (palabra[i] == '.' and not ya_tengo_punto) ya_tengo_punto = true;
else return false;
}
return true;
}
int main(int argc, char** argv) {
if (argc == 4) {
for (int i = 1; i <= 3; ++i) {
if (es_numero(argv[i])) cout << "OK" << endl;
else cout << "KO" << endl;
}
}
else cout << "Programa mal llamado" << endl;
}
¡Descarga programas gratis en la Lista de software libre y/o gratuito para Windows!
Re: Comprobación tipo variables C
Voy a intentarlo de esta forma, gracias
[equipo]Sobremesa jugón|Intel Core 2 Q8200 @2.8|Asus Maximus Formula|2x2gb Samsung Drr2 667@800|AMD 6870 xfx OC|||Thermaltake isgc 300||Nox coolbay W|Creative soundblaster|Windows 7 Ultimate|||Logitech g400||[/equipo]