IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Caml Discussion :

L'ascenseur récursivif: tout un programme !


Sujet :

Caml

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 51
    Points : 31
    Points
    31
    Par défaut L'ascenseur récursivif: tout un programme !
    Bonjour à tous !!

    Je débute en programmation et c'est en suivant le conseil d'un ami développeur que j'ai commencé par le Caml . Mais comme je suis tombé sur un résultat que je ne comprends pas et comme je n'aime pas continuer sans comprendre je vous explique le truc

    le code suivant calcule les différents arrêt (au hasard) d'un ascenseur jusqu'à l'étage 0.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    let rec nb_arrets etages =
    	print_int etages;
    	print_string " ";
    	if etages = 0
    		then 0
    		else succ (nb_arrets(Random.int etages));
    		in
     
       Random.self_init();
       print_int (nb_arrets 99);

    ca va pas exemple afficher:

    le dernier chiffre c'est le nombres d'étages visité avant l'étage ZERO (rez-de-chaussé). Et c'est là que je ne comprends pas ! D'où sort ce chiffre ?
    J'ai beau regarder le code et je ne vois que le code qui permet de trouver les étages de manière aléatoire jusqu'à zéro. Je ne vois pas où est défini le calcul du nombre d'étapes (d'étages visités avant le RDC) (ici 5)

    Quelqu'un peut-il m'aider ?


    Thx !!!

  2. #2
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut
    Ce code modifié calcule exactement la même chose, mais sans afficher les arrêts de l'ascenseur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    let rec nb_arrets etages =
      if etages = 0 then 0
      else 1 + nb_arrets(Random.int etages)
    in
      Random.self_init();
      print_int(nb_arrets 99);;
    Dans ton exemple 5 est le résultat de 1 + 1 + 1 + 1 + 1 + 0.
    Du même auteur: mon projet, le dernier article publié, le blog dvp et le jeu vidéo.
    Avant de poser une question je lis les règles du forum.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    832
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 832
    Points : 1 104
    Points
    1 104
    Par défaut
    "succ n" vaut "n+1". C'est dans le "succ" de ton code que le calcul se fait : à chaque fois il renvoie un "nombre d'arrêt" de plus (et dans le cas 0, tu renvoies 0, "then 0").

    Le code de SpiceGuid est effectivement plus clair.

Discussions similaires

  1. Définir une base numérique pour tout un programme
    Par stevin dans le forum Langage
    Réponses: 1
    Dernier message: 21/11/2007, 21h36
  2. BDD Excel python et graphique , bref tout un programme :)
    Par Iria77 dans le forum Calcul scientifique
    Réponses: 3
    Dernier message: 24/08/2007, 15h24
  3. Comment faire une variable pour tout le programme ?
    Par Nico128 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 04/06/2007, 08h48
  4. rénitialiser tout le programme par un boutton?
    Par devlopassion dans le forum C++Builder
    Réponses: 3
    Dernier message: 27/11/2006, 09h22
  5. raccourci dans tout le programme
    Par greg778 dans le forum Composants VCL
    Réponses: 19
    Dernier message: 11/11/2005, 12h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo