Problema Junio 2007
Convertir una cadena de caracteres a un valor entero mediante una función que reciba la dirección de la cadena y la dirección de la variable que almacenará el resultado. (Se supone que hay números el la cadena).
SOLUCIÓN:
-Buscar el comienzo de numero distinto de blanco, supondremos + o -.
-Averiguar el signo, si no es un carácter valido devuelve un error.
-Si el carácter es un digito se pasa a decimal ((ascii)numero-48)*10.
-Si la función finaliza de forma correcta devuelve un uno.
#include
#include
#include
int convierte(char*,float*);
void main()
{
char cadena[50];
float valor;
printf("Dame una cadena:");
gets(cadena);
if (convierte(cadena,&valor))
printf("El valor es:%f",valor);
else
puts("ERROR");
}
int convierte(char *pcadena,float *pvalor)
{
int neg=1,error=0;
while(*pcadena==' ')
pcadena++;
if (!isdigit(*pcadena))
{
if (*pcadena=='-')
neg=-1;
else
if (*pcadena=='+')
neg=1;
else
error=1;
pcadena++;
}
while ((*pcadena) && (!error))
{
if (!isdigit(*pcadena))
error=1;
else
*pvalor=*pvalor*10+((int)(*pcadena-48));
pcadena++;
}
if (error) return 0;
*pvalor=(*pvalor)*(float)neg;
return 1;
}
domingo, 25 de noviembre de 2007
Programación en C
Publicado por Wido en 13:58
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario