Numero por extenso em c

Publicado por Alexandre Alves Candido (última atualização em 05/04/2012)

[ Hits: 20.642 ]

Download numeroporextensolinux.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.

  



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();
}

Scripts recomendados

Negocio da roça

Funções de comparação de String

Utilizando arrays, funções e arquivos de texto

calculadora

fibonacci


  

Comentários
[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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts