Esercizio 05
Prendendo come riferimento quanto detto a lezione e il codice della classe Coda realizzare un programma che carichi la coda con 10 persone in fila all'uscita di un supermercato (tipoelem รจ una classe persona avente nome, cognome e metodo di pagamento: {bancomat | contanti}).
Le persone, pagano i prodotti in contanti o con bancomat. Ci sono due casse, una che accetta bancomat e una solo contanti, pertanto creare altre due strutture dati una per tipo di pagamento.
Estrarre dalla coda di partenza le persone e accodarle alla relativa struttura (bancomat o contanti), successivamente stampare i dati delle persone delle due code, mostrando anche il totale delle persone che hanno pagato con bancomat e di quelle che hanno pagato in contanti.
Spedire il codice realizzato entro la mezzanotte di domenica 9 novembre 2014 come file compresso denominato:
// main.cpp #include#include "coda_array.h" using namespace std; void loadCoda (Coda* coda){ tipoelem dato; dato = 'a'; coda->inCoda(dato); dato = 'b'; coda->inCoda(dato); dato = 'c'; coda->inCoda(dato); dato = 'd'; coda->inCoda(dato); dato = 'e'; coda->inCoda(dato); } void printCoda(Coda coda){ while(!coda.codaVuota()){ cout << coda.leggiCoda() << endl; coda.fuoriCoda(); } } int main(){ Coda cod; loadCoda(&cod); printCoda(cod); cout << "Inserisco z..." << endl; cod.inCoda('z'); printCoda(cod); return 0; }
// coda_array.h #ifndef CODA_ARRAY_H_ #define CODA_ARRAY_H_ typedef bool boolean; typedef char tipoelem; const int MAXELEM = 100; class Coda { public: void creaCoda(); boolean codaVuota(); tipoelem leggiCoda(); void inCoda(tipoelem); void fuoriCoda(); Coda(); ~Coda(); private: tipoelem elementi[MAXELEM]; int start; int len; }; #endif
// coda_array.cpp #include#include "coda_array.h" using namespace std; void Coda::creaCoda(){ start = 0; len = 0; } boolean Coda::codaVuota(){ return len<=0; } tipoelem Coda::leggiCoda(){ return elementi[start]; } void Coda::inCoda(tipoelem elem){ if(len > MAXELEM){ cout << "Lunghezza massima raggiunta. " << "impossibile aggiungere ulteriori valori." << endl; }else{ elementi[(start + len) % MAXELEM] = elem; len++; } } void Coda::fuoriCoda(){ if(!codaVuota()){ start = (start + 1) % MAXELEM; len--; }else{ cout << "Coda vuota. Non ci sono elementi da togliere." << endl; } } Coda::Coda(){creaCoda();} Coda::~Coda(){};