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