Conversão vetor de caracteres para double

Publicado por Kleber de Andrade Reis em 04/11/2004

[ Hits: 9.272 ]

 


Conversão vetor de caracteres para double



Essa dica mostra como funciona a conversão de um vetor de caracteres em double.

Qualquer dúvida me questionem!

#include<stdio.h>

double expo(int a, int b)
{
    int i,aux;
    double ex=1;
    
    if(b<0)
        aux=-b;
    else
        aux=b;  

    for(i=1;i<=aux;i++)
        ex=ex*a;
    if(b>=0)    
        return (ex);
    else
        return (1/ex);
}
        

double atof(char s[])
{
    double val,pot,ex;
    int i,sinal,sig=1,nc;
    
    for(i=0;s[i]==' '||s[i]=='\n'||s[i]=='\t';i++)
    ;
    sinal=1;
    if(s[i]=='+'||s[i]=='-')
        sinal=(s[i++]=='+')?1:-1;
        
    for(val=0;s[i]>='0'&&s[i]<='9';i++)
        val=10*val+s[i]-'0';
    if(s[i]=='.')
        i++;
          
    for(pot=1;s[i]>='0'&&s[i]<='9';i++){
        val=10*val+s[i]-'0';
        pot*=10;
    }
    
    ex=1;
    if(s[i]=='e'||s[i]=='E')
    {
        i++;
        if(s[i]=='+'||s[i]=='-')
        {
                sinal=(s[i]=='+')?1:-1;
                i++;
        }    
        for(nc=0;s[i]>='0'&&s[i]<='9';i++)
            nc=(10*nc+s[i]-'0')*sinal;
                
        ex=expo(10,nc);
    }    
            
    return((sinal*val/pot)*ex);
}

main()
{
    double soma;
    char c,linha[1000];
    int i=0;
    
    soma=0;
    printf("Digite a string a ser convertida\n\n");
    c=getchar();
    while(c!='\n')
    {
        linha[i]=c;
        c=getchar();
        i++;
    }
    linha[i]='{TEXTO}';
    printf("\n%f\n",soma+=atof(linha));
}
Outras dicas deste autor

Função recursiva para inverter um vetor de caracteres

Desligando Slackware com fonte ATX automaticamente

Ocorrência de uma string em outra

Leitura recomendada

Imprimir na mesma linha em C

Série de Fibonacci usando recursividade em linguagem C

Como executar um programa em C via Terminal [Vídeo]

Kylix - Ferramenta para programadores Delphi

Programando no Ubuntu - aplicações gráficas em C++ com Eclipse e Glade

  

Comentários
[1] Comentário enviado por kandrade em 05/11/2004 - 08:24h

Essa função atof......já existe na stdlib.h........
meu professor passou uns exercícios do livro ANSI C dos criadores da linguagem C.........e um dos exercícios pedia para vc criar ou melhor recriar essa função............

[2] Comentário enviado por jochan em 14/12/2005 - 14:43h

Muito legal, vai me ajudar bastente no meu projeto de C++ ... =)



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts