Ir ao conteúdo
  • Cadastre-se

Ajuda


Andrey Felipe

Posts recomendados

Olá estou escrevendo um codigo que le um número de 0 a 9999 e o devolve por extenso até o momento foi emplementado de 0a 999 não estou conseguindo implementar de 999 ate 9999 alguem poderia me ajudar grato desde já segue abaixo o código.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
// Variaveis globais
char *unidades[] = {"zero","um","dois","tres","quatro","cinco","seis","sete","oito","nove"};
char *dezVinte[] = {"","onze","doze","treze","quatorze","quinze","dezesseis","dezessete","dezoito","dezenove"};
char *dezenas[] = {"","dez","vinte", "trinta","quarenta","cinquenta","sessenta","setenta,","oitenta","noventa"};
char *centenas[] = {"","cento","duzentos","trezentos","quatrocentos","quinhentos","seiscentos","setecentos","oitocentos","novecentos"};
 
char *appendStr(char *str1, char *str2)
{
  int a,b;
  char *app;
  a=strlen(str1);
  b=strlen(str2);
  app=(char *)malloc(a+b+1);
  app[a+b+1]=13;
  for (int f=0; f<a+b; f++)
  {
    if (f<a)
      app[f]=str1[f];
    else
      app[f]=str2[f-a]; 
  }
  return app;
}
 
 
char *findName(int num)
{
  char *e = " e ";
  char *nome;
  int c,d,dv,u; 
  c=num/100; 
  d=num/10-c*10;
  u=num-(num/10)*10;
  dv=d*10+u;
  nome=unidades;
  if (num<10)
    return nome;
  // Onze a dezenove  
  if ((dv>10) && (dv<20))
    nome=dezVinte[dv-10];
  else
  {    
    if (u==0)
      nome=dezenas[d];
    else
    {
      nome=appendStr(e,nome);
      nome=appendStr(dezenas[d],nome);
    }
  }
  if (num<100)
    return nome;
  // Inteiro
  if ((d==0)&&(u==0))
  {
    if (c==1)
      nome="cem";
    else
      nome=centenas[c];
  }
  else
  {
    nome=appendStr(e,nome);
    nome=appendStr(centenas[c],nome);
  }
  return nome;
}
 
 
int main(void)
{
  // Variaveis
  int numero;
  char *nomeNum;
 
  printf("Entre com um numero 0-999: ");
  scanf("%d",&numero);
  if ((numero<0) || (numero>999))
  {
    printf("Valor fora da faixa!\n");
    return 0;
  }
  nomeNum=findName(numero);
  printf("Numero %d: %s\n",numero,nomeNum);
  return 0;
}
 
Link para o comentário
Compartilhar em outros sites

Esse código na verdade você não escreveu, você pegou do google. É um dos primeiros links que aparecem quando você pesquisa por "número por extenso" em C.

Se você tivesse desenvolvido ele, saberia como adicionar a casa dos milhares, pois a lógica é a mesma.

Em vez de tentar enganar os outros pra que resolvam seus problemas por você, você poderia ter tentado entender o código e postado suas dúvidas.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...