Altres Exercicis

(*) elteuusuari correspon a la direcció de correu eltectrònic del centre, sense punts, fins a @itb.cat

Sumari

  1. Mine
  2. MathematicExpression
  3. NodeList
  4. ListImplementations
  5. SortPersons
  6. BasquetStatistics
    1. BasquetReadData
    2. ShowDataPlayer
    3. ShowOtherDataPlayer
  7. Employees
  8. DeleteEmployee
  9. Palindrom

Mine

Donada una mina de diamants, representada mitjançant una cadena de caràcters '<' , '>', '(' i ')' de qualsevol longitud i ordre, s'ha de retornar el número de diamants blancs i diamants negres que existeixen a la mina. Un diamant blanc està format pel símbol '<' seguit de '>', és a dir; "<>" i un diamant negre està format pel símbol '(' seguit de ')', és a dir; "()" . S'ha de tenir en comte que cada vegada que s'extreu un diamant se'n poden formar altres.
Exemples:

Mina (Entrada) n Diamants (Sortida) Explicació
"" 0 Mina buida, 0 diamants
"<>" 1b Mina amb un únic diamant blanc
"()" 1n Mina amb un únic diamant negre
"«»" 2b Mina amb un diamant blanc sencer i un altre que es forma quan s'extreu el primer.
"<>«»<(<)" 3b Mina amb dos diamants blancs i un tercer que es forma amb l'extracció del segon.
"<>(<>)<(<)" 3b 1n Mina amb dos diamants blancs i un negre que es forma amb l'extracció del segon blanc.

MathematicExpression

Cal resoldre un comprovador d'expressions matemàtiques. Un exemple d'expressió algebraica correcta seria:
25+3(1+2+(304))/2
Exemples erronis:
25+3(1+2+(304))/(2
25+3(1+2+(304))/)2(
25+3(1+2)+(304))/2
Com que realitzar el càlcul d'una expressió algebraica és complicat, limitarem l'exercici a comprovar que els parèntesis siguin correctes.
L'algorisme ha de fer:

  1. Extreure els parèntesis de l'expressió i ficar-los en la Cua. En l'exemple correcte de més amunt ens quedarien els següents elements a la cua:
    ['(','(',')',')']
  2. Extreure element per element de la Cua i avaluar-lo utilitant la Pila:
    ◦ Si és "(" el fiquem a la pila.
    ◦ Si és ")" extraiem un element de la pila. Si és un "(" tot ok. Si hem esgotat la pila, és que hi ha un error.

  3. Al final de l'algorisme la pila ha d'estar buida, altrament és que hi ha algun error.

NodeList

Implementa una una llista anomenada NodeList, serà una llista simplement enllaçada.
Els elements la llista seran objectes Node, formats pels atributs elem (de tipus Object), un (link) següent (tipus Node).
Crea la classe Node com a classe privada dins de NodeList, ha de contenir una constructora I els getters i setters
Finalment la classe NodeList contindrà els atributs primer I últim de tipus Node I un enter que indicarà el número d'elements que conté la llista.
Afegeix els mètodes de list (esBuida, afegir, eliminar, mida …).
Finalment en una classe nova crea un main I verifica que funciona tot allò que has codificat. Assegura't que els casos “perillosos” funcionin, com ara eliminar un element d'una llista buida…

Un cop fet això converteix la teva classe en genèrica, per fer-ho la declaració de la classe ha de ser: public class NodeList. I hauràs d'intercanviar tot allò que és Object com a T

ListImplementations

Crea dues llistes una implementada amb linkedlist i l'altre amb arrayList i afegeix a cada una d'elles 10.000 elements.

Inserció ArrayList LinkedList
“per defecte”    
Posicio [0]    
Posició [5.000]    
Posició[10.000]    

Explica els resultats.
-Fes el mateix però enlloc d'inserir obtén l'element de la posició 0, 5.000 i 10.000

Obtenció ArrayList LinkedList
“per defecte”    
Posicio [0]    
Posició [5.000]    
Posició[10.000]    

SortPersons

Donada una llista de persones (Persona conté els següents atributs: nom, cognoms, data de naixement i dni). Ordena la llista. Farem servir l'edat com a criteri d'ordenació i si van néixer en el mateix dia, utilitzarem el primer cognom.

BasquetStatistics

BasquetReadData

Inicialment començarem carregant les dades. La gent del diari Farsa ens ha passat un document anomenat jugadors.txt amb el següent contingut:

*Les mitjanes i la valoració són valors racionals amb dos dígits

Fes una funció anomenada loadPlayersFromFile(file); que llegeix l'arxiu passat per paràmetre i carrega una col·lecció de Players segons la informació llegida.

ShowDataPlayer

La següent tasca a realitzar és la funció printPlayer(number); que donat el número d'un jugador ens imprimeixi per pantalla la informació relativa d'aquest jugador.
Tenim una restricció per disseny i és que l'objecte Player no conté l'atribut número, per tant mantindrem un registre que ens relacioni cada número amb un jugador.
Per fer aquest registre disposem de la següent informació que ens ha comentat el client per telèfon:
“El número de samarreta dels jugadors ordenats alfabèticament són 10,5,20,25,21,13”.
Ho sigui que el 10 és l'Abrines, el 5 el Doellman, 20 l' Eriksson…

ShowOtherDataPlayer

Fes una funció per imprimir tots els jugadors per ordre de valoració (de més a menys valorat).

Employees

Explica breument en el comentari del codi quina estructura de dades utilitzes i perquè. En cada un
dels apartats
2.1 En una certa empresa volen mantenir un registre dels empleats(nom,sou) segons el departament
en el què treballen. Ens demanen que mostrem per cada departament el nom dels seus empleats.
Exemple:

Departament Treballador Nom Treballador Sou
Informàtica Marc 300
Informàtica Anna 600
Electrònica Jasmine 400
Electrònica Walid 500


Empleats del departament Informàtica:
[Empleat [nom=Marc, sou=300], Empleat [nom=Anna, sou=600]]
Empleats del departament Electrònica:
[Empleat [nom=Jasmine, sou=400], Empleat [nom=Walid, sou=500]]

DeleteEmployee

A continuació fes un registre amb tots els empleats i elimina els 3 empleats amb més sou.
Sortida del programa segons l'exemple anterior

[Empleat [nom=Marc, sou=300]]

Palindrom

Implementa una funció que indiqui si una paraula és palindrom.
Una paraula és palíndrom si les seves lletres es repeteixen en el mateix ordre quan són llegides en la
direcció inversa.
Per fer-ho segueix la següent especificació:
esPalindrom(Pila p, Cua c ) retorna booleà

Assumeix que et passen per paràmetre una pila i una cua que contenen les lletres d'una certa
paraula. Seguint l'exemple següent:

var text = listOf('r','o','t','o','r')
for ( myCaracter in text) {
	pila.push(myCaracter);
	cua.add(myCaracter);
}

b: Boolean = esPalindrom(pila, cua);
//En aquest esemple b és true