Você está na página 1de 9

ENCOMENDA DE SOFTWARE I

/*------------------------------------------------------|
| ENCOMENDA DE SOFTWARE I |
| DISCIPLINA: PROGRAMAÇÃO ESTRUTURADA |
| ANO/SEMESTRE: 2022.1 |
| Professor: Francisco Chagas de Lima Júnior |
| Alunos: Antonio Rodriguês da Silva Junior |
| Matheus Cardoso de Miranda |
| Linguagem: C++ |
| Compilador utilizado: Falcon C++ |
| Última data de modificação: 13/09/22 LW |
|------------------------------------------------------*/

//Bibliotecas Utilizadas
#include <fstream>
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <locale.h>

using namespace std;

//Prototipação de Funções
void LerDados(string lista[50]); //Ler os Valores de extenso de um
arquivo
//Faz uma comparação e retorna o númemro Digitado em forma de extenso
string EscreveExtenso(int num, int n, string lista[50]);
//Separa os valores em casa de milhar, centena, dezena, unidade e
centavos
string SeparaUni(float valor, int n, string lista[50]);

//Ínicio do Programa
int main(int argc, char** argv)
{
setlocale(LC_ALL, "portuguese");

//Declaração de Variáveis
string extensoV, unidade, dezena, centena, milhar, centavos,
lista[50];
float Valor;

//Chama da função para receber os valores em nomes extenso


LerDados(lista);

cout << "Digite o valor do cheque: ";


cin >> Valor;

//Conjunto de "ifs" para comparar o valor digitado e


if(Valor > 0)
{
if(Valor >= 1 && Valor < 9)
{
// Unidade
unidade = SeparaUni(Valor, 1, lista);
//Centavos
centavos = SeparaUni(Valor, 0, lista);
}
if(Valor >= 10)
{
//Dezena
dezena = SeparaUni(Valor, 2, lista);
//Centavos
centavos = SeparaUni(Valor, 0, lista);
}
if(Valor < 1) //Centavos
centavos = SeparaUni(Valor, 0, lista);
}
if(Valor >= 100)//Centenas
centena = SeparaUni(Valor, 3, lista);

if(Valor >= 1000) //Milhar


milhar = SeparaUni(Valor, 4, lista);

if(Valor >= 1000) //Milhar


extensoV = milhar + centena + dezena + unidade + centavos;
else if(Valor >= 100 && Valor < 1000)//Centena
extensoV = centena + dezena + unidade + centavos;
else if(Valor >= 10 && Valor < 100)//Dezena
extensoV = dezena + unidade + centavos;
else if(Valor > 1 && Valor < 10)//Unidade
extensoV = unidade + centavos;
else if(Valor <= 1)//Centavos
extensoV = centavos;

cout << "\nNúmero escrito por extenso: ";


cout <<
"\n---------------------------------------------------------------------
--\n";
cout << extensoV;
cout <<
"\n---------------------------------------------------------------------
--\n";

return 0;
}// Fim do Programa

//Ínicio da Função
string SeparaUni(float valor, int n, string lista[50])
{

//Declaração de Variáveis
string unidade, dezena, centavos, centena, milhar;
float cet1, aux2;
int aux, aux3, cet, aux4, cet2;
int mil, cen, dez, unid, mil2, mil1;

//Variáveis auxiliares para pegar o valor digitado e pode


manipular sem alterar o valor original
aux = valor; //Ao jogar um float dentro de um inteiro o valor vai
perde os números após a vírgula
aux2 = valor;//So guarda o valor dentro de outra váriavel para
manipula-la depois

//Separando os valores após a virgula


aux2 = (aux2 - aux);
//Pega os centavos e transforma em valores inteiros só para fazer
uma comparação mais a frente
cet1 = aux2 * 10;
cet2 = aux2 * 100;

aux3 = cet2;

//Em caso de centavos com duas casas decimais, eles são separados
para fazer uma comparação unitária
aux3 = aux3 % 10;
cet = aux3 / 1;

//Separa as casas decimais


mil = aux / 1000;
aux = aux % 1000;
cen = aux / 100;
aux = aux % 100;
dez = aux / 10;
aux = aux % 10;
unid = aux / 1;
//Em caso de unidades de Milhar com duas casas, estes valores são
separados
aux4 = mil;
aux4 = aux4 % 10;
mil2 = aux4 / 1;

mil1 = (mil - mil2) / 10;

//Correção de erro; Valores com centavos que terminam com números


inferiores a 5, estavam decrementado 1.
if(cet < 5)
cet++;

if(n == 0)
{
if(cet2 != 0)
{
if(cet2 >= 20)
{
centavos = " e " + EscreveExtenso(cet1, 2,
lista);
if(cet != 0)
unidade = " e " + EscreveExtenso(cet, 1,
lista) + "centavos. ";
else
unidade = "centavos. ";
return centavos + unidade;
}
else if(cet2 < 20)
{
centavos = " e " + EscreveExtenso(cet2, 1, lista)
+ "centavos. ";
return centavos;
}
}
else
{
centavos = ".";
return centavos;
}
}
else if(n == 1)
{
if(unid < 2)
{
unidade = EscreveExtenso(unid, 1, lista) + " reais";
return unidade;
}
}
else if(n == 2)
{
if(dez >= 2)
{
if(unid != 0)
{
dezena = EscreveExtenso(dez, 2, lista);
unidade = " e " + EscreveExtenso(unid, 1, lista)
+ " reais";
return dezena + unidade;
}
else
{
dezena = EscreveExtenso(dez, 2, lista) + "
reais";
return dezena;
}
}
else if(dez < 2 && unid != 0)
{
dez = (dez * 10) + unid;
dezena = EscreveExtenso(dez, 1, lista) + " reais";
return dezena;
}
else
{
dezena = EscreveExtenso(dez, 1, lista) + " reais";
return dezena;
}
}
else if(n == 3)
{
if(cen != 0)
{
centena = EscreveExtenso(cen, 3, lista);
if(dez != 0 || unid != 0)
return centena + " e ";
else
return centena;
}
else
return centena;
}
else if(n == 4)
{
if(mil2 >= 1 && mil2 <= 9 && mil1 == 0)
{
milhar = EscreveExtenso(mil, 1, lista) + " mil ";
return milhar;
}
else if (mil1 >= 1 && mil1 < 2)
{
mil1 = (mil1 * 10) + mil2;
milhar = EscreveExtenso(mil1, 1, lista) + " mil ";
return milhar;
}
else if(mil1 >= 2 && mil1 <= 9)
{
if(mil2 != 0)
{
milhar = EscreveExtenso(mil1, 2, lista);
unidade = " e " + EscreveExtenso(mil2, 1, lista)
+ " mil ";
return milhar + unidade;
}
else
{
milhar = EscreveExtenso(mil1, 2, lista) + " mil
";
return milhar;
}
}
else
{
milhar = EscreveExtenso(mil1, 3, lista) + " mil ";
return milhar;
}
}
else
return 0;
} // Fim da Função

