/www.cppreference.com/wiki/examples_2
#! | 417 lines | 355 code | 62 blank | 0 comment | 0 complexity | 35bcb0185e93a414d1705ac654ead2eb MD5 | raw file
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" 4 lang="en" dir="ltr"> 5<head> 6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 7 <title>examples_2</title> 8<meta name="generator" content="DokuWiki" /> 9<meta name="robots" content="index,follow" /> 10<meta name="date" content="2010-10-28T18:17:24-0700" /> 11<meta name="keywords" content="examples_2" /> 12<link rel="search" type="application/opensearchdescription+xml" href="http://www.cppreference.com/wiki/lib/exe/opensearch.php" title="C++ Reference" /> 13<link rel="start" href="../index.html" /> 14<link rel="contents" href="http://www.cppreference.com/wiki/examples_2?do=index" title="Sitemap" /> 15<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://www.cppreference.com/wiki/feed.php" /> 16<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://www.cppreference.com/wiki/feed.php?mode=list&ns=" /> 17<link rel="alternate" type="text/html" title="Plain HTML" href="http://www.cppreference.com/wiki/_export/xhtml/examples_2" /> 18<link rel="alternate" type="text/plain" title="Wiki Markup" href="http://www.cppreference.com/wiki/_export/raw/examples_2" /> 19<link rel="canonical" href="examples_2" /> 20<link rel="stylesheet" media="screen" type="text/css" href="lib/exe/css.php@t=custom1&tseed=1289693594" /> 21<link rel="stylesheet" media="all" type="text/css" href="lib/exe/css.php@s=all&t=custom1&tseed=1289693594" /> 22<link rel="stylesheet" media="print" type="text/css" href="lib/exe/css.php@s=print&t=custom1&tseed=1289693594" /> 23<script type="text/javascript" ><!--//--><![CDATA[//><!-- 24var NS='';var JSINFO = {"id":"examples_2","namespace":""}; 25//--><!]]></script> 26<script type="text/javascript" charset="utf-8" src="lib/exe/js.php@tseed=1289693594" ></script> 27</head> 28<body> 29<div class="dokuwiki export"> 30 31<p> 32#include âCPE.hâ 33using namespace std; 34#include <cstdlib> 35#include <sstream> 36</p> 37 38<p> 39enum assinatura { MENSAL, DIARIO }; 40</p> 41 42<p> 43unsigned int Parque::carregaClientes(istream& is) { 44</p> 45<pre class="code">unsigned int contador=0; 46while (!is.eof()) { 47 string nome, local, modalidade, lixo; 48 unsigned int tel=0; 49 assinatura tipo; 50 if (!getline(is, nome)) 51 break; 52 if (!getline(is, local)) 53 break; 54 if (!(is >> tel)) 55 break; 56 getline(is, lixo); 57 if (!getline(is, modalidade)) 58 break; 59 if ((modalidade.compare("MENSAL") == 0) || (modalidade.compare("mensal") == 0)) 60 else 61 tipo = DIARIO;</pre> 62<pre class="code"> if (nome.length() > 0) { 63 if (tipo == MENSAL) { 64 ClienteMensal* pCliente = new ClienteMensal(nome, local, tel, valorMes); 65 clientes.push_back(pCliente); 66 } 67 else { 68 ClienteDiario* pCliente = new ClienteDiario(nome, local, tel, valorHora); 69 clientes.push_back(pCliente); 70 } 71 contador++; 72 } 73} 74return contador;</pre> 75 76<p> 77} 78</p> 79 80<p> 81string Pessoa::lista() const { 82</p> 83<pre class="code"> ostringstream oss; 84oss << nome <<", "<< localidade <<", "<< telefone;</pre> 85 86<p> 87return oss.str(); 88} 89</p> 90 91<p> 92double Funcionario::leValor() const { 93</p> 94<pre class="code">return valor;</pre> 95 96<p> 97} 98</p> 99 100<p> 101string Funcionario::lista() const { 102</p> 103<pre class="code">ostringstream oss; 104oss << "Funcionario: " << Pessoa::lista() << ", "<<leValor()<< " euros";</pre> 105 106<p> 107return oss.str(); 108} 109</p> 110 111<p> 112double Cliente::leValor() const { 113</p> 114<pre class="code">return valorAPagar;</pre> 115 116<p> 117} 118</p> 119 120<p> 121string Cliente::lista() const { 122</p> 123<pre class="code"> ostringstream oss; 124 oss << Pessoa::lista() << ", "<< leValor()<< " euros, " << (presente?"estacionado":"fora"); 125 return oss.str();</pre> 126 127<p> 128} 129</p> 130 131<p> 132string ClienteDiario::lista() const { 133</p> 134<pre class="code">ostringstream oss; 135oss << "Cliente diario : " << Cliente::lista(); 136return oss.str();</pre> 137 138<p> 139} 140</p> 141 142<p> 143string ClienteMensal::lista() const { 144</p> 145<pre class="code">ostringstream oss; 146oss << "Cliente mensal : " << Cliente::lista(); 147return oss.str();</pre> 148 149<p> 150} 151</p> 152 153<p> 154Pessoa::Pessoa(string umNome, string umaLocalidade, unsigned int umTelefone) { 155</p> 156<pre class="code">nome = umNome; 157localidade = umaLocalidade; 158telefone = umTelefone; </pre> 159 160<p> 161} 162</p> 163 164<p> 165Funcionario::Funcionario(string umNome, string umaLocalidade, unsigned int umTelefone, double umVencimento) 166</p> 167<pre class="code">: Pessoa(umNome, umaLocalidade, umTelefone) {</pre> 168<pre class="code">valor = umVencimento;</pre> 169 170<p> 171} 172Cliente::Cliente(string umNome, string umaLocalidade, unsigned int umTelefone, double valorTaxa): Pessoa(umNome, umaLocalidade, umTelefone) { 173 174</p> 175<pre class="code">presente = false; 176valor = valorTaxa; 177valorAPagar = 0; </pre> 178 179<p> 180} 181</p> 182 183<p> 184ClienteDiario::ClienteDiario(string umNome, string umaLocalidade, unsigned int umTelefone, double valorTaxa): 185</p> 186<pre class="code">Cliente(umNome, umaLocalidade, umTelefone, valorTaxa) {</pre> 187 188<p> 189} 190</p> 191 192<p> 193ClienteMensal::ClienteMensal(string umNome, string umaLocalidade, unsigned int umTelefone, double valorTaxa): 194</p> 195<pre class="code">Cliente(umNome, umaLocalidade, umTelefone, valorTaxa) {</pre> 196 197<p> 198} 199</p> 200 201<p> 202Parque::Parque(string umNome, unsigned int maxLotacao, float valHora, float valMes): valorHora(valHora), valorMes(valMes) { 203</p> 204<pre class="code">nome = umNome; 205lotacao = maxLotacao; 206ocupados = 0; </pre> 207 208<p> 209} 210</p> 211 212<p> 213Parque::~Parque() { 214</p> 215<pre class="code">vector<Cliente*>::iterator itc; 216vector<Funcionario*>::iterator itf; 217for(itc=clientes.begin(); itc!=clientes.end(); itc++ ) 218 { delete *itc; } 219clientes.clear(); 220for(itf=funcionarios.begin(); itf!=funcionarios.end(); itf++) 221 { delete *itf; } 222funcionarios.clear(); </pre> 223 224<p> 225} 226unsigned int Parque::carregaFuncionarios(istream& is) { 227</p> 228<pre class="code">unsigned int contador=0; 229while (!is.eof()) { 230 string nome, local, venc, lixo; 231 unsigned int tel; 232 double vencimento; 233 if (!getline(is, nome)) 234 break; 235 if (!getline(is, local)) 236 break; 237 if (!(is >> tel)) 238 break; 239 getline(is, lixo); 240 if (!getline(is, venc)) 241 break; 242 vencimento = atof(venc.c_str()); 243 if (nome.length() > 0) { 244 Funcionario* pFuncionario = new Funcionario(nome, local, tel, vencimento); 245 funcionarios.push_back(pFuncionario); 246 contador++; 247 } 248} 249return contador;</pre> 250 251<p> 252} 253</p> 254 255<p> 256unsigned int Parque::numClientes() { 257</p> 258<pre class="code">return clientes.size();} </pre> 259 260<p> 261 262unsigned int Parque::numFuncionarios() { 263</p> 264<pre class="code">return funcionarios.size(); </pre> 265 266<p> 267 268void Parque::listaClientes(ostream& os) { 269</p> 270<pre class="code">vector<Cliente*>::iterator itc; 271for(itc=clientes.begin(); itc!=clientes.end(); itc++ ) 272 { os << ((*itc)->lista()) << endl; }</pre> 273 274<p> 275} 276</p> 277 278<p> 279void Parque::listaFuncionarios(ostream& os) { 280</p> 281<pre class="code">vector<Funcionario*>::iterator itf; 282for(itf=funcionarios.begin(); itf!=funcionarios.end(); itf++ ) 283 os << ((*itf)->lista()) << endl; </pre> 284 285<p> 286} 287</p> 288 289<p> 290bool Cliente::entra() { 291</p> 292<pre class="code">if (presente==false) { 293 presente = true; 294 return true; 295} 296else 297 return false;</pre> 298 299<p> 300} 301</p> 302 303<p> 304bool Cliente::sai(float tempo){ 305</p> 306<pre class="code">if (presente==true) { 307 presente = false; 308 return true; 309} 310else 311 return false;</pre> 312 313<p> 314} 315</p> 316 317<p> 318 319bool ClienteDiario::sai(float tempo){ 320</p> 321<pre class="code">bool estaNoParque=Cliente::sai(tempo); 322if (estaNoParque==false) return false; 323valorAPagar += tempo*valor; 324return true;</pre> 325 326<p> 327} 328</p> 329 330<p> 331bool ClienteMensal::sai(float tempo){ 332</p> 333<pre class="code">bool estaNoParque=Cliente::sai(tempo); 334if (estaNoParque==false) return false; 335if (valorAPagar==0) valorAPagar=valor; 336return true;</pre> 337 338<p> 339} 340</p> 341 342<p> 343 344unsigned int Parque::numLugaresVagos() { 345</p> 346<pre class="code">return (lotacao-ocupados);</pre> 347 348<p> 349} 350</p> 351 352<p> 353bool Parque::entra(const string &nome) { 354</p> 355<pre class="code">vector<Cliente*>::iterator itc; 356for (itc=clientes.begin(); itc!=clientes.end(); itc++) { 357 if (((*itc)->getNome()) == nome && ocupados<lotacao) 358 if ((**itc).entra()) { 359 ocupados++; 360 return true; 361 } 362} 363return false; </pre> 364 365<p> 366} 367</p> 368 369<p> 370bool Parque::sai(const string &nome, float tempo) { 371</p> 372<pre class="code">vector<Cliente*>::iterator itc; 373for (itc=clientes.begin(); itc!=clientes.end(); itc++) { 374 if (((*itc)->getNome()) == nome) 375 if ((**itc).sai(tempo)) { 376 ocupados--; 377 return true; 378 } 379} 380return false; </pre> 381 382<p> 383} 384</p> 385 386<p> 387void Parque::listaClientesEstacionados(ostream& os) { 388</p> 389<pre class="code">vector<Cliente*>::iterator itc; 390for(itc=clientes.begin(); itc!=clientes.end(); itc++ ) 391{ 392 if ((**itc).estacionado()) 393 os << (*itc)->getNome() << endl; 394}</pre> 395 396<p> 397} 398</p> 399 400<p> 401 402double Parque::totalValorMes() { 403</p> 404<pre class="code">vector<Cliente*>::iterator itc; 405double tot=0; 406for(itc=clientes.begin(); itc!=clientes.end(); itc++ ) 407{ 408 tot += (*itc)->leValor(); 409} 410return tot;</pre> 411 412<p> 413} 414</p> 415</div> 416</body> 417</html>