Le tour de hanoi
Fermé
sousourossa
Messages postés
11
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
16 mai 2011
-
Modifié par ben0123 le 16/05/2011 à 11:30
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 17 mai 2011 à 19:04
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 17 mai 2011 à 19:04
A voir également:
- Le tour de hanoi
- Comment réinitialiser une tour d'ordinateur - Guide
- Mini tour pc puissant - Accueil - Guide ordinateurs
- Ma tour s'allume mais l'écran reste noir - Guide
- Brancher tour pc sur tv - Guide
- Peut on coucher une tour d'ordinateur - Forum Matériel & Système
2 réponses
__acron__
Messages postés
60
Date d'inscription
mercredi 11 mai 2011
Statut
Membre
Dernière intervention
22 juin 2011
4
16 mai 2011 à 11:20
16 mai 2011 à 11:20
qu'est-ce que tu ne comprends pas à propos des pointers ?
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
16 mai 2011 à 11:28
16 mai 2011 à 11:28
Les pointeurs ne sont quasiment pas utilisés dans ce programme...
Il y a juste la matrice p = int[N][3] qui est allouée dynamiquement car N est entré par l'utilisateur, et qui permet d'afficher le dessin, mais en soit ça ne rentre pas en compte dans le calcul des tours de Hanoï.
Hanoï en lui même peut se réduire à ceci (avec un affichage réduit) :
Il y a juste la matrice p = int[N][3] qui est allouée dynamiquement car N est entré par l'utilisateur, et qui permet d'afficher le dessin, mais en soit ça ne rentre pas en compte dans le calcul des tours de Hanoï.
Hanoï en lui même peut se réduire à ceci (avec un affichage réduit) :
#include <stdio.h> void hanoi(int n, int x=1, int y=2, int z=3) { if (n>0) { hanoi(n-1,x,z,y); printf("%d --> %d\n",x,z); hanoi(n-1,y,x,z); } } int main() { hanoi(3); return 0; }
__acron__
Messages postés
60
Date d'inscription
mercredi 11 mai 2011
Statut
Membre
Dernière intervention
22 juin 2011
4
16 mai 2011 à 11:40
16 mai 2011 à 11:40
mmmh, pas sur que ca l'aide à comprendre le but des pointers;)
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
16 mai 2011 à 12:07
16 mai 2011 à 12:07
Je crois que sousourossa essaye juste de s'approprier ce code pour rendre à son prof un exercice sur Hanoï qui ait l'air d'être de lui, or si c'est juste Hanoï qui l'intéresse c'est inutile de lui expliquer les pointeurs car on en a pas besoin dans cet algorithme, son prof s'en chargera bien assez tôt...
sousourossa
Messages postés
11
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
16 mai 2011
16 mai 2011 à 12:11
16 mai 2011 à 12:11
juste que ce que j'essaye de faire est de comprendre ces pointeurs je lis vos msg et j'essaye de vous suivre donc je ne veux pas juste des codes mais c qui m'interesse c la comprehension
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
16 mai 2011 à 12:16
16 mai 2011 à 12:16
Pour la compréhension des tours de Hanoï tu n'as pas besoin de prendre des codes aussi "compliqués" qui t'embrouillent plus qu'autre chose.
Prends un code le plus simple possible (comme le mien), et débogue le pas à pas en t'aidant d'articles comme celui de Wikipédia par exemple.
Prends un code le plus simple possible (comme le mien), et débogue le pas à pas en t'aidant d'articles comme celui de Wikipédia par exemple.
__acron__
Messages postés
60
Date d'inscription
mercredi 11 mai 2011
Statut
Membre
Dernière intervention
22 juin 2011
4
16 mai 2011 à 12:27
16 mai 2011 à 12:27
... donc sousourossa ce que tu veux comprendre ce sont les pointers ou les tours de Hanoi ?? soit précis sinon on va pas pouvoir t'aider...
16 mai 2011 à 11:24
16 mai 2011 à 11:35
Il y a une différence entre comprendre ce qu'est un pointer et comprendre à quoi ils servent.
Dans ton cas j'imagine que c'est l'argument int **p qui te pose pb.
Ici, int **p est un tableau à 2 dimensions.
un pointer est une adresse mémoire, donc soit l'adresse d'une variable, soit l'adresse d'un tableau (donc une suite de variable qui se suivent).
donc si on met int *p (avec 1 seul *) on a soit une variable de type int à l'adresse *p, soit une suite de variable de type int à l'adresse *p (tableau). dans le cas présent il s'agit d'un tableau.
Hors ici, on a int **p donc p pointe vers une suite d'adresse. chaque adresse pointant à son tour vers une suite de int.
tu te retrouve alors avec un tableau a 2 dimensions... lorsque tu as int *p, tu peux accéder à chaque entrées du tableau en faisant p[X] avec X compris entre 0 et [taille_du_tableau] (attention à ne pas dépasser).
donc avec ton int **p, si tu fais int p[0] tu obtiens le int *p de la premiere ligne, donc en faisant p[0][0] tu obtiens le premier int de la premiere ligne.
je sais pas si c'est super clair... à mon sens dans la compréhension des pointers, le mieux c'est d'experimenter.
D'ailleurs tu fera gaffe, ya une fuite mémoire dans ton prog.