Pular para o conteúdo

Conversão vetor de caracteres para double

Dica publicada em C/C++ / Introdução
Kleber de Andrade Reis kandrade
Hits: 9.902 Categoria: C/C++ Subcategoria: Introdução
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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]='
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]='
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));
}
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
';
    printf("\n%f\n",soma+=atof(linha));
}
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
';
    printf("\n%f\n",soma+=atof(linha));
}
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Desligando Slackware com fonte ATX automaticamente

Ocorrência de uma string em outra

Função recursiva para inverter um vetor de caracteres

Limpando o buffer do teclado em C

Declaração de variáveis em C

Sobrecarregamento de operadores

Programação para Arduino

Métodos para a Limpeza do Terminal do Linux em C

#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

Entre na sua conta para comentar.