Baixe o app para aproveitar ainda mais
Prévia do material em texto
Trabalho Prático Números Por extenso Aluno Curso Davi Silva Sousa Engenharia de Telecomunicações Instruções Faça um programa que leia um inteiro entre 0 e 2.000.000.000 e realize sua impressão por extenso. Após isto o programa deve imprimir 5 múltiplos deste número, também por extenso. Obs.: não foi possível imprimir os 5 múltiplos no número digitado em alguns casos, pois estoura a capacidade de memória. Tentei utilizar long int e mesmo assim, não consegui. #include <iostream> using namespace std; char * centenas[] = {"", "cento", "duzentos", "trezentos", "quatrocentso", "quientos", "seiscentos", "setecentos", "oitocentos", "novecentos"}; char * dezenas[] = {"dez", "onze", "doze", "treze", "quatorze", "quinze", "dezesseis", "dezessete", "dezoito", "dezenove"}; char * dezenasVinte[] = {"", "dez", "vinte", "trinta", "quarenta", "cinquenta", "sessenta", "setenta", "oitenta", "noventa"}; char * unidades [] = { "", "um", "dois", "tres", "quatro", "cinco", "seis", "sete", "oito", "nove"}; void imprimirUnidade(int centena, int dezena, int unidade) { if (centena == 0 && dezena == 0 && unidade == 0) { return; } cout << centenas[centena] << " "; if (centena > 0 && dezena > 0) { cout << "e "; } if (dezena == 1) { cout << dezenas[unidade] << " "; } else { cout << dezenasVinte[dezena] << " "; if (dezena > 0 && unidade > 0) { cout << "e "; } cout << unidades[unidade] << " "; } } void imprimirBilhao(int unidade) { switch (unidade) { case 1: cout << "um bilhao "; break; case 2: cout << "dois bilhoes "; break; } } void imprimirMilhao(int centena, int dezena, int unidade) { if (centena == 0 && dezena == 0 && unidade == 0) { return; } imprimirUnidade(centena, dezena, unidade); if (unidade == 1 && dezena == 0 && centena == 0) { cout << "milhao "; } else { cout << "milhoes "; } } void imprimirMilhar(int centena, int dezena, int unidade) { if (centena == 0 && dezena == 0 && unidade == 0) { return; } imprimirUnidade(centena, dezena, unidade); cout << "mil "; } void numeroPorExtenso(int num) { int ub, centMilhao, dezMilhao, unidMilhao, centMilhar, dezMilhar, uniMilhar, centena, dezena, unidade; cout << num << " = "; if (num == 0) { cout << "zero" << endl; return; } //Bilhao ub = num / 1000000000; num = num - (ub * 1000000000); //Milhao centMilhao = num / 100000000; num = num -(centMilhao *100000000); dezMilhao = num / 10000000; num = num -(dezMilhao *10000000); unidMilhao = num / 1000000; num = num - (unidMilhao *1000000); //Milhar centMilhar = num / 100000; num = num -(centMilhar *100000); dezMilhar = num / 10000; num = num - (dezMilhar*10000); uniMilhar = num / 1000; num = num - (uniMilhar *1000); //Unidade centena = num / 100; num = num - (centena *100); dezena = num / 10; num = num - (dezena *10); unidade = num / 1; num = num - (unidade *1); imprimirBilhao(ub); imprimirMilhao(centMilhao, dezMilhao, unidMilhao); imprimirMilhar(centMilhar, dezMilhar, uniMilhar); imprimirUnidade(centena, dezena, unidade); cout << endl; } int main() { int numero; double f; cout << "Digite um numero:" << endl; cin >> numero; if (numero >= 0 && numero <= 2000000000) { for ( int i = 1; i <= 5; i++) { f = numero * i; numeroPorExtenso(numero); } } else { cout << "Numero invalido" << endl; } return 0; }
Compartilhar