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 direccionament obert fent sondeig lineal.
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). Indica dins d’un comentari a la capçalera de cada mètode el seu cost en funció del nombre d’elements del diccionari n.
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 factor_de_carrega i redispersio (el que normalment estarien separats en els fitxers .hpp i .cpp).
Per testejar la classe disposes d’un programa principal que llegeix un conjunt d’elements, els insereix en un diccionari i mostra el seu contingut, desprès llegeix un segon conjunt d’elements, els insereix en el mateix diccionari i mostra novament el seu contingut.
Entrada
L’entrada té tres línies: la primera conté un natural positiu amb la dimensió inicial de la taula de dispersió i les altres dos contenen enters separats amb espais, són els enters que s’insereixen en el diccionari.
Sortida
Escriu el contingut del diccionari dos vegades: desprès d’inserir el primer conjunt d’enters i desprès d’inserir el segon conjunt d’enters. Cada vegada es mostra en diferents línies la quantitat d’elements que té, el factor de càrrega i el contingut de totes les caselles de la taula de dispersió(la clau si la casella està ocupada, "LL" si està lliure o "ES" si està esborrada).
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.
Només cal enviar la classe requerida i la implementació dels mètodes factor_de_carrega i redispersio. Pots ampliar la classe amb mètodes privats. Segueix estrictament la definició de la classe de l’enunciat.
Indica dins d’un comentari a la capçalera de cada mètode el seu cost en funció del nombre d’elements del diccionari n.
Input
13 5 -3 8 2 -1 7 -7 -6 7 -2 9 5 -3 2 -7 4
Output
Nº elem: 8 Factor de càrrega: 0.615385 0: -1 1: 7 2: LL 3: 8 4: LL 5: -3 6: 5 7: 2 8: -6 9: -7 10: LL 11: LL 12: LL ----------- Nº elem: 11 Factor de càrrega: 0.407407 0: -1 1: LL 2: LL 3: LL 4: -3 5: 7 6: 2 7: -7 8: -2 9: LL 10: 9 11: LL 12: LL 13: 8 14: LL 15: 5 16: -6 17: LL 18: LL 19: 4 20: LL 21: LL 22: LL 23: LL 24: LL 25: LL 26: LL -----------
Input
29 5 -5 3 -3 9 -9 2 -2 -5 5 1 -1 7 -7 0 4 -4 8 -8 6 -6 2 11 4 12 8 14 0 10 17 13
Output
Nº elem: 19 Factor de càrrega: 0.655172 0: -1 1: 0 2: 9 3: -2 4: -3 5: 2 6: 1 7: 7 8: 3 9: -7 10: -4 11: 5 12: -8 13: 6 14: -6 15: LL 16: LL 17: -5 18: -9 19: 4 20: 8 21: LL 22: LL 23: LL 24: LL 25: LL 26: LL 27: LL 28: LL ----------- Nº elem: 25 Factor de càrrega: 0.423729 0: -1 1: 0 2: LL 3: LL 4: LL 5: LL 6: 9 7: LL 8: -5 9: 4 10: 17 11: LL 12: 5 13: -6 14: LL 15: LL 16: 10 17: LL 18: LL 19: 3 20: -4 21: 12 22: LL 23: -2 24: 1 25: -9 26: 8 27: LL 28: LL 29: LL 30: LL 31: 11 32: LL 33: LL 34: LL 35: LL 36: LL 37: LL 38: LL 39: -3 40: 2 41: LL 42: LL 43: LL 44: LL 45: LL 46: LL 47: LL 48: 13 49: 7 50: -8 51: LL 52: -7 53: 6 54: 14 55: LL 56: LL 57: LL 58: LL -----------
Input
13 5 -5 3 -3 9 -9 2 -2 -5 5 1 -1 7 -7 0 4 -4 8 -8 6 -6 2 11 4 12 8 14 0 10 17 13 21 18 15 20 16 19
Output
Nº elem: 19 Factor de càrrega: 0.703704 0: -1 1: 0 2: LL 3: LL 4: 1 5: -3 6: 2 7: 7 8: 3 9: -2 10: 9 11: -7 12: -4 13: -9 14: 8 15: 5 16: -8 17: 6 18: -6 19: -5 20: 4 21: LL 22: LL 23: LL 24: LL 25: LL 26: LL ----------- Nº elem: 31 Factor de càrrega: 0.563636 0: -1 1: 0 2: 19 3: -5 4: 4 5: 18 6: LL 7: LL 8: LL 9: LL 10: LL 11: LL 12: LL 13: LL 14: LL 15: LL 16: LL 17: LL 18: LL 19: 1 20: -2 21: LL 22: 7 23: -8 24: LL 25: 10 26: LL 27: LL 28: LL 29: LL 30: LL 31: LL 32: 5 33: -6 34: 9 35: 16 36: LL 37: LL 38: 14 39: LL 40: 17 41: 12 42: -7 43: -9 44: 8 45: 3 46: -4 47: 6 48: 11 49: 13 50: -3 51: 2 52: 15 53: 20 54: 21 -----------