From 93eac0ac11f6c305ccfa71e3be16ed9f276a7d7a Mon Sep 17 00:00:00 2001 From: BrunoLeonardoA Date: Tue, 9 Mar 2021 23:45:21 -0300 Subject: [PATCH] =?UTF-8?q?Fatora=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cliente.cpp | 6 +- Cliente.hpp | 15 ++- Encomenda.hpp | 19 +++- EncomendaNormal.hpp | 17 ++-- EncomendaRelampago.hpp | 24 +++-- main.cpp | 220 +++++++++++++---------------------------- 6 files changed, 122 insertions(+), 179 deletions(-) diff --git a/Cliente.cpp b/Cliente.cpp index 96c5819..4d4271b 100644 --- a/Cliente.cpp +++ b/Cliente.cpp @@ -4,10 +4,10 @@ void Cliente::print(){ - std::cout << " Nome: " << NOME << endl + std::cout << " Nome: " << nome << endl << " Endereço: " << endereco << endl - << " Cidade: " << CIDADE << endl - << " Estado: " << ESTADO << endl + << " Cidade: " << cidade << endl + << " Estado: " << estado << endl << " CEP: " << cep << endl; } \ No newline at end of file diff --git a/Cliente.hpp b/Cliente.hpp index ecde6c4..c2dd3f2 100644 --- a/Cliente.hpp +++ b/Cliente.hpp @@ -6,14 +6,19 @@ using namespace std; class Cliente{ - public: - - string NOME; + private: + string nome; string endereco; - string CIDADE; - string ESTADO; + string cidade; + string estado; string cep; + public: + Cliente(string _nome, string _endereco, string _cidade, string _estado, string _cep ) : nome(_nome), endereco(_endereco), + cidade(_cidade), estado(_estado), cep(_cep){}; + + Cliente::Cliente(){}; + void print(); // imprime na tela os dados de um cliente cadastrado }; diff --git a/Encomenda.hpp b/Encomenda.hpp index 0c6db2a..3336091 100644 --- a/Encomenda.hpp +++ b/Encomenda.hpp @@ -6,15 +6,24 @@ using namespace std; class Encomenda{ - public: + protected: - double PESO = 0.0; - double CUSTOkg = 0.0; - double T = 0.0; + double peso; + double custoKg; + double custoTotal = 0.0; + + public: + Cliente remetente; Cliente dest; - void print(){ + public: + + Encomenda(double _peso,double _custoKg) : peso(_peso), custoKg(_custoKg){}; + + virtual double calcularValor(){}; + + virtual void print(){ std::cout << "[Remetente]" << endl; remetente.print(); diff --git a/EncomendaNormal.hpp b/EncomendaNormal.hpp index e854f9c..0dc848f 100644 --- a/EncomendaNormal.hpp +++ b/EncomendaNormal.hpp @@ -9,20 +9,21 @@ class EncomendaNormal: public Encomenda{ public: - double calcula(){ + EncomendaNormal(double _peso,double _custoKg) : Encomenda(_peso,_custoKg){}; + + double calcularValor() override{ - double x = PESO * CUSTOkg; - - return x; + double valor = peso * custoKg; + return valor; } - void print(){ + void print() override{ Encomenda::print(); std::cout << "[Encomenda Normal]" << endl; - std::cout << " Peso: " << PESO << endl - << " Custo por kg: " << CUSTOkg << endl - << " Custo total: " << T << endl; + std::cout << " Peso: " << peso << endl + << " Custo por kg: " << custoKg << endl + << " Custo total: " << custoTotal << endl; } diff --git a/EncomendaRelampago.hpp b/EncomendaRelampago.hpp index 879c705..714efa6 100644 --- a/EncomendaRelampago.hpp +++ b/EncomendaRelampago.hpp @@ -7,24 +7,30 @@ using namespace std; class EncomendaRelampago: public Encomenda{ + private: + + double taxa = 0.25; + public: - double calcula(){ + EncomendaRelampago(double _peso,double _custoKg) : Encomenda(_peso,_custoKg){}; - double x = PESO * CUSTOkg; - x += x * 0.25; + double calcularValor() override{ + + double valor = peso * custoKg; + valor += valor * taxa; - return x; + return valor; } - void print(){ + void print() override{ Encomenda::print(); std::cout << "[Encomenda Relâmpago]" << endl; - std::cout << " Peso: " << PESO << endl - << " Custo por kg: " << CUSTOkg << endl - << " Taxa adicional: " << 0.25 << endl - << " Custo total: " << T << endl; + std::cout << " Peso: " << peso << endl + << " Custo por kg: " << custoKg << endl + << " Taxa adicional: " << taxa << endl + << " Custo total: " << custoTotal << endl; } diff --git a/main.cpp b/main.cpp index f73d1b8..59be8b0 100644 --- a/main.cpp +++ b/main.cpp @@ -1,4 +1,6 @@ #include +#include +#include #include "Encomenda.hpp" #include "EncomendaNormal.hpp" #include "EncomendaRelampago.hpp" @@ -6,166 +8,86 @@ using namespace std; int main(){ + + vector clientes; - Cliente cli0; - cli0.NOME = "Thales"; - cli0.endereco = "Rua dos Pré-Socráticos"; - cli0.CIDADE = "Miletus"; - cli0.ESTADO = "Ionia"; - cli0.cep = "548 a.C."; - - Cliente cli1; - cli1.NOME = "Aristóteles"; - cli1.endereco = "Avenida do Meio-Termo"; - cli1.CIDADE = "Atenas"; - cli1.ESTADO = "Ática"; - cli1.cep = "384 a.C."; - - Cliente cli2; - cli2.NOME = "Platão"; - cli2.endereco = "Praça das Formas"; - cli2.CIDADE = "Atenas"; - cli2.ESTADO = "Ática"; - cli2.cep = "348 a.C"; - - Cliente cli3; - cli3.NOME = "Sócrates"; - cli3.endereco = "Rua do Elenchus"; - cli3.CIDADE = "Atenas"; - cli3.ESTADO = "Ática"; - cli3.cep = "399 a.C."; - - Cliente cli4; - cli4.NOME = "Pitágoras"; - cli4.endereco = "Praça dos Quadrados dos Catetos"; - cli4.CIDADE = "Samos"; - cli4.ESTADO = "Egeu"; - cli4.cep = "571 a.C."; - - Cliente cli5; - cli5.NOME = "Parmênides"; - cli5.endereco = "Rua do Não Ser"; - cli5.CIDADE = "Eleia"; - cli5.ESTADO = "Magna Grécia"; - cli5.cep = "460 a.C."; - - Cliente cli6; - cli6.NOME = "Empédocles"; - cli6.endereco = "Rua dos Quatro Elementos"; - cli6.CIDADE = "Agrigento"; - cli6.ESTADO = "Sicília"; - cli6.cep = "495 a.C."; - - Cliente cli7; - cli7.NOME = "Anaxágoras"; - cli7.endereco = "Avenida da Mente Cósmica"; - cli7.CIDADE = "Clazômenas"; - cli7.ESTADO = "Jónia"; - cli7.cep = "499 a.C."; + Cliente cli0("Thales","Rua dos Pré-Socráticos","Miletus","Ionia","548 a.C."); + clientes.push_back(cli0); + + Cliente cli1("Aristóteles","Avenida do Meio-Termo","Atenas","Ática","384 a.C."); + clientes.push_back(cli1); + + Cliente cli2("Platão","Praça das Formas","Atenas","Ática","348 a.C"); + clientes.push_back(cli2); + + Cliente cli3("Sócrates","Rua do Elenchus","Atenas","Ática","399 a.C."); + clientes.push_back(cli3); + + Cliente cli4("Pitágoras","Praça dos Quadrados dos Catetos","Samos","Egeu","571 a.C."); + clientes.push_back(cli4); + + Cliente cli5("Parmênides","Rua do Não Ser","Eleia","Magna Grécia","460 a.C."); + clientes.push_back(cli5); + + Cliente cli6("Empédocles","Rua dos Quatro Elementos","Agrigento","Sicília","495 a.C."); + clientes.push_back(cli6); + + Cliente cli7("Anaxágoras","Avenida da Mente Cósmica","Clazômenas","Jónia","499 a.C."); + clientes.push_back(cli7); int quantN = 0; int quantR = 0; - EncomendaNormal enc0; - enc0.PESO = 5; - enc0.CUSTOkg = 12; - enc0.remetente = cli0; - enc0.dest = cli1; - quantN++; - - EncomendaNormal enc1; - enc1.PESO = 10; - enc1.CUSTOkg = 12; - enc1.remetente = cli1; - enc1.dest = cli2; - quantN++; - - EncomendaNormal enc2; - enc2.PESO = 7; - enc2.CUSTOkg = 12; - enc2.remetente = cli2; - enc2.dest = cli3; - quantN++; - - EncomendaNormal enc3; - enc3.PESO = 2; - enc3.CUSTOkg = 12; - enc3.remetente = cli3; - enc3.dest = cli4; - quantN++; - - EncomendaNormal enc4; - enc4.PESO = 3; - enc4.CUSTOkg = 12; - enc4.remetente = cli4; - enc4.dest = cli5; - quantN++; - - EncomendaRelampago enc5; - enc5.PESO = 13; - enc5.CUSTOkg = 18; - enc5.remetente = cli5; - enc5.dest = cli6; - quantR++; - - EncomendaRelampago enc6; - enc6.PESO = 6; - enc6.CUSTOkg = 18; - enc6.remetente = cli6; - enc6.dest = cli7; - quantR++; - - EncomendaRelampago enc7; - enc7.PESO = 8; - enc7.CUSTOkg = 18; - enc7.remetente = cli7; - enc7.dest = cli0; - quantR++; + vector encomendas; + + EncomendaNormal enc0(5,12); + encomendas.push_back(enc0); + + EncomendaNormal enc1(10,12); + encomendas.push_back(enc1); + + EncomendaNormal enc2(7,12); + encomendas.push_back(enc2); + + EncomendaNormal enc3(2,12); + encomendas.push_back(enc3); + + EncomendaNormal enc4(3,12); + encomendas.push_back(enc4); + + EncomendaRelampago enc5(13,18); + encomendas.push_back(enc5); + + EncomendaRelampago enc6(6,18); + encomendas.push_back(enc6); + + EncomendaRelampago enc7(8,18); + encomendas.push_back(enc7); + + for(int i=0;i<7;i++){ + encomendas[i].remetente = clientes[i]; + encomendas[i].dest = clientes[i+1]; + } + enc7.dest=clientes[0]; + enc7.remetente=clientes[7]; std::cout << "\n>> Relatório de encomendas <<" << endl; double custN = 0; double custR = 0; - enc0.calcula(); - enc0.print(); - custN += enc0.calcula(); - std::cout << endl; - - enc1.calcula(); - enc1.print(); - custN += enc1.calcula(); - std::cout << endl; - - enc2.calcula(); - enc2.print(); - custN += enc2.calcula(); - std::cout << endl; - - enc3.calcula(); - enc3.print(); - custN += enc3.calcula(); - std::cout << endl; - - enc4.calcula(); - enc4.print(); - custN += enc4.calcula(); - std::cout << endl; - - enc5.calcula(); - enc5.print(); - custR += enc5.calcula(); - std::cout << endl; - - enc6.calcula(); - enc6.print(); - custR += enc6.calcula(); - std::cout << endl; - - enc7.calcula(); - enc7.print(); - custR += enc7.calcula(); - std::cout << endl; + for(auto e : encomendas){ + e.calcularValor(); + e.print(); + if(typeid(e)==typeid(EncomendaNormal)){ + custN += e.calcularValor(); + quantN++; + }else{ + custR += e.calcularValor(); + quantR++; + } + std::cout << endl; + } std::cout << "\n>> Encomendas Normais <<" << "\nQuantidade: " << quantN