vuoi
o PayPal
tutte le volte che vuoi
Università di Napoli Federico II
Corso di Laurea in Ingegneria Informatica – Esame di Programmazione 1
Prova Pratica del 27/02/2006
Cognome……………………………………..Nome…………………....Matr………………………
oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
Lo studente legga attentamente il testo e produca il programma ed i casi di test necessari per dimostrarne il
funzionamento. La mancata compilazione completa dell’elaborato, la compilazione con errori o l’esecuzione
errata dell’algoritmo daranno luogo alla valutazione come prova non superata.
oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
Testo della prova
Implementare in linguaggio C++ la classe Carte_In_Mano. Tale classe è una lista allocata dinamicamente
(si consiglia una implementazione con lista a puntatori). Ogni elemento di Carte_In_Mano è una Carta (si
consiglia di usare una semplice struct per il tipo di dato astratto Carta) e dovrà contenere le seguenti
informazioni:
- Valore, di tipo string (ad esempio “Asso”, “Due”, “Tre”, etc.);
- Seme, di tipo string (ad esempio “Cuori”, etc.)
Si può utilizzare la classe string fornita dalle librerie.
Sulla lista dovranno essere realizzati i seguenti metodi (oltre a costruttore e distruttore):
Pesca(const string valore const string seme)
Stampa() Visualizza a video gli elementi della lista
IL metodo Pesca aggiunge elementi alla lista delle carte in mano seguendo le regole seguenti:
- se la carta pescata forma una coppia con una di quelle già in mano (cioè ha lo stesso valore), la carta
in mano viene eliminata;
- se la carta pescata non forma alcuna coppia con quelle già in mano (cioè nessuna delle carte in mano
ha lo stesso valore), la carta viene aggiunta a quelle in mano (in testa alla lista).
Si test la classe realizzata con il seguente main di prova:
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char *argv[])
{ Carte_In_Mano *l=new Carte_In_Mano();
l->Pesca("Asso", "Picche"); cout <<"Pesco Asso Picche\n";
l->Pesca("Cinque", "Fiori"); cout <<"Pesco Cinque Fiori\n";
l->Pesca("Tre", "Quadri"); cout <<"Pesco Tre Quadri\n";
l->Pesca("Jack", "Cuori"); cout <<"Pesco Jack Cuori\n";
cout<<"\n\nVisualizzo tutta la lista:\n";
l->stampa();
l->Pesca("Cinque", "Cuori"); cout <<"Pesco Cinque Cuori\n";
l->Pesca("Nove", "Quadri"); cout <<"Pesco Nove Quadri\n";
l->Pesca("Asso", "Cuori"); cout <<"Pesco Asso Cuori\n";
l->Pesca("Jack", "Quadri"); cout <<"Pesco Jack Quadri\n";