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

Scheme Discussion :

Algorithme nombre de bits d'un nombre décimal


Sujet :

Scheme

  1. #1
    Futur Membre du Club
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 11
    Points : 6
    Points
    6
    Par défaut Algorithme nombre de bits d'un nombre décimal
    Bonjour à tous , je suis nouveau sur le forum et aussi debutant en programmation .
    Ma vraie passion c'est la programmation C et particulierement sous Linux ( J'ai reussi à completement me passer de windows ^^ ) bref , en cours on fait de la programmation fonctionnelle avec Scheme , et j'avoue que je le trouve assez impressionant coté graphisme mais j'en en suis pas encore la .

    J'ai un probleme avec un exercice de recursivité , celui du calcul du nombre de bits binaires qui constituent un decimal , l'algorithme qui m'est directement venu à l'esprit c'est la division par 2 ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ;;;nbits: ent > ent
    ;;;(nbits n) donne le nombre de bits significatifs dans l'ecriture en base 2 d'un entier naturel donné en base 10
    (define (nbits n)
      (if (= n 0)
          0
          (+ 1 (nbits (quotient n 2)))
      )
    )
    (nbits 0) ;;; 0 (faux)
    Le probleme c'est que si le parametre n=0 des le debut le resultat est erroné , or 0 est representé par 1 bit , je n'arrive pas à trouver la solution en sachant que je n'ai droit qu'à des fonctions primitives et que je dois utiliser la reccursion


    Merci d'avance

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    Tu devrais essayer de faire le cas 0 par un if
    du genre (if (= n 0) 1)
    ou sinon si tu as plusieurs problèmes comme ça tu mets ça dans un cond

  3. #3
    Futur Membre du Club
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    J'ai effectivement pensé à des ifs imbriqués ou des cond mais le probleme c'est que dans tout les cas l'appel reccursif lira obligatoirement ( if (= n 0) ..) et moi je voudrais justement isoler un ( if ( = n 0 ) pour qu'il soit pas lu par l'appel reccursif ( sans definir une autre fonction biensure ^^ )

  4. #4
    alex_pi
    Invité(e)
    Par défaut
    Citation Envoyé par spy_k Voir le message
    Le probleme c'est que si le parametre n=0 des le debut le resultat est erroné , or 0 est representé par 1 bit
    Cette simple affirmation est assez discutable en fait...si tu considère que 2 = 10 est représenté sur 2 bits et non trois (par 010), c'est parce que tu supprimes tout les bits de poid fort à 0. Donc pour zéro tu les supprimes tous. Donc 0 est représenté sur 0 bits. Moi ça ne me choque pas !

  5. #5
    Futur Membre du Club
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Merci pour ta reponse alex_pi , il est vrai que sous cet angle ça parrait vraiment evident .

  6. #6
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Citation Envoyé par spy_k Voir le message
    en cours on fait de la programmation fonctionnelle avec Scheme , et j'avoue que je le trouve assez impressionant coté graphisme mais j'en en suis pas encore la .
    Je ne suis pas bien sûr que l'intérêt de Scheme soit dans sa puissance graphique.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  7. #7
    Futur Membre du Club
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    GIMP le meilleur logiciel de traitement d'images bitmap sous linux , est interfacé avec le language Scheme pou realiser les script , vu que la programmation fonctionnelle ne m'interesse pas dutout pour le moment , j'ai trouvé que le bon coté des choses sera que je pourrais realiser mes propres scripts pour GIMP . Il est aussi interfacé avec Perl et Python mais faut dire que les scripts purement graphiques sont plus faciles à faire en Scheme et bcp plus impressionants !

  8. #8
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Je comprends mieux ton intérêt pour Scheme alors.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

Discussions similaires

  1. Nombre de bits du processeur
    Par Razgriz dans le forum Windows XP
    Réponses: 6
    Dernier message: 12/02/2007, 23h43
  2. extraire le ieme bits d'un nombre
    Par gronaze dans le forum C
    Réponses: 13
    Dernier message: 09/03/2006, 18h11
  3. Nombre de bits à 1 dans un unsigned / index du 1er bit à 1
    Par Erickann dans le forum Assembleur
    Réponses: 2
    Dernier message: 20/11/2005, 22h51
  4. [Processeurs] A propos du nombre de bits ...
    Par Évariste Galois dans le forum Composants
    Réponses: 7
    Dernier message: 22/08/2005, 08h42
  5. [Débutant][RISC]Compter le nombre de bit à 1 dans un octet ?
    Par Pill_S dans le forum Autres architectures
    Réponses: 7
    Dernier message: 23/12/2004, 23h24

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