Besoin d aide pour mon devoir

Fermé
amineulaval Messages postés 1 Date d'inscription mardi 22 septembre 2009 Statut Membre Dernière intervention 22 septembre 2009 - 22 sept. 2009 à 05:24
 john - 23 nov. 2009 à 21:23
bonjour tous le monde

ben mon probleme c est que je suis pas fort en programation et je suis dans l obligation de prendre un cours algorithme pour ingenieur et mon professeur il arrete pas de donner des devoirs et j aimerai bien savoir est ce qu il y a quelq un qui peut m aider a faire mes devoir je suis vraiment mal pris et si tu peux dire je suis nul en ce domaine (mon cours et obligatoire ).
donc le voila mon tp

Pour ce deuxième TP, on vous demande de coder l'algorithme récursif de la Tour de Hanoï, d'une part, puis de le coder de nouveau, mais sans utiliser de récursion, en remplaçant tous les appels récursifs par l'usage d'une pile. Utiliser une pile STL (std::stack).
Au départ, tous les disques sont empilés sur le piquet de gauche et forment ainsi une tour. L'objectif du jeu est de transférer cette tour vers le piquet de droite, tout en respectant les règles suivantes:

1. on ne peut déplacer qu'un seul disque à la fois;
2. tous les disques ont des diamètres différents;
3. à aucun moment, un disque de diamètre supérieur ne peut reposer sur un disque de diamètre inférieur.

Pour coder chacune de vos solutions, utilisez des fonctions différentes que vous pourrez placer dans un fichier nommé Hanoi.ccp, par exemple. Écrivez aussi un programme principal qui lira sur la ligne de commande le nombre de disques de la tour à déplacer. L'usage de la ligne de commande devra être le suivant:

> tp2 [-r -q] n

où n correspond au nombre de disques de la tour. Par défaut, le programme doit utiliser la solution non récursive pour afficher la séquence des disques à déplacer. Chaque déplacement doit être affiché de la façon suivante: «I J» où I signifie que l'on choisi le disque sur le dessus de la pile du Ième piquet pour venir le placer sur le dessus de la pile du Jème piquet. Par exemple, voici ce que votre programme devrait produire pour une tour de trois disques (les piquets sont numérotés de 1 à 3, de la gauche vers la droite):

> ./tp2 3
1 3
1 2
3 2
1 3
2 1
2 3
1 3
temps = xxx sec
>

Ne faites preuve d'aucune originalité dans l'affichage de votre solution, car nous utiliserons un programme pour vérifier la validité du vôtre. À la fin de la séquence, vous devez afficher le temps d'exécution en seconde (pour ce faire, utilisez la classe PACC::Timer) en secondes. Deux paramètres optionnels peuvent précéder le nombre de disques sur la ligne de commande: «-r» indique d'utiliser la solution récursive au lieu de la solution non récursive, et «-q» spécifie de ne pas afficher la séquence des déplacements, uniquement le temps d'exécution. Prenez bien garde de respecter à la lettre ces instructions, car, sinon, vous serez pénalisé (item «Respect de l'énoncé» ci-dessous).

L'évaluation de ce TP sera basée sur les critères suivants:

* compilation sans anicroche (aucune erreur ni warning);
* respect de l'énoncé;
* respect des normes de programmation;
* fonctionnement robuste (aucun problème à l'exécution);
* qualité de l'implantation.

La date limite pour compléter votre TP est le vendredi 2 octobre à 17h00. Pour ce faire, vous devez créer un dépôt Mercurial de votre projet, le convertir en «bundle», et le soumettre dans pixel.

Durant ce TP, vous pourrez réfléchir aux questions suivantes:

* Quelles sont les complexités algorithmiques de vos deux solutions?
* Y a-t-il une différence de performance entre vos deux solutions? Si oui, pourquoi?
* Que pourrait-on faire pour obtenir un programme encore plus rapide?

merci par avance les amis (es)

2 réponses

Bonjour,

regarde le site nosdevoirs.com il contient pas mal de trucs là dessus
1
loOux30 Messages postés 15 Date d'inscription mardi 22 septembre 2009 Statut Membre Dernière intervention 23 septembre 2009 25
22 sept. 2009 à 06:32
Bonjour,

Je ne pense pas que sur se forum nous résolvons des devoirs mais plutot des entre aide ..

Cordialement , loOux
0