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

Lisp Discussion :

Fonction qui calcule somme


Sujet :

Lisp

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Points : 60
    Points
    60
    Par défaut Fonction qui calcule somme
    Bonjour,

    II. À partir d'une liste dont les éléments sont du type nom de l'étudiant + notes, comme :

    '((toto 10 10 10)
    (titi 10 20 15)
    (tata 18 16 14) )

    1. Faire une fonction qui génère une liste de doublets dont le premier élément est le nom de l'étudiant et le second la moyenne de ses notes.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    (defun moyenne (liste &optional n)
      (cond
        ((not liste) nil) 
        ((and (listp (car liste)) (> (cadar liste) 10))
         (cons (car liste)  (set n (+ n (cadar liste)))) (moyenne (cdr liste)))
        ((moyenne (cdr liste)))))
    moyenne
     
    [235]> (moyenne '((toto 10 10 10) (titi 10 20 15) (tata 18 16 14) ))
     
    *** - +: nil is not a number

    quelqu'un peut m'aider svp

  2. #2
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2013
    Messages : 610
    Points : 1 878
    Points
    1 878
    Billets dans le blog
    21
    Par défaut
    Ton argument n est 'optional': lorsqu'il n'est pas précisé, il est égal à Nil (c'est le comportement par défaut de optional). Du coup quand tu écris (setf n (+ n etc.)) tu additionnes Nil et un nombre. Or Nil n'est pas un nombre.

    Pour préciser une valeur par défaut de l'argument la syntaxe est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    (defun moyenne (liste &optional (n 0))
      etc)

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Points : 60
    Points
    60
    Par défaut
    Merci pour la réponse oui j'ai pu le résoudre avec cette méthode

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. fonction qui calcule la somme
    Par thouraya24 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 06/05/2009, 12h59
  2. [Macro Excel] Fonction qui calcule une formule dans une cellule
    Par Enthau dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/07/2008, 16h31
  3. fonction qui calcule log
    Par acacia dans le forum Débuter
    Réponses: 5
    Dernier message: 15/02/2008, 13h19
  4. fonction qui calcule le nombre de checkbox cochés
    Par namstou3 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/10/2007, 13h55
  5. fonction qui calcule la factorielle ?
    Par piff62 dans le forum C
    Réponses: 8
    Dernier message: 27/02/2005, 11h00

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