Pular para o conteúdo

Numero por extenso em c

Gostaria de esta contribuindo com a comunidade entao estou postando esse codigo em c que recebe um numero de 0 a 999999999 e escreve por extenso. inicialmente ele funciona em sistema windows mas se alguem interessar em portar ele para outros sistemas ou fazer outras modificacoes esta ai.
Alexandre Alves Candido alexandrecandido
Hits: 21.538 Categoria: C/C++ Subcategoria: Introdução
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

Gostaria de esta contribuindo com a comunidade entao estou postando esse codigo em c que recebe um numero de 0 a 999999999 e escreve por extenso. inicialmente ele funciona em sistema windows mas se alguem interessar em portar ele para outros sistemas ou fazer outras modificacoes esta ai.
Download numeroporextensolinux.c Enviar nova versão

Esconder código-fonte

#include<stdio.h>
#include<string.h>
int cont=0,b;//b tambem define 01unidade 02dezena 03centena 04milhar 05milhao nessa ordem crescente 
char valor[20],imprimir[200];
void umd(){
         switch(valor[b]){
                          case '1':if(cont>=2)strcat(imprimir,"e");strcat(imprimir," um ");break;//verifica caso dgito seja um
                          case '2':if(cont>=2)strcat(imprimir,"e");strcat(imprimir," dois ");break;
                          case '3':if(cont>=2)strcat(imprimir,"e");strcat(imprimir," tres ");break;
                          case '4':if(cont>=2)strcat(imprimir,"e");strcat(imprimir," quatro ");break;
                          case '5':if(cont>=2)strcat(imprimir,"e");strcat(imprimir," cinco ");break;
                          case '6':if(cont>=2)strcat(imprimir,"e");strcat(imprimir," seis ");break;
                          case '7':if(cont>=2)strcat(imprimir,"e");strcat(imprimir," sete ");break;
                          case '8':if(cont>=2)strcat(imprimir,"e");strcat(imprimir," oito ");break;
                          case '9':if(cont>=2)strcat(imprimir,"e");strcat(imprimir," nove ");break;
                }
}
void doisd(){
     if(valor[b]=='1'){
                switch(valor[b-1]){
                          case '0':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," dez ");break;
                          case '1':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," onze ");break;//verifica caso dgito seja um
                          case '2':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," doze ");break;
                          case '3':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," treze ");break;
                          case '4':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," quatorze ");break;
                          case '5':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," quinze ");break;
                          case '6':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," dezesseis ");break;
                          case '7':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," dezessete ");break;
                          case '8':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," dezoito ");break;
                          case '9':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," dezenove ");break;
                }
     }
     else{ 
         switch(valor[b]){//se for zero nao faz nada
                          case '2':if(cont>=3)strcat(imprimir,"e");strcat(imprimir," vinte ");break;//verifica caso dgito seja um
                          case '3':if(cont>=3)strcat(imprimir,"e");strcat(imprimir," trinta ");break;
                          case '4':if(cont>=3)strcat(imprimir,"e");strcat(imprimir," quarenta ");break;
                          case '5':if(cont>=3)strcat(imprimir,"e");strcat(imprimir," cinquenta ");break;
                          case '6':if(cont>=3)strcat(imprimir,"e");strcat(imprimir," sessenta ");break;
                          case '7':if(cont>=3)strcat(imprimir,"e");strcat(imprimir," setenta ");break;
                          case '8':if(cont>=3)strcat(imprimir,"e");strcat(imprimir," oitenta ");break;
                          case '9':if(cont>=3)strcat(imprimir,"e");strcat(imprimir," noventa ");break;
                }          
         }
}

