PageRenderTime 18ms CodeModel.GetById 1ms app.highlight 8ms RepoModel.GetById 1ms app.codeStats 1ms

/www.cppreference.com/wiki/examples_2

https://github.com/tsgates/cclookup
#! | 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&amp;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&amp;tseed=1289693594" />
 21<link rel="stylesheet" media="all" type="text/css" href="lib/exe/css.php@s=all&amp;t=custom1&amp;tseed=1289693594" />
 22<link rel="stylesheet" media="print" type="text/css" href="lib/exe/css.php@s=print&amp;t=custom1&amp;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 &lt;cstdlib&gt;
 35#include &lt;sstream&gt;
 36</p>
 37
 38<p>
 39enum assinatura { MENSAL, DIARIO };
 40</p>
 41
 42<p>
 43unsigned int Parque::carregaClientes(istream&amp; 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 &gt;&gt; tel))
 55		break;
 56	getline(is, lixo);	
 57	if (!getline(is, modalidade))
 58		break;
 59	if ((modalidade.compare(&quot;MENSAL&quot;) == 0) || (modalidade.compare(&quot;mensal&quot;) == 0))				
 60	else
 61		tipo = DIARIO;</pre>
 62<pre class="code">	if (nome.length() &gt; 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 &lt;&lt; nome &lt;&lt;&quot;, &quot;&lt;&lt; localidade &lt;&lt;&quot;, &quot;&lt;&lt; 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 &lt;&lt; &quot;Funcionario: &quot; &lt;&lt; Pessoa::lista() &lt;&lt; &quot;, &quot;&lt;&lt;leValor()&lt;&lt; &quot; euros&quot;;</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 &lt;&lt; Pessoa::lista() &lt;&lt; &quot;, &quot;&lt;&lt; leValor()&lt;&lt; &quot; euros, &quot; &lt;&lt;  (presente?&quot;estacionado&quot;:&quot;fora&quot;);
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 &lt;&lt; &quot;Cliente diario : &quot; &lt;&lt; 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 &lt;&lt; &quot;Cliente mensal : &quot; &lt;&lt; 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&lt;Cliente*&gt;::iterator itc;
216vector&lt;Funcionario*&gt;::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&amp; 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 &gt;&gt; tel))
238		break;
239	getline(is, lixo);	
240	if (!getline(is, venc))
241		break;
242	vencimento = atof(venc.c_str());
243	if (nome.length() &gt; 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&amp; os) {
269</p>
270<pre class="code">vector&lt;Cliente*&gt;::iterator itc;
271for(itc=clientes.begin(); itc!=clientes.end(); itc++ )
272	{ os &lt;&lt; ((*itc)-&gt;lista()) &lt;&lt; endl; }</pre>
273
274<p>
275}
276</p>
277
278<p>
279void Parque::listaFuncionarios(ostream&amp; os) {
280</p>
281<pre class="code">vector&lt;Funcionario*&gt;::iterator itf;
282for(itf=funcionarios.begin(); itf!=funcionarios.end(); itf++ )
283	os &lt;&lt; ((*itf)-&gt;lista()) &lt;&lt; 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 &amp;nome) {	
354</p>
355<pre class="code">vector&lt;Cliente*&gt;::iterator itc;
356for (itc=clientes.begin(); itc!=clientes.end(); itc++) {
357	if (((*itc)-&gt;getNome()) == nome &amp;&amp; ocupados&lt;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 &amp;nome, float tempo) {	
371</p>
372<pre class="code">vector&lt;Cliente*&gt;::iterator itc;
373for (itc=clientes.begin(); itc!=clientes.end(); itc++) {
374	if (((*itc)-&gt;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&amp; os) {
388</p>
389<pre class="code">vector&lt;Cliente*&gt;::iterator itc;
390for(itc=clientes.begin(); itc!=clientes.end(); itc++ )
391{
392	if ((**itc).estacionado())
393		os &lt;&lt; (*itc)-&gt;getNome() &lt;&lt; endl;
394}</pre>
395
396<p>
397}
398</p>
399
400<p>
401
402double Parque::totalValorMes() {
403</p>
404<pre class="code">vector&lt;Cliente*&gt;::iterator itc;
405double tot=0;
406for(itc=clientes.begin(); itc!=clientes.end(); itc++ )
407{
408	tot += (*itc)-&gt;leValor();
409}
410return tot;</pre>
411
412<p>
413}
414</p>
415</div>
416</body>
417</html>