Conversão vetor de caracteres para double

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

[ Hits: 9.304 ]

 


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

Ocorrência de uma string em outra

Desligando Slackware com fonte ATX automaticamente

Leitura recomendada

Acessando um valor dada sua posição numa matriz bidimensional

Switch em C, e se a opção for inválida?

Como limpar a tela em C

Instalação do editor xwpe - Debian

Usando o compilador gcc

  

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