corso ASD
Corso di Algoritmi e Strutture Dati a.a. 2014/2015

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:

esercitazione05-cognome

Inserire nell'oggetto dell'email: [ASD1415] esercitazione05-cognome

Si riporta il codice discusso in aula il 5 novembre 2014.

//  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(){};
corso ASD