/www.cppreference.com/wiki/examples_2
#! | 417 lines | 355 code | 62 blank | 0 comment | 0 complexity | 35bcb0185e93a414d1705ac654ead2eb MD5 | raw file
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
- lang="en" dir="ltr">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>examples_2</title>
- <meta name="generator" content="DokuWiki" />
- <meta name="robots" content="index,follow" />
- <meta name="date" content="2010-10-28T18:17:24-0700" />
- <meta name="keywords" content="examples_2" />
- <link rel="search" type="application/opensearchdescription+xml" href="http://www.cppreference.com/wiki/lib/exe/opensearch.php" title="C++ Reference" />
- <link rel="start" href="../index.html" />
- <link rel="contents" href="http://www.cppreference.com/wiki/examples_2?do=index" title="Sitemap" />
- <link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://www.cppreference.com/wiki/feed.php" />
- <link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://www.cppreference.com/wiki/feed.php?mode=list&ns=" />
- <link rel="alternate" type="text/html" title="Plain HTML" href="http://www.cppreference.com/wiki/_export/xhtml/examples_2" />
- <link rel="alternate" type="text/plain" title="Wiki Markup" href="http://www.cppreference.com/wiki/_export/raw/examples_2" />
- <link rel="canonical" href="examples_2" />
- <link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css.php@t=custom1&tseed=1289693594" />
- <link rel="stylesheet" media="all" type="text/css" href="lib/exe/css.php@s=all&t=custom1&tseed=1289693594" />
- <link rel="stylesheet" media="print" type="text/css" href="lib/exe/css.php@s=print&t=custom1&tseed=1289693594" />
- <script type="text/javascript" ><!--//--><![CDATA[//><!--
- var NS='';var JSINFO = {"id":"examples_2","namespace":""};
- //--><!]]></script>
- <script type="text/javascript" charset="utf-8" src="lib/exe/js.php@tseed=1289693594" ></script>
- </head>
- <body>
- <div class="dokuwiki export">
- <p>
- #include âCPE.hâ
- using namespace std;
- #include <cstdlib>
- #include <sstream>
- </p>
- <p>
- enum assinatura { MENSAL, DIARIO };
- </p>
- <p>
- unsigned int Parque::carregaClientes(istream& is) {
- </p>
- <pre class="code">unsigned int contador=0;
- while (!is.eof()) {
- string nome, local, modalidade, lixo;
- unsigned int tel=0;
- assinatura tipo;
- if (!getline(is, nome))
- break;
- if (!getline(is, local))
- break;
- if (!(is >> tel))
- break;
- getline(is, lixo);
- if (!getline(is, modalidade))
- break;
- if ((modalidade.compare("MENSAL") == 0) || (modalidade.compare("mensal") == 0))
- else
- tipo = DIARIO;</pre>
- <pre class="code"> if (nome.length() > 0) {
- if (tipo == MENSAL) {
- ClienteMensal* pCliente = new ClienteMensal(nome, local, tel, valorMes);
- clientes.push_back(pCliente);
- }
- else {
- ClienteDiario* pCliente = new ClienteDiario(nome, local, tel, valorHora);
- clientes.push_back(pCliente);
- }
- contador++;
- }
- }
- return contador;</pre>
- <p>
- }
- </p>
- <p>
- string Pessoa::lista() const {
- </p>
- <pre class="code"> ostringstream oss;
- oss << nome <<", "<< localidade <<", "<< telefone;</pre>
- <p>
- return oss.str();
- }
- </p>
- <p>
- double Funcionario::leValor() const {
- </p>
- <pre class="code">return valor;</pre>
- <p>
- }
- </p>
- <p>
- string Funcionario::lista() const {
- </p>
- <pre class="code">ostringstream oss;
- oss << "Funcionario: " << Pessoa::lista() << ", "<<leValor()<< " euros";</pre>
- <p>
- return oss.str();
- }
- </p>
- <p>
- double Cliente::leValor() const {
- </p>
- <pre class="code">return valorAPagar;</pre>
- <p>
- }
- </p>
- <p>
- string Cliente::lista() const {
- </p>
- <pre class="code"> ostringstream oss;
- oss << Pessoa::lista() << ", "<< leValor()<< " euros, " << (presente?"estacionado":"fora");
- return oss.str();</pre>
- <p>
- }
- </p>
- <p>
- string ClienteDiario::lista() const {
- </p>
- <pre class="code">ostringstream oss;
- oss << "Cliente diario : " << Cliente::lista();
- return oss.str();</pre>
- <p>
- }
- </p>
- <p>
- string ClienteMensal::lista() const {
- </p>
- <pre class="code">ostringstream oss;
- oss << "Cliente mensal : " << Cliente::lista();
- return oss.str();</pre>
- <p>
- }
- </p>
- <p>
- Pessoa::Pessoa(string umNome, string umaLocalidade, unsigned int umTelefone) {
- </p>
- <pre class="code">nome = umNome;
- localidade = umaLocalidade;
- telefone = umTelefone; </pre>
- <p>
- }
- </p>
- <p>
- Funcionario::Funcionario(string umNome, string umaLocalidade, unsigned int umTelefone, double umVencimento)
- </p>
- <pre class="code">: Pessoa(umNome, umaLocalidade, umTelefone) {</pre>
- <pre class="code">valor = umVencimento;</pre>
- <p>
- }
- Cliente::Cliente(string umNome, string umaLocalidade, unsigned int umTelefone, double valorTaxa): Pessoa(umNome, umaLocalidade, umTelefone) {
- </p>
- <pre class="code">presente = false;
- valor = valorTaxa;
- valorAPagar = 0; </pre>
- <p>
- }
- </p>
- <p>
- ClienteDiario::ClienteDiario(string umNome, string umaLocalidade, unsigned int umTelefone, double valorTaxa):
- </p>
- <pre class="code">Cliente(umNome, umaLocalidade, umTelefone, valorTaxa) {</pre>
- <p>
- }
- </p>
- <p>
- ClienteMensal::ClienteMensal(string umNome, string umaLocalidade, unsigned int umTelefone, double valorTaxa):
- </p>
- <pre class="code">Cliente(umNome, umaLocalidade, umTelefone, valorTaxa) {</pre>
- <p>
- }
- </p>
- <p>
- Parque::Parque(string umNome, unsigned int maxLotacao, float valHora, float valMes): valorHora(valHora), valorMes(valMes) {
- </p>
- <pre class="code">nome = umNome;
- lotacao = maxLotacao;
- ocupados = 0; </pre>
- <p>
- }
- </p>
- <p>
- Parque::~Parque() {
- </p>
- <pre class="code">vector<Cliente*>::iterator itc;
- vector<Funcionario*>::iterator itf;
- for(itc=clientes.begin(); itc!=clientes.end(); itc++ )
- { delete *itc; }
- clientes.clear();
- for(itf=funcionarios.begin(); itf!=funcionarios.end(); itf++)
- { delete *itf; }
- funcionarios.clear(); </pre>
- <p>
- }
- unsigned int Parque::carregaFuncionarios(istream& is) {
- </p>
- <pre class="code">unsigned int contador=0;
- while (!is.eof()) {
- string nome, local, venc, lixo;
- unsigned int tel;
- double vencimento;
- if (!getline(is, nome))
- break;
- if (!getline(is, local))
- break;
- if (!(is >> tel))
- break;
- getline(is, lixo);
- if (!getline(is, venc))
- break;
- vencimento = atof(venc.c_str());
- if (nome.length() > 0) {
- Funcionario* pFuncionario = new Funcionario(nome, local, tel, vencimento);
- funcionarios.push_back(pFuncionario);
- contador++;
- }
- }
- return contador;</pre>
- <p>
- }
- </p>
- <p>
- unsigned int Parque::numClientes() {
- </p>
- <pre class="code">return clientes.size();} </pre>
- <p>
- unsigned int Parque::numFuncionarios() {
- </p>
- <pre class="code">return funcionarios.size(); </pre>
- <p>
- void Parque::listaClientes(ostream& os) {
- </p>
- <pre class="code">vector<Cliente*>::iterator itc;
- for(itc=clientes.begin(); itc!=clientes.end(); itc++ )
- { os << ((*itc)->lista()) << endl; }</pre>
- <p>
- }
- </p>
- <p>
- void Parque::listaFuncionarios(ostream& os) {
- </p>
- <pre class="code">vector<Funcionario*>::iterator itf;
- for(itf=funcionarios.begin(); itf!=funcionarios.end(); itf++ )
- os << ((*itf)->lista()) << endl; </pre>
- <p>
- }
- </p>
- <p>
- bool Cliente::entra() {
- </p>
- <pre class="code">if (presente==false) {
- presente = true;
- return true;
- }
- else
- return false;</pre>
- <p>
- }
- </p>
- <p>
- bool Cliente::sai(float tempo){
- </p>
- <pre class="code">if (presente==true) {
- presente = false;
- return true;
- }
- else
- return false;</pre>
- <p>
- }
- </p>
- <p>
- bool ClienteDiario::sai(float tempo){
- </p>
- <pre class="code">bool estaNoParque=Cliente::sai(tempo);
- if (estaNoParque==false) return false;
- valorAPagar += tempo*valor;
- return true;</pre>
- <p>
- }
- </p>
- <p>
- bool ClienteMensal::sai(float tempo){
- </p>
- <pre class="code">bool estaNoParque=Cliente::sai(tempo);
- if (estaNoParque==false) return false;
- if (valorAPagar==0) valorAPagar=valor;
- return true;</pre>
- <p>
- }
- </p>
- <p>
- unsigned int Parque::numLugaresVagos() {
- </p>
- <pre class="code">return (lotacao-ocupados);</pre>
- <p>
- }
- </p>
- <p>
- bool Parque::entra(const string &nome) {
- </p>
- <pre class="code">vector<Cliente*>::iterator itc;
- for (itc=clientes.begin(); itc!=clientes.end(); itc++) {
- if (((*itc)->getNome()) == nome && ocupados<lotacao)
- if ((**itc).entra()) {
- ocupados++;
- return true;
- }
- }
- return false; </pre>
- <p>
- }
- </p>
- <p>
- bool Parque::sai(const string &nome, float tempo) {
- </p>
- <pre class="code">vector<Cliente*>::iterator itc;
- for (itc=clientes.begin(); itc!=clientes.end(); itc++) {
- if (((*itc)->getNome()) == nome)
- if ((**itc).sai(tempo)) {
- ocupados--;
- return true;
- }
- }
- return false; </pre>
- <p>
- }
- </p>
- <p>
- void Parque::listaClientesEstacionados(ostream& os) {
- </p>
- <pre class="code">vector<Cliente*>::iterator itc;
- for(itc=clientes.begin(); itc!=clientes.end(); itc++ )
- {
- if ((**itc).estacionado())
- os << (*itc)->getNome() << endl;
- }</pre>
- <p>
- }
- </p>
- <p>
- double Parque::totalValorMes() {
- </p>
- <pre class="code">vector<Cliente*>::iterator itc;
- double tot=0;
- for(itc=clientes.begin(); itc!=clientes.end(); itc++ )
- {
- tot += (*itc)->leValor();
- }
- return tot;</pre>
- <p>
- }
- </p>
- </div>
- </body>
- </html>