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 :

Exercice caml complexité


Sujet :

Caml

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 78
    Points : 18
    Points
    18
    Par défaut Exercice caml complexité
    Bonjour, je vous écris pour avoir un peu d'aide je débute en caml et j'ai un exercice à faire je ne comprend pas trop comment le faire et j'aimerai avoir des explication précises pour bien comprendre merci de me répondre. Mon sujet et le suivant :

    soit l'algorithme Descente(a,l,m), ou : l est une liste dont les elements appartiennent a un ensemble totalement ordonné, l'élément a est de même type que les éléments de l, m est un entier, et où le symbole :: désigne l'opérateur de construction de listes :

    Descente(a,l,m)
    Soit n = longeur(l);
    Si m >=n alors le résultat retourné est la liste a::l
    Sinon Si l est vide alors le résultat retourné est la liste [a]
    Sinon poser l=b::q; (*b est la tete de l et q sa queue*)
    Si a >b alors le résultat est la liste b :: Descente(a,q,m+1)
    Sinon le résultat est a:escente(b,q,m+1)

    on me demande de dérouler Descente(7,[5;4;6;8;3;9],1).
    on me demande ensuite de traduire cet algorithme dans un language de programmation approprié et l'exécuter sur quesleques exemples de données.

    voila merci de me répondre

  2. #2
    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
    Qu'est-ce que tu as fait pour l'instant, où en es-tu, et quel est ton problème pour continuer ? Qu'est-ce qui te bloque ou que tu ne comprends pas ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 78
    Points : 18
    Points
    18
    Par défaut
    Pour l'instant j'ai cela mais çà ne marche pas :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    let rec descente a l m n=if  m>= n then a::l
    	else if l = [] then [a]
    	else let b = hd[l] in let q = tl[l] in
    		if a > b then b::descente a q (m+1) n 
    		else a::descente b q (m+1) n;;
    merci de m'aider

  4. #4
    Membre éprouvé
    Avatar de Cacophrene
    Homme Profil pro
    Biologiste
    Inscrit en
    Janvier 2009
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Biologiste

    Informations forums :
    Inscription : Janvier 2009
    Messages : 535
    Points : 1 125
    Points
    1 125
    Par défaut
    Bonsoir,

    Tu y es presque. Dans ton code, l est déjà une liste, de sorte que [l] serait une liste de liste. L'erreur se trouve avec hd et tl. De plus, pour savoir si une liste est vide ou comporte au moins un élément, tu peux utiliser un filtrage match l with qui fait tout le travail pour toi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    let rec descente a l m n=
      if m >= n then a :: l else
        match l with
        | [] -> [a]
        | b :: q -> if a > b then b :: descente a q (m + 1) n 
          else a :: descente b q (m + 1) n
    Essaie d'abord de voir si tu comprends bien tout ce code, puis montre-nous ce que tu as fait pour la suite (déroulement de l'exécution, etc.).

    Cordialement,
    Cacophrène

Discussions similaires

  1. [Vérification] Exercices de complexité
    Par drakes00 dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 04/12/2013, 09h54
  2. problème java exercice et complexité
    Par baobab95 dans le forum Débuter avec Java
    Réponses: 20
    Dernier message: 14/06/2009, 14h40
  3. exercice en caml
    Par much1707 dans le forum Caml
    Réponses: 7
    Dernier message: 26/05/2009, 20h54
  4. exercice complexité et analyse des algorithmes
    Par psycho_xn dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 21/01/2008, 14h04

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