Ir para conteúdo
Fórum Script Brasil
  • 0

Ataf()


renan_doidera

Pergunta

Eu estava procurando uma função para converter string em float, então soube que existe uma que faz isso, a ataf(). Só que eu não consegui usar aqui, sabe-se láh por que, o meu compilador não achou mesmo declarando a biblioteca certa. Então eu resolvi fazer ela pra mim usar, já que eu fiz eu vou postar aqui e talvez possa ser útil pra quem tenha enfrentado mesmo problema que eu , ou para até questão de aprendizadomesmo....

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int retorna_numero(char letra)
{
  int numero;
  
  if( letra == '0' ) numero = 0;
  if( letra == '1' ) numero = 1;
  if( letra == '2' ) numero = 2;
  if( letra == '3' ) numero = 3;
  if( letra == '4' ) numero = 4;
  if( letra == '5' ) numero = 5;
  if( letra == '6' ) numero = 6;
  if( letra == '7' ) numero = 7;
  if( letra == '8' ) numero = 8;
  if( letra == '9' ) numero = 9;
  if( letra == '.') numero = 27;
  
  return numero;
}

float ataf_Renan(char *astring)
{
  int i, tamanho, incremento, pos_ponto;
  char numero_char;
  float numero_float, retorno;
  
  tamanho = strlen(astring);
  retorno = 0;
  incremento = 0;
  
  for(i=0; i<tamanho; i++) if( retorna_numero(astring[i]) == 27 ) break;
  pos_ponto = i;
  if( pos_ponto == tamanho ) pos_ponto = 0;
  
  for( i=0; i<tamanho; i++ )
  {
    numero_char = astring[i];
    numero_float = retorna_numero(numero_char);
    if( numero_float == 27 ) incremento = -1;
    if( incremento == 0 )
    {
    if( i == pos_ponto-1 ) retorno += numero_float;
    else retorno += numero_float*pow(10,pos_ponto-1-i);
    }
  else if(numero_float != 27)
  {
    retorno += numero_float*pow(10,incremento);
    incremento--;
  }
    }
  
  return retorno;
}

main()
{
    char *nada;
    
    nada = (char*)malloc(10*sizeof(char));
    nada = "0.05879";
    
    printf("\n\n%.5f\n\n",ataf_Renan(nada));
    system("pause");
}

É isso,

Abraços.

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...