void tresd(){
         switch(valor[b]){//se for zero nao faz nada
                          case '1':if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir," cem "); else strcat(imprimir," cento ");break;//verifica caso dgito seja um
                          case '2':strcat(imprimir," duzentos ");break;
                          case '3':strcat(imprimir," trezentos ");break;
                          case '4':strcat(imprimir," quatrocentos ");break;
                          case '5':strcat(imprimir," quinhentos ");break;
                          case '6':strcat(imprimir," seiscentos ");break;
                          case '7':strcat(imprimir," setecentos ");break;
                          case '8':strcat(imprimir," oitocentos ");break;
                          case '9':strcat(imprimir," novecentos ");break;
                }          
}
void quatrod(){
           switch(valor[b]){//se for zero nao faz nada
                          case '1':if(cont>=5)strcat(imprimir,"e");strcat(imprimir," um mil ");break;//verifica caso dgito seja um
                          case '2':if(cont>=5)strcat(imprimir,"e");strcat(imprimir," dois mil");break;
                          case '3':if(cont>=5)strcat(imprimir,"e");strcat(imprimir," tres mil ");break;
                          case '4':if(cont>=5)strcat(imprimir,"e");strcat(imprimir," quatro mil ");break;
                          case '5':if(cont>=5)strcat(imprimir,"e");strcat(imprimir," cinco mil ");break;
                          case '6':if(cont>=5)strcat(imprimir,"e");strcat(imprimir," seis mil ");break;
                          case '7':if(cont>=5)strcat(imprimir,"e");strcat(imprimir," sete mil ");break;
                          case '8':if(cont>=5)strcat(imprimir,"e");strcat(imprimir," oito mil ");break;
                          case '9':if(cont>=5)strcat(imprimir,"e");strcat(imprimir," nove mil ");break;
                }          
     
}                           
void cincod(){
     if(valor[b-1]=='0'&&valor[b]=='1'){
         switch(valor[b]){
                          case '1':strcat(imprimir," dez mil ");break;//verifica caso dgito seja um
                         
                }
     }
     else if(valor[b]=='1'){          
         switch(valor[b-1]){//se for zero nao faz nada
                          case '1':b--;if(cont>=6)strcat(imprimir,"e");strcat(imprimir," onze mil ");break;//verifica caso dgito seja um
                          case '2':b--;if(cont>=6)strcat(imprimir,"e");strcat(imprimir," doze mil ");break;
                          case '3':b--;if(cont>=6)strcat(imprimir,"e");strcat(imprimir," treze mil ");break;
                          case '4':b--;if(cont>=6)strcat(imprimir,"e");strcat(imprimir," quatorze mil ");break;
                          case '5':b--;if(cont>=6)strcat(imprimir,"e");strcat(imprimir," quinze mil ");break;
                          case '6':b--;if(cont>=6)strcat(imprimir,"e");strcat(imprimir," dezesseis mil ");break;
                          case '7':b--;if(cont>=6)strcat(imprimir,"e");strcat(imprimir," dezessete mil ");break;
                          case '8':b--;if(cont>=6)strcat(imprimir,"e");strcat(imprimir," dezoito mil ");break;
                          case '9':b--;if(cont>=6)strcat(imprimir,"e");strcat(imprimir," dezenove mil ");break;
                }          
         }
         else{ 
                  switch(valor[b]){//se for zero nao faz nada
                          case '2':if(cont>=7)strcat(imprimir,"e");strcat(imprimir," vinte ");if((valor[b-1])=='0')strcat(imprimir,"mil ");break;//verifica caso dgito seja um
                          case '3':if(cont>=7)strcat(imprimir,"e");strcat(imprimir," trinta ");if((valor[b-1])=='0')strcat(imprimir,"mil ");break;
                          case '4':if(cont>=7)strcat(imprimir,"e");strcat(imprimir," quarenta ");if((valor[b-1])=='0')strcat(imprimir,"mil ");break;
                          case '5':if(cont>=7)strcat(imprimir,"e");strcat(imprimir," cinquenta ");if((valor[b-1])=='0')strcat(imprimir,"mil ");break;
                          case '6':if(cont>=7)strcat(imprimir,"e");strcat(imprimir," sessenta ");if((valor[b-1])=='0')strcat(imprimir,"mil ");break;
                          case '7':if(cont>=7)strcat(imprimir,"e");strcat(imprimir," setenta ");if((valor[b-1])=='0')strcat(imprimir,"mil ");break;
                          case '8':if(cont>=7)strcat(imprimir,"e");strcat(imprimir," oitenta ");if((valor[b-1])=='0')strcat(imprimir,"mil ");break;
                          case '9':if(cont>=7)strcat(imprimir,"e");strcat(imprimir," noventa ");if((valor[b-1])=='0')strcat(imprimir,"mil ");break;
                  }          
         }
}         
         
