Ir para conteúdo

POWERED BY:

Arquivado

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

erickts

Programa para preenchimento de cheques

Recommended Posts

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

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

o programa algum erro? oq ele ainda naum ta fazendo?

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

×

Informação importante

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