Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

nitio

Escrever numeros por extenso!

Recommended Posts

Preciso fazer um programa em linguagem C que solicite ao usuario digitar um numero de zero a 999.999, em seguida deverá ser impresso por extenso. O programa NÃO deverá utilizar funções ou concatenção de string por matéria ainda não dada!

 

EX: Usuario: Digite um numero: 12

Escrever: doze

 

 

EX: Usuario: Digite um numero: 1478

Escrever: Mil Quatrocentos e setenta e oito

 

 

 

Que puder ajudar ficaria mt grato!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vai te dar um pouco de trabalho porque primeiro voce vai ter que escrever todos os números de 0 a 20, depois todos múltiplos de 10 até 100, depois todos os múltiplos de 100 até 1000.Mas depois disso é mamão com açúcar.Separa a entrada pelas casas de unidade, dezena, centena etc. (Pra isso voce pode ir dividindo por 10 e pegando o resto)Depois disso é só fazer a leitura e utilizar um switch pra imprimir como tá... tipoEntrada> 2358Milhar = 2Centena = 3Dezena = 5Unidade = 8Fazendo a impressão:Milhar 2? Então fica "Dois Mil e "Centena 3? Então fica "Trezentos e "Dezena 5? Então fica "Cinqüenta e "Unidade 8? Então fica "Oito"Juntando> 2358 Dois mil e trezentos e cinqüenta e oitoO trabalhoso é escrever é guardar os números por extenso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valew pela dica, caso alguem tenha outra sera bem vinda tb!Muito Obrigado!

char* unidade[20] = { "","um","dois","três","quatro", "cinco","seis", "sete", "oito", "nove", "dez", "onze", "doze", "treze","quatorze","quinze","dezesseis","dezessete","dezoito","dezenove"};char* dezena[10] = { "","","vinte","trinta","quarenta", "cincoenta","sessenta", "setenta", "oitenta", "noventa"};char* centena[10] = {"cem", "cento", "duzentos", "trezentos" , "quatrocentos", "quinhentos", "seiscentos","setecentos","oitocentos","novecentos"};char* PorExtenso(int iNumero){ char* cBufferRes = new char[256]; memset(cBufferRes,0,256); int iMilhar = iNumero/1000; int iCentena = iNumero%1000/100; int iDezena = iNumero%1000%100/10; int iUnidade = iNumero%1000%100%10; if(iMilhar) { char cTeste[200]={0}; strcat(cTeste, PorExtenso(iMilhar)); strcat(cBufferRes, cTeste); strcat(cBufferRes, " mil"); } if(iCentena) { if(iCentena == 1 && iDezena == 0 && iUnidade == 0) { if(iMilhar) strcat(cBufferRes, " e "); strcat(cBufferRes, "cem"); } else { if(iMilhar) strcat(cBufferRes, " "); strcat(cBufferRes, centena[iCentena]); } } if(iDezena) { if(iCentena || iMilhar) strcat(cBufferRes, " e "); if(iDezena < 2) { strcat(cBufferRes, unidade[iDezena*10+iUnidade]); return cBufferRes; } else strcat(cBufferRes, dezena[iDezena]); } if(iUnidade) { if(iCentena || iMilhar || iDezena) strcat(cBufferRes, " e "); strcat(cBufferRes, unidade[iUnidade]); } return cBufferRes;}Acho que isso ajudará ... Hehehehe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.