void seisd(){
         switch(valor[b]){//se for zero nao faz nada
                          case '1':if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir," cem mil");else strcat(imprimir," cento ");break;//verifica caso dgito seja um
                          case '2':strcat(imprimir," duzentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"mil ");break;
                          case '3':strcat(imprimir," trezentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"mil ");break;
                          case '4':strcat(imprimir," quatrocentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"mil ");break;
                          case '5':strcat(imprimir," quinhentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"mil ");break;
                          case '6':strcat(imprimir," seiscentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"mil ");break;
                          case '7':strcat(imprimir," setecentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"mil ");break;
                          case '8':strcat(imprimir," oitocentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"mil ");break;
                          case '9':strcat(imprimir," novecentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"mil ");break;
         }
}
void seted(){
     if(cont>=7)
         switch(valor[b]){//se for zero nao faz nada
                          case '1':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," um milhao ");break;//verifica caso dgito seja um
                          case '2':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," dois milhoes ");break;
                          case '3':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," tres milhoes ");break;
                          case '4':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," quatro milhoes ");break;
                          case '5':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," cinco milhoes ");break;
                          case '6':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," seis milhoes ");break;
                          case '7':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," sete milhoes ");break;
                          case '8':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," oito milhoes ");break;
                          case '9':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," nove milhoes ");break;
                }          
     
}
void oitod(){
     if(valor[b-1]=='0'&&valor[b]=='1'){
         switch(valor[b]){
                          case '1':strcat(imprimir," dez milhoes ");break;//verifica caso dgito seja um
                         
                }
     }
     else if(valor[b]=='1'){          
         switch(valor[b-1]){//se for zero nao faz nada
                          case '1':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," onze milhoes ");break;//verifica caso dgito seja um
                          case '2':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," doze milhoes ");break;
                          case '3':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," treze milhoes ");break;
                          case '4':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," quatorze milhoes ");break;
                          case '5':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," quinze milhoes ");break;
                          case '6':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," dezesseis milhoes ");break;
                          case '7':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," dezessete milhoes ");break;
                          case '8':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," dezoito milhoes ");break;
                          case '9':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," dezenove milhoes ");break;
                }
         }
         else{ 
                  switch(valor[b]){//se for zero nao faz nada
                          case '2':if(cont>8)strcat(imprimir,"e");strcat(imprimir," vinte ");if((valor[b-1])=='0')strcat(imprimir,"milhoes ");break;//verifica caso dgito seja um
                          case '3':if(cont>8)strcat(imprimir,"e");strcat(imprimir," trinta ");if((valor[b-1])=='0')strcat(imprimir,"milhoes ");break;
                          case '4':if(cont>8)strcat(imprimir,"e");strcat(imprimir," quarenta ");if((valor[b-1])=='0')strcat(imprimir,"milhoes ");break;
                          case '5':if(cont>8)strcat(imprimir,"e");strcat(imprimir," cinquenta ");if((valor[b-1])=='0')strcat(imprimir,"milhoes ");break;
                          case '6':if(cont>8)strcat(imprimir,"e");strcat(imprimir," sessenta ");if((valor[b-1])=='0')strcat(imprimir,"milhoes ");break;
                          case '7':if(cont>8)strcat(imprimir,"e");strcat(imprimir," setenta ");if((valor[b-1])=='0')strcat(imprimir,"milhoes ");break;
                          case '8':if(cont>8)strcat(imprimir,"e");strcat(imprimir," oitenta ");if((valor[b-1])=='0')strcat(imprimir,"milhoes ");break;
                          case '9':if(cont>8)strcat(imprimir,"e");strcat(imprimir," noventa ");if((valor[b-1])=='0')strcat(imprimir,"milhoes ");break;
                  } 
         }
}
void noved(){
         switch(valor[b]){//se for zero nao faz nada
                          case '1':if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir," cem milhoes");else strcat(imprimir," cento ");break;//verifica caso dgito seja um
                          case '2':strcat(imprimir," duzentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"milhoes ");break;
                          case '3':strcat(imprimir," trezentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"milhoes ");break;
                          case '4':strcat(imprimir," quatrocentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"milhoes ");break;
                          case '5':strcat(imprimir," quinhentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"milhoes ");break;
                          case '6':strcat(imprimir," seiscentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"milhoes ");break;
                          case '7':strcat(imprimir," setecentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"milhoes ");break;
                          case '8':strcat(imprimir," oitocentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"milhoes ");break;
                          case '9':strcat(imprimir," novecentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"milhoes ");break;
         }
}         

void inverter(char dados[20]){//funcao inverter string
  char auxc;
  int ac,bc,contc;
  contc=strlen(dados);
  bc=contc;
  for (ac=0;ac<contc/2;ac++){
        bc--;  
      auxc=valor[ac];
      valor[ac]=valor[bc];
      valor[bc]=auxc;
 }
}

          
void tamanhochar(){
    printf("Digite valor:");
    scanf("%s", &valor);
    cont=strlen(valor);
    inverter(valor);
    if(valor[0]=='0'&&cont<=1){
                 strcat(imprimir,"Zero");
                 }
}

int main(){
    tamanhochar();
    int a;
    for(b=cont;b>=0;b--){
      switch (b){
              
              case 0:umd();break;//verifica qual casa decimal esta a correr //;
              case 1:doisd();break;
              case 2:tresd();break;
              case 3:quatrod();break;
              case 4:cincod();break;
              case 5:seisd();break;
              case 6:seted();break;
              case 7:oitod();break;
              case 8:noved();break;
       }
       
    }
    printf("\n\n\%s\n\n", imprimir);
    getchar();
}

jhr boletim v1.0

Calculando fatorial em C

Fibonacci Recursivo e Não Recursivo

Relógio em C

Calcular Fatorial

#1 Comentário enviado por alexandrecandido em 05/04/2012 - 10:52h
O codigo acima foi modificado para funcionar em linux;
#2 Comentário enviado por Miqueloti em 10/04/2012 - 12:56h
Nossa, quantos cases rsrs... Mais ai, parabéns!!! Achei original a idéia de um script para converter para extenso o valor em inteiro. E o melhor, está facinho para cada um converter para a linguagem preferida, foi utilizado apenas funções e loops básicos, tornando possível para qualquer linguagem receber uma tradução sem dificuldades.
#3 Comentário enviado por willdoidao em 13/03/2015 - 19:38h
Cara estou tentando seguir o seu exemplo e fazer o código até trilhão mas não estou conseguindo, poderia mostar como faz?
#4 Comentário enviado por alexandrecandido em 13/03/2015 - 20:28h

[3] Comentário enviado por willdoidao em 13/03/2015 - 19:38h

Cara estou tentando seguir o seu exemplo e fazer o código até trilhão mas não estou conseguindo, poderia mostar como faz?


Cara estou disposto a te ajudar sim, posta seu código para podermos verificar.
#5 Comentário enviado por alexandrecandido em 14/03/2015 - 14:44h

[3] Comentário enviado por willdoidao em 13/03/2015 - 19:38h

Cara estou tentando seguir o seu exemplo e fazer o código até trilhão mas não estou conseguindo, poderia mostar como faz?




#include<stdio.h>
#include<string.h>
int cont=0,b;//b tambem define 01unidade 02dezena 03centena 04milhar 05milhao nessa ordem crescente
char valor[20],imprimir[200];
void umd(){
switch(valor[b]){
case '1':if(cont>=2)strcat(imprimir,"e");strcat(imprimir," um ");break;//verifica caso dgito seja um
case '2':if(cont>=2)strcat(imprimir,"e");strcat(imprimir," dois ");break;
case '3':if(cont>=2)strcat(imprimir,"e");strcat(imprimir," tres ");break;
case '4':if(cont>=2)strcat(imprimir,"e");strcat(imprimir," quatro ");break;
case '5':if(cont>=2)strcat(imprimir,"e");strcat(imprimir," cinco ");break;
case '6':if(cont>=2)strcat(imprimir,"e");strcat(imprimir," seis ");break;
case '7':if(cont>=2)strcat(imprimir,"e");strcat(imprimir," sete ");break;
case '8':if(cont>=2)strcat(imprimir,"e");strcat(imprimir," oito ");break;
case '9':if(cont>=2)strcat(imprimir,"e");strcat(imprimir," nove ");break;
}
}
void doisd(){
if(valor[b]=='1'){
switch(valor[b-1]){
case '0':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," dez ");break;
case '1':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," onze ");break;//verifica caso dgito seja um
case '2':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," doze ");break;
case '3':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," treze ");break;
case '4':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," quatorze ");break;
case '5':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," quinze ");break;
case '6':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," dezesseis ");break;
case '7':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," dezessete ");break;
case '8':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," dezoito ");break;
case '9':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," dezenove ");break;
}
}
else{
switch(valor[b]){//se for zero nao faz nada
case '2':if(cont>=3)strcat(imprimir,"e");strcat(imprimir," vinte ");break;//verifica caso dgito seja um
case '3':if(cont>=3)strcat(imprimir,"e");strcat(imprimir," trinta ");break;
case '4':if(cont>=3)strcat(imprimir,"e");strcat(imprimir," quarenta ");break;
case '5':if(cont>=3)strcat(imprimir,"e");strcat(imprimir," cinquenta ");break;
case '6':if(cont>=3)strcat(imprimir,"e");strcat(imprimir," sessenta ");break;
case '7':if(cont>=3)strcat(imprimir,"e");strcat(imprimir," setenta ");break;
case '8':if(cont>=3)strcat(imprimir,"e");strcat(imprimir," oitenta ");break;
case '9':if(cont>=3)strcat(imprimir,"e");strcat(imprimir," noventa ");break;
}
}
}

