nitio 0 Denunciar post Postado Abril 3, 2007 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
skimo-solar 0 Denunciar post Postado Abril 3, 2007 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
nitio 0 Denunciar post Postado Abril 3, 2007 Valew pela dica, caso alguem tenha outra sera bem vinda tb!Muito Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
omar.pessoa 1 Denunciar post Postado Agosto 16, 2007 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