erickts 0 Denunciar post Postado Abril 24, 2008 Este projeto tem por objetivo a elaboração de um programa para preenchimento automático de um cheque, dado um valor em reais até o dígito de bilhões. Dados de entrada: um valor em real; Saída: o valor escrito por extenso. Exemplos: Entrada: R$245,36 Saída: duzentos e quarenta e cinco reais e trinta e seis centavos Entrada: R$10.000.000,00 Saída: dez milhões de reais Entrada: R$1,20 Saída: um real e vinte centavos Entrada: R$25.958.845,00 Saída: vinte e cinco milhões novecentos e cinqüenta e oito mil oitocentos e quarenta e cinco reais. Preciso elaborar este projeto, será que alguém pode me ajudar.... Valew Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Abril 24, 2008 dê uma olhada nesse q é "parecido": http://forum.imasters.com.br/index.php?showtopic=282157 []'s Compartilhar este post Link para o post Compartilhar em outros sites
erickts 0 Denunciar post Postado Abril 25, 2008 dê uma olhada nesse q é "parecido": http://forum.imasters.com.br/index.php?showtopic=282157 []'s Meio caminho andado já, valew... ETS Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Abril 25, 2008 http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif va postando seu avanço no algoritmo para desenvolver-mos juntos! []'s Compartilhar este post Link para o post Compartilhar em outros sites
erickts 0 Denunciar post Postado Maio 29, 2008 Tô tentando evoluir... #include <stdio.h> #include<iostream> #include <string> #include <conio.h> using namespace std; int main() { int a, b, c, d, e, f, num; string bilhao,milhao,milhar,cent,dez,uni; printf("digite um numero :\n"); scanf("%d",&num); a=num/10000000; num=num%10000000; b=num/1000000; num=num%1000000; c=num/1000; num=num%1000; d=num/100; num=num%100; e=num/10; num=num%10; f=num/1; if(a>9) printf("\n numero invalido\n"); else { if(a==1&&b==0&&c==0&&d==0&&e==0&&f==0) printf("\nbilhao\n"); else if(a==0&&b==0&&c==0&&d==0&&e==0&&f==0) printf("\nZero\n"); else { if(a>=1&&b==0&&c==0&&d==0&&e==0&&f==0) { switch (a) { case 1 : bilhao="Um bilhao";break; case 2 : bilhao="Dois bilhoes";break; case 3 : bilhao="Tres bilhoes";break; case 4 : bilhao="Quatro bilhoes";break; case 5 : bilhao="Cinco bilhoes";break; case 6 : bilhao="Seis bilhoes";break; case 7 : bilhao="Sete bilhoes";break; case 8 : bilhao="Oito bilhoes";break; case 9 : bilhao="Nove bilhoes";break; } } if(b>9) printf("\n numero invalido\n"); else { if(a==0&&b==1&&c==0&&d==0&&e==0&&f==0) printf("\nmilhao\n"); else if(a==0&&b==0&&c==0&&d==0&&e==0&&f==0) printf("\nZero\n"); else { if(a==0&&b>=1&&c==0&&d==0&&e==0&&f==0) { switch (B) { case 1 : milhao=" Um milhao ";break; case 2 : milhao=" Dois milhoes ";break; case 3 : milhao=" Tres milhoes ";break; case 4 : milhao=" Quatro milhoes ";break; case 5 : milhao=" Cinco milhoes ";break; case 6 : milhao=" Seis milhoes ";break; case 7 : milhao=" Sete milhoes ";break; case 8 : milhao=" Oito milhoes ";break; case 9 : milhao=" Nove milhoes ";break; } } else { switch (B) { case 1 : milhao=" e um milhao ";break; case 2 : milhao=" e Dois milhoes ";break; case 3 : milhao=" e Tres milhoes ";break; case 4 : milhao=" e Quatro milhoes ";break; case 5 : milhao=" e Cinco milhoes ";break; case 6 : milhao=" e Seis milhoes ";break; case 7 : milhao=" e Sete milhoes ";break; case 8 : milhao=" e Oito milhoes ";break; case 9 : milhao=" e Nove milhoes ";break; } } if(c>9) printf("\n numero invalido\n"); else { if(a==0&&b==0&&c==1&&d==0&&e==0&&f==0) printf("\nmilhar\n"); else if(a==0&&b==0&&c==0&&d==0&&e==0&&f==0) printf("\nZero\n"); else { if(a==0&&b==0&&c>=1&&d==0&&e==0&&f==0) { switch © { case 1 : milhar="um mil";break; case 2 : milhar="dois mil";break; case 3 : milhar="tres mil";break; case 4 : milhar="quatro mil";break; case 5 : milhar="cinco mil";break; case 6 : milhar="Seis mil";break; case 7 : milhar="Sete mil";break; case 8 : milhar="Oito mil";break; case 9 : milhar="Nove mil";break; } } else { switch© { case 1 : milhar="e um mil";break; case 2 : milhar="e dois mil";break; case 3 : milhar="e tres mil";break; case 4 : milhar="e quatro mil";break; case 5 : milhar="e cinco mil";break; case 6 : milhar="e Seis mil";break; case 7 : milhar="e Sete mil";break; case 8 : milhar="e Oito mil";break; case 9 : milhar="e Nove mil";break; } } if(d>9) printf("\n numero invalido\n"); else { if(a==0&&b==0&&c==0&&d==1&&e==0&&f==0) printf("\nmilhar\n"); else if(a==0&&b==0&&c==0&&d==0&&e==0&&f==0) printf("\nZero\n"); else { if(a==0&&b==0&&c==0&&d>=1&&e==0&&f==0) { switch (d) { case 1 : cent="Cento ";break; case 2 : cent="Duzentos ";break; case 3 : cent="Trezentos ";break; case 4 : cent="Quatrocentos ";break; case 5 : cent="Quinhentos ";break; case 6 : cent="Seiscentos ";break; case 7 : cent="Setecentos ";break; case 8 : cent="Oitocentos ";break; case 9 : cent="Novecentos ";break; } } else { switch(d) { case 1 : cent="Cento e ";break; case 2 : cent="Duzentos e ";break; case 3 : cent="Trezentos e ";break; case 4 : cent="Quatrocentos e ";break; case 5 : cent="Quinhentos e ";break; case 6 : cent="Seiscentos e ";break; case 7 : cent="Setecentos e ";break; case 8 : cent="Oitocentos e ";break; case 9 : cent="Novecentos e ";break; } } if(e==1) { switch(e) { case 0 : dez="Dez ";break; case 1 : dez="Onze ";break; case 2 : dez="Doze ";break; case 3 : dez="Treze ";break; case 4 : dez="Quatorze ";break; case 5 : dez="Quinze ";break; case 6 : dez="Dezesseis ";break; case 7 : dez="Dezessete ";break; case 8 : dez="Dezoito ";break; case 9 : dez="Dezenove ";break; } } else if(e>1) { switch (e) { case 2 : dez="Vinte";break; case 3 : dez="Trinta";break; case 4 : dez="Quarenta";break; case 5 : dez="Cinquenta";break; case 6 : dez="Sessenta";break; case 7 : dez="Setenta";break; case 8 : dez="Oitenta";break; case 9 : dez="Noventa";break; } switch (f) { case 1 : uni=" e Um ";break; case 2 : uni=" e Dois ";break; case 3 : uni=" e Tres ";break; case 4 : uni=" e Quatro ";break; case 5 : uni=" e Cinco ";break; case 6 : uni=" e Seis ";break; case 7 : uni=" e Sete ";break; case 8 : uni=" e Oito ";break; case 9 : uni=" e Nove ";break; } } else { switch (f) { case 1 : uni="Um ";break; case 2 : uni="Dois ";break; case 3 : uni="Tres ";break; case 4 : uni="Quatro ";break; case 5 : uni="Cinco ";break; case 6 : uni="Seis ";break; case 7 : uni="Sete ";break; case 8 : uni="Oito ";break; case 9 : uni="Nove ";break; } } cout<<bilhao<<milhao<<milhar<<cent<<dez<<uni; } }getch(); } Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Maio 29, 2008 o programa algum erro? oq ele ainda naum ta fazendo? []'s Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Maio 31, 2008 Dá falha de segmentação mas vê se te ajuda.Executa na mão isso. #include <iostream> #include <map> #include <cmath> using namespace std; map<int,string> UNIDADES; map<int,string> DEZENAS; map<int,string> CENTENAS; void constroiMapas(){ UNIDADES[1]="um"; UNIDADES[2]="dois"; UNIDADES[3]="três"; UNIDADES[4]="quatro"; UNIDADES[5]="cinco"; UNIDADES[6]="seis"; UNIDADES[7]="sete"; UNIDADES[8]="oito"; UNIDADES[9]="nove"; DEZENAS[10]="dez"; DEZENAS[11]="onze"; DEZENAS[12]="doze"; DEZENAS[13]="treze"; DEZENAS[14]="catorze"; DEZENAS[15]="quinze"; DEZENAS[16]="dezesseis"; DEZENAS[17]="dezessete"; DEZENAS[18]="dezoito"; DEZENAS[19]="dezenove"; DEZENAS[20]="vinte"; DEZENAS[30]="trinta"; DEZENAS[40]="quarenta"; DEZENAS[50]="cinqüenta"; DEZENAS[60]="sessenta"; DEZENAS[70]="setenta"; DEZENAS[80]="oitenta"; DEZENAS[90]="noventa"; CENTENAS[100]="cem"; CENTENAS[200]="duzentos"; CENTENAS[300]="trezentos"; CENTENAS[500]="quinhentos"; } string quebraNumero (int divisor,float Numero) { string tmp = ""; float resto = fmodf(Numero,divisor); if (Numero > 0 && Numero < 10) tmp+=(UNIDADES.find((int)Numero)->second); else if (Numero > 10 && Numero < 100) { if (resto == 0) tmp+=(DEZENAS.find((int)Numero)->second); else { if (Numero < 20) tmp+=(DEZENAS.find((int)Numero)->second); else { tmp+=(DEZENAS.find((int)(10*(Numero/divisor)))->second); if (resto > 0) tmp+=" e "+quebraNumero(divisor,resto); } } } else if (Numero > 99 && Numero < 1000) { if (Numero == 400 || Numero > 500) { tmp+=(UNIDADES.find((int)(Numero/100))->second)+"centos"; if (resto > 0) tmp+=" e "+quebraNumero(10,resto); } else { if (resto == 0) tmp+=(CENTENAS.find((int)Numero)->second); else { if (Numero - 100 < 100) tmp+="cento e "; else tmp+=(CENTENAS.find((int)(100*(Numero/divisor)))->second)+" e "; tmp+=quebraNumero(10,resto); } } } return tmp; } string constroiString(float Numero) { string frase = ""; int classe = -1; int divisor; while (Numero > 0 && classe != 0) { classe = (int)log10(Numero); divisor = (int)pow(10.0,classe); frase+=quebraNumero(divisor,(int)Numero); if (Numero >= 10E9 && Numero <= 999999999999.) frase+=(fmodf(Numero,10E9) == 0)? "bilhão":"bilhões"; else if (Numero >= 10E6 && Numero <= 999999999) frase+=(fmodf(Numero,10E6) == 0)? " milhão ":" milhões "; else if (Numero >= 1000 && Numero <= 999999) frase+=" mil "; Numero = Numero / divisor; } return frase; } int main(void) { float Numero; do { cout << "Digite um número:"; cin >> Numero; } while ( Numero <= 0); string total = ""; total+=constroiString(Numero)+((Numero > 1.0)? "reais" : "real"); float centavos = (float)(100*(Numero - floor(Numero))); if (centavos > 0) total+=" e "+constroiString(centavos)+((centavos==1)? "centavo":"centavos"); cout << total << endl; return 0; } Compartilhar este post Link para o post Compartilhar em outros sites