void tresd(){
switch(valor[b]){//se for zero nao faz nada
case '1':if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir," cem "); else strcat(imprimir," cento ");break;//verifica caso dgito seja um
case '2':strcat(imprimir," duzentos ");break;
case '3':strcat(imprimir," trezentos ");break;
case '4':strcat(imprimir," quatrocentos ");break;
case '5':strcat(imprimir," quinhentos ");break;
case '6':strcat(imprimir," seiscentos ");break;
case '7':strcat(imprimir," setecentos ");break;
case '8':strcat(imprimir," oitocentos ");break;
case '9':strcat(imprimir," novecentos ");break;
}
}
void quatrod(){
switch(valor[b]){//se for zero nao faz nada
case '1':if(cont>=5)strcat(imprimir,"e");strcat(imprimir," um mil ");break;//verifica caso dgito seja um
case '2':if(cont>=5)strcat(imprimir,"e");strcat(imprimir," dois mil");break;
case '3':if(cont>=5)strcat(imprimir,"e");strcat(imprimir," tres mil ");break;
case '4':if(cont>=5)strcat(imprimir,"e");strcat(imprimir," quatro mil ");break;
case '5':if(cont>=5)strcat(imprimir,"e");strcat(imprimir," cinco mil ");break;
case '6':if(cont>=5)strcat(imprimir,"e");strcat(imprimir," seis mil ");break;
case '7':if(cont>=5)strcat(imprimir,"e");strcat(imprimir," sete mil ");break;
case '8':if(cont>=5)strcat(imprimir,"e");strcat(imprimir," oito mil ");break;
case '9':if(cont>=5)strcat(imprimir,"e");strcat(imprimir," nove mil ");break;
}

}
void cincod(){
if(valor[b-1]=='0'&&valor[b]=='1'){
switch(valor[b]){
case '1':strcat(imprimir," dez mil ");break;//verifica caso dgito seja um

}
}
else if(valor[b]=='1'){
switch(valor[b-1]){//se for zero nao faz nada
case '1':b--;if(cont>=6)strcat(imprimir,"e");strcat(imprimir," onze mil ");break;//verifica caso dgito seja um
case '2':b--;if(cont>=6)strcat(imprimir,"e");strcat(imprimir," doze mil ");break;
case '3':b--;if(cont>=6)strcat(imprimir,"e");strcat(imprimir," treze mil ");break;
case '4':b--;if(cont>=6)strcat(imprimir,"e");strcat(imprimir," quatorze mil ");break;
case '5':b--;if(cont>=6)strcat(imprimir,"e");strcat(imprimir," quinze mil ");break;
case '6':b--;if(cont>=6)strcat(imprimir,"e");strcat(imprimir," dezesseis mil ");break;
case '7':b--;if(cont>=6)strcat(imprimir,"e");strcat(imprimir," dezessete mil ");break;
case '8':b--;if(cont>=6)strcat(imprimir,"e");strcat(imprimir," dezoito mil ");break;
case '9':b--;if(cont>=6)strcat(imprimir,"e");strcat(imprimir," dezenove mil ");break;
}
}
else{
switch(valor[b]){//se for zero nao faz nada
case '2':if(cont>=7)strcat(imprimir,"e");strcat(imprimir," vinte ");if((valor[b-1])=='0')strcat(imprimir,"mil ");break;//verifica caso dgito seja um
case '3':if(cont>=7)strcat(imprimir,"e");strcat(imprimir," trinta ");if((valor[b-1])=='0')strcat(imprimir,"mil ");break;
case '4':if(cont>=7)strcat(imprimir,"e");strcat(imprimir," quarenta ");if((valor[b-1])=='0')strcat(imprimir,"mil ");break;
case '5':if(cont>=7)strcat(imprimir,"e");strcat(imprimir," cinquenta ");if((valor[b-1])=='0')strcat(imprimir,"mil ");break;
case '6':if(cont>=7)strcat(imprimir,"e");strcat(imprimir," sessenta ");if((valor[b-1])=='0')strcat(imprimir,"mil ");break;
case '7':if(cont>=7)strcat(imprimir,"e");strcat(imprimir," setenta ");if((valor[b-1])=='0')strcat(imprimir,"mil ");break;
case '8':if(cont>=7)strcat(imprimir,"e");strcat(imprimir," oitenta ");if((valor[b-1])=='0')strcat(imprimir,"mil ");break;
case '9':if(cont>=7)strcat(imprimir,"e");strcat(imprimir," noventa ");if((valor[b-1])=='0')strcat(imprimir,"mil ");break;
}
}
}