//Ínicio da Função
string EscreveExtenso(int num, int n, string lista[50])
{
//Declaração de Variáveis
int i;
string Unidade[20], Dezena [10], Centena [11];
string unid, dez, cen;
//Separando os valores em extenso em outros 3 vetores para
facilitar a manipulação no programa
for(i = 0; i < 19; i++)
Unidade[i] = lista[i];
for(i = 0; i < 9; i++)
Dezena[i] = lista[19 + i];
for(i = 0; i < 11; i++)
Centena[i] = lista[27 + i];

if(n == 1) //Unidade
{
num = num - 1;
//For para comparar o valor digitado com o seu nome por
extenso
for(i = 0; i < 20; i++)
if(i == num)
unid = Unidade[i];
return unid;
}
else if(n == 2) //Dezena
{
num = num - 2;
//For para comparar o valor digitado com o seu nome por
extenso
for(i = 0; i < 9; i++)
if(i == num)
dez = Dezena[i];
return dez;
}
else if(n == 3) //Centena
{
num = num - 1;
//For para comparar o valor digitado com o seu nome por
extenso
for(i = 0; i < 10; i++)
if(i == num)
cen = Centena[i];
return cen;
}
else
return 0;
} // Fim da Função

//Ínicio da Função
void LerDados(string lista[50])
{
//Declaração de Variáveis
string num;
int i = 0;

//ifstream - abre o arquivo apenas para leitura


ifstream arq("Extenso2.txt");
if (arq.is_open())
{
//eof() - retorna true ao atingir o fim do arquivo
while (!arq.eof())
{
//Transferindo os valores em extenso para um vetor
local para pode utilização no programa
getline (arq, num);
lista[i] = num;
i++;
}
arq.close();
}
else cout << "ERRO: arquivo não foi aberto ou não existe" << endl;
} // Fim da Função

LW

CÓDIGO DE CRIAÇÃO DE ARQUIVO COM O NOME : “Extenso2.txt” PARA PEGAR OS


VALORES;

#include <fstream>
#include <iostream>
#include <string.h>

using namespace std;

int main(int argc, char** argv)


{

fstream arq;
arq.open ("Extenso2.txt", ios::out | ios::app);
if (arq.is_open())
{
arq<<" um "<<endl;
arq<<" dois "<<endl;
arq<<" três "<<endl;
arq<<" quatro "<<endl;
arq<<" cinco "<<endl;
arq<<" seis "<<endl;
arq<<" sete "<<endl;
arq<<" oito "<<endl;
arq<<" nove "<<endl;
arq<<" dez "<<endl;
arq<<" onze "<<endl;
arq<<" doze "<<endl;
arq<<" treze "<<endl;
arq<<" quatorze "<<endl;
arq<<" quinze "<<endl;
arq<<" dezesseis "<<endl;
arq<<" dezessete "<<endl;
arq<<" dezoito "<<endl;
arq<<" dezenove "<<endl;
arq<<" vinte "<<endl;
arq<<" trinta "<<endl;
arq<<" quarenta "<<endl;
arq<<" cinquenta "<<endl;
arq<<" sessenta "<<endl;
arq<<" setenta "<<endl;
arq<<" oitenta "<<endl;
arq<<" noventa "<<endl;
arq<<" cem "<<endl;
arq<<" duzentos "<<endl;
arq<<" trezentos "<<endl;
arq<<" quatrocentos "<<endl;
arq<<" quinhentos "<<endl;
arq<<" seiscentos "<<endl;
arq<<" setecentos "<<endl;
arq<<" oitocentos "<<endl;
arq<<" novecentos "<<endl;

}
else
cout << "ERRO: arquivo não foi aberto ou não existe" <<endl;

return 0;
}
LW

Você também pode gostar