Numero por extenso em c
Publicado por Alexandre Alves Candido (última atualização em 05/04/2012)
[ Hits: 21.377 ]
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.
#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();
}
Parte 5 (ORDENANDO NUMEROS) - Sessão de estudo sobre MATRIZES
Minha primeira biblioteca em C
Imprime um mapa de caracteres ASCII
[C++] remover todos os multiplos de 3
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Como automatizar sua instalação do Ubuntu para desenvolvimento de software.
Consertando o áudio com som ruim no Pipewire
Como implementar Raid (0, 1, 5, 6, 10 e 50)
fusermount3 no Ubuntu 25.10 - mantenha o perfil do AppArmor
[Resolvido] dlopen(): error loading libfuse.so.2 AppImages require FUSE to run.
Servidor Ubuntu 24.04 HD 500 não tenho espaço na \home\adminis... (2)
Como programar um sistema de controle para distribuições linux em c? (3)