void seisd(){
switch(valor[b]){//se for zero nao faz nada
case '1':if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir," cem mil");else strcat(imprimir," cento ");break;//verifica caso dgito seja um
case '2':strcat(imprimir," duzentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"mil ");break;
case '3':strcat(imprimir," trezentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"mil ");break;
case '4':strcat(imprimir," quatrocentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"mil ");break;
case '5':strcat(imprimir," quinhentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"mil ");break;
case '6':strcat(imprimir," seiscentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"mil ");break;
case '7':strcat(imprimir," setecentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"mil ");break;
case '8':strcat(imprimir," oitocentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"mil ");break;
case '9':strcat(imprimir," novecentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"mil ");break;
}
}
void seted(){
if(cont>=7)
switch(valor[b]){//se for zero nao faz nada
case '1':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," um milhao ");break;//verifica caso dgito seja um
case '2':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," dois milhoes ");break;
case '3':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," tres milhoes ");break;
case '4':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," quatro milhoes ");break;
case '5':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," cinco milhoes ");break;
case '6':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," seis milhoes ");break;
case '7':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," sete milhoes ");break;
case '8':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," oito milhoes ");break;
case '9':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," nove milhoes ");break;
}

}
void oitod(){
if(valor[b-1]=='0'&&valor[b]=='1'){
switch(valor[b]){
case '1':strcat(imprimir," dez milhoes ");break;//verifica caso dgito seja um

}
}
else if(valor[b]=='1'){
switch(valor[b-1]){//se for zero nao faz nada
case '1':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," onze milhoes ");break;//verifica caso dgito seja um
case '2':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," doze milhoes ");break;
case '3':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," treze milhoes ");break;
case '4':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," quatorze milhoes ");break;
case '5':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," quinze milhoes ");break;
case '6':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," dezesseis milhoes ");break;
case '7':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," dezessete milhoes ");break;
case '8':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," dezoito milhoes ");break;
case '9':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," dezenove milhoes ");break;
}
}
else{
switch(valor[b]){//se for zero nao faz nada
case '2':if(cont>8)strcat(imprimir,"e");strcat(imprimir," vinte ");if((valor[b-1])=='0')strcat(imprimir,"milhoes ");break;//verifica caso dgito seja um
case '3':if(cont>8)strcat(imprimir,"e");strcat(imprimir," trinta ");if((valor[b-1])=='0')strcat(imprimir,"milhoes ");break;
case '4':if(cont>8)strcat(imprimir,"e");strcat(imprimir," quarenta ");if((valor[b-1])=='0')strcat(imprimir,"milhoes ");break;
case '5':if(cont>8)strcat(imprimir,"e");strcat(imprimir," cinquenta ");if((valor[b-1])=='0')strcat(imprimir,"milhoes ");break;
case '6':if(cont>8)strcat(imprimir,"e");strcat(imprimir," sessenta ");if((valor[b-1])=='0')strcat(imprimir,"milhoes ");break;
case '7':if(cont>8)strcat(imprimir,"e");strcat(imprimir," setenta ");if((valor[b-1])=='0')strcat(imprimir,"milhoes ");break;
case '8':if(cont>8)strcat(imprimir,"e");strcat(imprimir," oitenta ");if((valor[b-1])=='0')strcat(imprimir,"milhoes ");break;
case '9':if(cont>8)strcat(imprimir,"e");strcat(imprimir," noventa ");if((valor[b-1])=='0')strcat(imprimir,"milhoes ");break;
}
}
}
void noved(){
switch(valor[b]){//se for zero nao faz nada
case '1':if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir," cem milhoes");else strcat(imprimir," cento ");break;//verifica caso dgito seja um
case '2':strcat(imprimir," duzentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"milhoes ");break;
case '3':strcat(imprimir," trezentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"milhoes ");break;
case '4':strcat(imprimir," quatrocentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"milhoes ");break;
case '5':strcat(imprimir," quinhentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"milhoes ");break;
case '6':strcat(imprimir," seiscentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"milhoes ");break;
case '7':strcat(imprimir," setecentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"milhoes ");break;
case '8':strcat(imprimir," oitocentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"milhoes ");break;
case '9':strcat(imprimir," novecentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"milhoes ");break;
}
}

void dezd(){
if(cont>=7)
switch(valor[b]){//se for zero nao faz nada
case '1':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," um bilhao ");break;//verifica caso dgito seja um
case '2':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," dois bilhoes ");break;
case '3':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," tres bilhoes ");break;
case '4':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," quatro bilhoes ");break;
case '5':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," cinco bilhoes ");break;
case '6':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," seis bilhoes ");break;
case '7':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," sete bilhoes ");break;
case '8':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," oito bilhoes ");break;
case '9':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," nove bilhoes ");break;
}

}
void onzed(){
if(valor[b-1]=='0'&&valor[b]=='1'){
switch(valor[b]){
case '1':strcat(imprimir," dez bilhoes ");break;//verifica caso dgito seja um

}
}
else if(valor[b]=='1'){
switch(valor[b-1]){//se for zero nao faz nada
case '1':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," onze bilhoes ");break;//verifica caso dgito seja um
case '2':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," doze bilhoes ");break;
case '3':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," treze bilhoes ");break;
case '4':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," quatorze bilhoes ");break;
case '5':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," quinze bilhoes ");break;
case '6':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," dezesseis bilhoes ");break;
case '7':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," dezessete bilhoes ");break;
case '8':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," dezoito bilhoes ");break;
case '9':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," dezenove bilhoes ");break;
}
}
else{
switch(valor[b]){//se for zero nao faz nada
case '2':if(cont>8)strcat(imprimir,"e");strcat(imprimir," vinte ");if((valor[b-1])=='0')strcat(imprimir,"bilhoes ");break;//verifica caso dgito seja um
case '3':if(cont>8)strcat(imprimir,"e");strcat(imprimir," trinta ");if((valor[b-1])=='0')strcat(imprimir,"bilhoes ");break;
case '4':if(cont>8)strcat(imprimir,"e");strcat(imprimir," quarenta ");if((valor[b-1])=='0')strcat(imprimir,"bilhoes ");break;
case '5':if(cont>8)strcat(imprimir,"e");strcat(imprimir," cinquenta ");if((valor[b-1])=='0')strcat(imprimir,"bilhoes ");break;
case '6':if(cont>8)strcat(imprimir,"e");strcat(imprimir," sessenta ");if((valor[b-1])=='0')strcat(imprimir,"bilhoes ");break;
case '7':if(cont>8)strcat(imprimir,"e");strcat(imprimir," setenta ");if((valor[b-1])=='0')strcat(imprimir,"bilhoes ");break;
case '8':if(cont>8)strcat(imprimir,"e");strcat(imprimir," oitenta ");if((valor[b-1])=='0')strcat(imprimir,"bilhoes ");break;
case '9':if(cont>8)strcat(imprimir,"e");strcat(imprimir," noventa ");if((valor[b-1])=='0')strcat(imprimir,"bilhoes ");break;
}
}
}
void dozed(){
switch(valor[b]){//se for zero nao faz nada
case '1':if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir," cem bilhoes");else strcat(imprimir," cento ");break;//verifica caso dgito seja um
case '2':strcat(imprimir," duzentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"bilhoes ");break;
case '3':strcat(imprimir," trezentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"bilhoes ");break;
case '4':strcat(imprimir," quatrocentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"bilhoes ");break;
case '5':strcat(imprimir," quinhentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"bilhoes ");break;
case '6':strcat(imprimir," seiscentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"bilhoes ");break;
case '7':strcat(imprimir," setecentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"bilhoes ");break;
case '8':strcat(imprimir," oitocentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"bilhoes ");break;
case '9':strcat(imprimir," novecentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"bilhoes ");break;
}
}

void trezed(){
if(cont>=7)
switch(valor[b]){//se for zero nao faz nada
case '1':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," um trilhao ");break;//verifica caso dgito seja um
case '2':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," dois trilhoes ");break;
case '3':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," tres trilhoes ");break;
case '4':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," quatro trilhoes ");break;
case '5':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," cinco trilhoes ");break;
case '6':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," seis trilhoes ");break;
case '7':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," sete trilhoes ");break;
case '8':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," oito trilhoes ");break;
case '9':if(cont>=8)strcat(imprimir,"e");strcat(imprimir," nove trilhoes ");break;
}

}
void quatorzed(){
if(valor[b-1]=='0'&&valor[b]=='1'){
switch(valor[b]){
case '1':strcat(imprimir," dez trilhoes ");break;//verifica caso dgito seja um

}
}
else if(valor[b]=='1'){
switch(valor[b-1]){//se for zero nao faz nada
case '1':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," onze trilhoes ");break;//verifica caso dgito seja um
case '2':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," doze trilhoes ");break;
case '3':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," treze trilhoes ");break;
case '4':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," quatorze trilhoes ");break;
case '5':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," quinze trilhoes ");break;
case '6':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," dezesseis trilhoes ");break;
case '7':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," dezessete trilhoes ");break;
case '8':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," dezoito trilhoes ");break;
case '9':b--;if(cont>=9)strcat(imprimir,"e");strcat(imprimir," dezenove trilhoes ");break;
}
}
else{
switch(valor[b]){//se for zero nao faz nada
case '2':if(cont>8)strcat(imprimir,"e");strcat(imprimir," vinte ");if((valor[b-1])=='0')strcat(imprimir,"trilhoes ");break;//verifica caso dgito seja um
case '3':if(cont>8)strcat(imprimir,"e");strcat(imprimir," trinta ");if((valor[b-1])=='0')strcat(imprimir,"trilhoes ");break;
case '4':if(cont>8)strcat(imprimir,"e");strcat(imprimir," quarenta ");if((valor[b-1])=='0')strcat(imprimir,"trilhoes ");break;
case '5':if(cont>8)strcat(imprimir,"e");strcat(imprimir," cinquenta ");if((valor[b-1])=='0')strcat(imprimir,"trilhoes ");break;
case '6':if(cont>8)strcat(imprimir,"e");strcat(imprimir," sessenta ");if((valor[b-1])=='0')strcat(imprimir,"trilhoes ");break;
case '7':if(cont>8)strcat(imprimir,"e");strcat(imprimir," setenta ");if((valor[b-1])=='0')strcat(imprimir,"trilhoes ");break;
case '8':if(cont>8)strcat(imprimir,"e");strcat(imprimir," oitenta ");if((valor[b-1])=='0')strcat(imprimir,"trilhoes ");break;
case '9':if(cont>8)strcat(imprimir,"e");strcat(imprimir," noventa ");if((valor[b-1])=='0')strcat(imprimir,"trilhoes ");break;
}
}
}
void quinzed(){
switch(valor[b]){//se for zero nao faz nada
case '1':if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir," cem trilhoes");else strcat(imprimir," cento ");break;//verifica caso dgito seja um
case '2':strcat(imprimir," duzentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"trilhoes ");break;
case '3':strcat(imprimir," trezentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"trilhoes ");break;
case '4':strcat(imprimir," quatrocentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"trilhoes ");break;
case '5':strcat(imprimir," quinhentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"trilhoes ");break;
case '6':strcat(imprimir," seiscentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"trilhoes ");break;
case '7':strcat(imprimir," setecentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"trilhoes ");break;
case '8':strcat(imprimir," oitocentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"trilhoes ");break;
case '9':strcat(imprimir," novecentos ");if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir,"trilhoes ");break;
}
}

void inverter(char dados[20]){//funcao inverter string
char auxc;
int ac,bc,contc;
contc=strlen(dados);
bc=contc;
for (ac=0;ac<contc/2;ac++){
bc--;
auxc=valor[ac];
valor[ac]=valor[bc];
valor[bc]=auxc;
}
}


void tamanhochar(){
printf("Digite valor:");
scanf("%s", &valor);
cont=strlen(valor);
inverter(valor);
if(valor[0]=='0'&&cont<=1){
strcat(imprimir,"Zero");
}
}

int main(){
tamanhochar();
int a;
for(b=cont;b>=0;b--){
switch (b){

case 0:umd();break;//verifica qual casa decimal esta a correr //;
case 1:doisd();break;
case 2:tresd();break;
case 3:quatrod();break;
case 4:cincod();break;
case 5:seisd();break;
case 6:seted();break;
case 7:oitod();break;
case 8:noved();break;
case 9:dezd();break;
case 10:onzed();break;
case 11:dozed();break;
case 12:trezed();break;
case 13:quatorzed();break;
case 14:quinzed();break;
}

}
printf("\n\n\%s\n\n", imprimir);
getchar();
}
#6 Comentário enviado por saulonod em 23/11/2015 - 10:55h
como faço pra restringir do usuário ate 12.000.000?
#7 Comentário enviado por lukasc95 em 16/06/2017 - 10:56h
Olá, sou novo em linguagens de programação como faço para por números negativos a esse código ?

Contribuir com comentário

Entre na sua conta para comentar.