Donada la classe dicc que permet gestionar diccionaris amb claus enteres, cal implementar els mètodes:
Els diccionaris s’implementen amb taules de dispersió amb sinònims encadenats indirectes. Les llistes de sinònims estan ordenades per la clau.
Cal enviar a jutge.org la següent especificació de la classe dicc i la implementació dels mètodes dins del mateix fitxer (la resta de mètodes públics ja estan implementats).
Degut a que jutge.org només permet l’enviament d’un fitxer amb la solució del problema, en el mateix fitxer hi ha d’haver l’especificació de la classe i la implementació dels mètodes insereix i diferencia (el que normalment estarien separats en els fitxers .hpp i .cpp).
Per testejar la classe disposes d’un programa principal que llegeix elements i els insereix en un diccionari, desprès fa el mateix en un 2on diccionari i finalment crida el mètode diferencia per calcular la diferència dels dos diccionaris llegits.
Entrada
L’entrada conté dues línies amb enters separats amb espais. Cada línia conté els elements a inserir en un diccionari buit.
Sortida
Escriu el contingut de 3 diccionaris: el 1er diccionari llegit, el 2on diccionari llegit i el diccionari diferència dels dos primers. Per cada diccionari es mostra en diferents línies la quantitat d’elements que té i els elements que conté cadascuna de les llistes de sinònims encadenats indirectes (els elements de cada llista apareixen separats amb un espai i en el mateix ordre en que es guarden).
Observació
Per calcular el valor de dispersió utilitza el mètode h que ja està implementat i que permet calcular un valor de dispersió entre 0 i LONG_MAX (el valor long int més gran que permet el compilador) a partir d’una clau entera.
En aquest exercici s’ha limitat la mida de la taula de dispersió _M a 13. En un cas real aquest valor seria molt més gran i/o s’implementaria la tècnica de redispersió per tal que la mida s’anés adaptant a les necessitats de cada moment.
Només cal enviar la classe requerida i la implementació dels mètodes insereix i diferencia. Pots ampliar la classe amb mètodes privats. Segueix estrictament la definició de la classe de l’enunciat.
Input
5 -3 8 2 -1 7 -7 -6 7 -2 9 5 -3 2 -7
Output
Nº elem: 8 0: 1: -1 2: 3: 4: 2 5: 6: 7: 8: 9: -3 10: -7 -6 7 11: 12: 5 8 ----------- Nº elem: 7 0: 1: 2: 3: 9 4: -2 2 5: 6: 7: 8: 9: -3 10: -7 7 11: 12: 5 ----------- Nº elem: 3 0: 1: -1 2: 3: 4: 5: 6: 7: 8: 9: 10: -6 11: 12: 8 -----------
Input
5 -5 3 -3 9 -9 2 -2 -5 5 1 -1 7 -7 0 4 -4 8 -8 6 -6 2 10 4 12 8 14 0 10 14 6
Output
Nº elem: 19 0: 0 1: -1 1 2: 3: -9 -4 4 9 4: -2 2 5: 6: 7: 8: 9: -3 3 10: -7 -6 6 7 11: 12: -8 -5 5 8 ----------- Nº elem: 8 0: 0 1: 12 14 2: 3: 4 4: 2 5: 6: 7: 8: 9: 10 10: 6 11: 12: 8 ----------- Nº elem: 14 0: 1: -1 1 2: 3: -9 -4 9 4: -2 5: 6: 7: 8: 9: -3 3 10: -7 -6 7 11: 12: -8 -5 5 -----------