PROFDINFO.COM

Votre enseignant d'informatique en ligne

"Avengers, rassemblement!"

(ou exercice de révision) - voyez une solution utilisant la récursivité et une autre plus classique (dans les deux cas, la classe Méchant, la classe Noeud et les attributs de la classe Liste sont les mêmes. Seules les méthodes de Liste changent). Voyez aussi le Main avec lequel je testerai vos classes.

Les Avengers (ou les "Vengeurs")

Les AvengersLes Avengers sont un groupe de super-héros créés par Marvel qui sont associés pour régler des problèmes qu'aucun d'eux ne pourrait régler seul. Ils disposent d'ententes avec le grouvernement américain leur permettant d'agir comme le dicte leur bon jugement dans toute affaire où la sécurité des citoyens est mise en danger.

Il y a beaucoup de rotation de personnel chez les Avengers mais leurs membres les plus célèbres sont sans contredit le Capitaine America, Hulk, Iron Man (l'Homme de Fer), Thor (le dieu scandinave de la foudre) et Henry Pym (célèbre inventeur des particules Pym, qui permettent de modifier la dimension des gens et des objets, lui permettant de devenir Ant Man (l'Homme-Fourmi, un super-héros de quelques millimètres de hauteur qui conserve malgré tout sa force humaine) ou Giant Man (l'Homme-Géant, un héros de taille variant entre 4 et 30 mètres selon les besoins, avec une force proportionnelle)).

Votre mission

Les Avengers ont besoin d'un petit programme leur permettant de classer aisément leurs fiches de Méchants en ordre du niveau de danger qu'ils représentent. Comme le Capitaine est né en 1922, il n'est pas particulièrement à l'aise avec les nouvelles technologies... Iron Man, qui serait certainement capable de coder en C#, est malheureusement en mission en Afghanistan. Giant Man a les doigts trop gros pour le clavier et commet faute de syntaxe sur faute de syntaxe. Quant à Bruce Banner, un programmeur décent, il se transforme malheureusement en Hulk à chaque fois que son code ne compile pas, ce qui endommage sérieusement le matériel. Le Capitaine, désespéré, fait donc appel à vous, See-Sharp Man (ou See-Sharp Girl), même si votre formation de Héros n'est pas encore terminée.

Préférant livrer rapidement quelque chose de très simple et de fonctionnel, mais tout en ne voulant pas passer pour un deux de pique, vous optez pour une liste doublement chaînée. La liste offre l'avantage de faciliter le nombre d'instructions requises pour une insertion triée, de faciliter le retrait d'un élément en préservant le tri puis d'être facile à lire dans un sens comme dans l'autre.

Votre programme...

Les Méchants

Capitaine America vous a fourni cette liste partielle préliminaire pour fin de tests. Ne vous gênez pas pour en ajouter si vous le jugez utile.

 

(les descriptions et les photos ne vous sont fournies que pour votre culture personnelle et ne seront pas utilisées dans votre programme)
Méchant Niveau de danger Description
Photo
Baron Zemo
50
Scientifique nazi de la deuxième guerre mondiale. Un combat contre le Capitaine America a fait entrer Zemo en contact avec son propre Adhésif X, collant son masque mauve menaçant à son visage pour toujours. Depuis, il tente de se venger.
Baron Zemo
Loki
100
Dieu scandinave de la méchanceté et ennemi juré de Thor. Les Avengers ont originellement été formés pour le combattre.
Loki
Ultron
80
Un robot créé par Henry Pym qui a développé une intelligence complète et qui s'est mis à détester son créateur et à tenter de lui nuire pour prouver sa supériorité. Constamment détruit, il est constamment reconstruit et amélioré...
Ultron
Absorbing Man
40
Un criminel engagé par Loki qui a bu une potion asgardienne lui donnant le pouvoir d'absorber les propriétés de tout matériau qu'il touche avec son corps ou avec son boulet (souvenir de son séjour en prison).
Absorbing Man
Tête d'oeuf
10
Un brillant scientifique engagé par le gouvernement, il a perdu son emploi pour cause d'espionnage et met maintenant son cerveau au service du mal. Ayant subi une défaite humiliante contre Ant-Man lors de ses premiers actes criminels, il partage maintenant son temps entre tenter de conquérir le monde et se venger d'Ant Man.
Tête d'oeuf

Bonus: pour aller plus loin

Si vous avez envie d'impressionner encore plus les Avengers, pourquoi ne pas leur permettre également d'effacer un item de leur liste chaînée? Deux façons de faire cela:

Notez que la liste doublement chaînée doit être correctement maintenue et affichable sans erreur après une suppression!

Si vous décidez de créer les routines de suppression, votre note bénéficiera des particules Pym grandissantes et vous obtiendrez 5% de bonus par routine correctement implémentée.

Si vous décidez de créer les deux routines, profitez-en pour faire un peu de surcharge en nommant les deux méthodes de la même façon: effacer.

Un exemple de test

Voici par exemple ce que vous pourriez mettre dans le Main de votre classe de test:

 liste maListe;
 bool test;
 string testing;

maListe = new liste(); maListe.inserer("Baron Zemo", 50); maListe.inserer("Loki", 100); maListe.inserer("Ultron", 80); maListe.inserer("Absorbing Man", 40); maListe.inserer("Tête d'oeuf", 10); maListe.afficherAscendant(); maListe.afficherDescendant();

Console.WriteLine("------------------------------");

test = maListe.effacer("Baron Zemo"); Console.WriteLine("Baron Zemo effacé: " + test); maListe.afficherAscendant(); maListe.afficherDescendant();
Console.WriteLine("------------------------------");

testing = maListe.effacer(10); Console.WriteLine("Effacé: " + testing); testing = maListe.effacer(33); Console.WriteLine("Effacé: " + testing); maListe.afficherAscendant(); maListe.afficherDescendant();

Voici le résultat obtenu à l'écran:

Exemple d'exécution

Évidemment, il y a plusieurs autres tests qui seraient intéressants à faire afin d'être certain que tout est parfaitement fonctionnel...

Remise

Le travail est à remettre pour le début du cours de la semaine prochaine, soit le jeudi 10 septembre 2009 à 09h50. Envoyez d'ici là un copier-coller de votre classe liste par courriel à votre charmant professeur. Ce dernier utilisera son propre Main pour tester votre classe. N'oubliez pas qu'un programme remis en retard recevra une pénalité de 10% par jour de retard.

Et maintenant: Avengers, à vos claviers!