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 :

Erreur incompréhensible


Sujet :

Scheme

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Points : 9
    Points
    9
    Par défaut Erreur incompréhensible
    Bonjour, voici l'erreur que j'ai depuis un petit bout de temps :

    +: expected only one expression after the name `+', but found one extra part




    voici le code de base :
    (define (stat nb n nfinal)
    (let* ((x (- (/ (random 2001) 1000 ) 1))
    (y (- (/ (random 2001) 1000 ) 1))
    (+ (x) (y))
    )
    ))




    Merci de bien vouloir me dire d'où elle vient.
    Cordialement

  2. #2
    Membre régulier Avatar de +Guilhem
    Profil pro
    Ingénieur d'études Java/JEE
    Inscrit en
    Novembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur d'études Java/JEE

    Informations forums :
    Inscription : Novembre 2007
    Messages : 78
    Points : 112
    Points
    112
    Par défaut
    Tout d'abord, quand tu fais (+ (x) (y)), les "x" et "y" ne doivent pas être parenthésés, sinon cela supposerait que tu passes en paramètres ces x et y à... aucune fonction.

    Ensuite, tu as dû t'emmêler les pinceaux avec les parenthèses puisque cette opération se trouve dans les liaisons du let*, du coup son corps est vide.

  3. #3
    Membre éclairé
    Avatar de GnuVince
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    679
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 679
    Points : 803
    Points
    803
    Par défaut
    Tu voulais sûrement ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    (define (stat nb n nfinal)
      (let ((x (- (/ (random 2001) 1000 ) 1))
            (y (- (/ (random 2001) 1000 ) 1)))
        (+ x y)))

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par Nicotendo Voir le message
    Bonjour,
    [...]
    (define (stat nb n nfinal)
    (let* ((x (- (/ (random 2001) 1000 ) 1))
    (y (- (/ (random 2001) 1000 ) 1))
    (+ (x) (y))
    )
    ))
    [...]
    Cordialement


    Merci

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Merci beaucoup pour vos réponse

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Sinon, voici une autre erreur que j'ai souvent :
    Voici le code :

    (define (sommepib n)
    (if (or (not (number? n)) (not (positive? n)))
    #f
    (if (= n 0)
    1
    (+ (* (exposant -1 n) (/ 1 (+ (* 2 n) 1)))
    (sommepib (- n 1))

    )
    )
    )
    )



    Voici l'erreur :
    > (sommepib 8)
    +: expects type <number> as 2nd argument, given: false; other arguments were: -1



    Merci

  7. #7
    Membre régulier Avatar de +Guilhem
    Profil pro
    Ingénieur d'études Java/JEE
    Inscrit en
    Novembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur d'études Java/JEE

    Informations forums :
    Inscription : Novembre 2007
    Messages : 78
    Points : 112
    Points
    112
    Par défaut
    Citation Envoyé par Garulfo Voir le message


    Merci


    Sinon, pour ton erreur, la réponse est dans le message d'erreur. Le "+" attend au moins deux nombres et un moment tu lui passes un booléen : #f.

    Autre détail, ton (if (= n 0) 1 ... ) ne sert à rien puisque (positive? 0) retourne #f donc si n>0, ta fonction passe le premier if et par conséquent le deuxième aussi.

  8. #8
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par Nicotendo Voir le message
    Sinon, voici une autre erreur que j'ai souvent :
    Voici le code :

    (define (sommepib n)
    (if (or (not (number? n)) (not (positive? n)))
    #f
    (if (= n 0)
    1
    (+ (* (exposant -1 n) (/ 1 (+ (* 2 n) 1)))
    (sommepib (- n 1))

    )
    )
    )
    )



    Voici l'erreur :
    > (sommepib 8)
    +: expects type <number> as 2nd argument, given: false; other arguments were: -1



    Merci
    T'as pas compris quoi dans mon précédent message ???

    Pourrais tu s'il te plait écrire du code lisible ?

    Je tiens à noter par ailleurs qu'écrire
    démontre une mécompréhension de ce qu'est un if.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    (define (sommepib n)
                (if (or (not (number? n)) (not (positive? n))) 
                #f
                (if (= n 0)
                         1
                         (+ (* (exposant -1 n) (/ 1 (+ (* 2 n) 1)))
                              (sommepib (- n 1))
    
                         )
                    )
               )
          )
    Pardon
    Ce que je n'ai pas compri, c'est l'algo :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    DEBUT
    SI (cond ...)
    Alors
          SI (cond ...)
          ALORS
                 retourner(...)
          SINON
                 retourner(...)
    SINON
          retourner(...)
    FIN

    ...dont je n'arrive pas a le coder en scheme au niveau du si ... sinon

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     (define (somme liste)
       (if (not (list? liste))
           #f
           (if (null? liste)
               0
               (+ (car liste) (somme (cdr liste)))
       
           )
       )
    )
     
    (define (somme2 liste)
       (cond ((not (list? liste)) #f)
    	 ((null? liste) 0)
    	 (else	(+ (car liste) (somme (cdr liste))))
    	)
      )

    Deux autres petits problemes :
    Ces deux fonctions sont censés faire la somme des éléments d'une liste.
    Or la première ne fonctionne pas et la seconde fonctionne parfaitement.
    Je n'arrive pas a comprendre pourquoi la première ne fonctionne pas parfaitement.

    De plus, je souhaiterai savoir comment tester si un des éléments d'une liste est un nombre car je ne suis pas censé pouvoir faire : (somme '(a b 2 3))


    Merci

  11. #11
    Membre régulier Avatar de +Guilhem
    Profil pro
    Ingénieur d'études Java/JEE
    Inscrit en
    Novembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur d'études Java/JEE

    Informations forums :
    Inscription : Novembre 2007
    Messages : 78
    Points : 112
    Points
    112
    Par défaut
    La première devrait fonctionner, la seconde non (car l'appel récursif se fait sur somme, et pas somme2).

    Par contre on ne vérifie jamais le typage des paramètres, on suppose qu'ils sont conformes à ce qu'on attend, donc le "(not (list? liste))" est inutile. Surtout qu'il va faire le test pour chaque élément de la liste...

    Citation Envoyé par Nicotendo Voir le message
    De plus, je souhaiterai savoir comment tester si un des éléments d'une liste est un nombre car je ne suis pas censé pouvoir faire : (somme '(a b 2 3))
    (number? (car liste))

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Je me suis trompé pour l'appel récursif, c'est en effet le même probleme sur somme.

    Merci pour la dernière réponse

  13. #13
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Bon ça aussi c'est non ?

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

Discussions similaires

  1. Erreur incompréhensible
    Par Progs dans le forum C++
    Réponses: 13
    Dernier message: 21/06/2005, 14h59
  2. [2.1][jdk1.3][Junit] Erreur incompréhensible!
    Par Sniper37 dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 29/04/2005, 19h03
  3. Erreur incompréhensible à la ligne 200 (sur 190 ?!)
    Par transistor49 dans le forum Qt
    Réponses: 3
    Dernier message: 22/03/2005, 23h09
  4. [Fichiers] Erreur incompréhensible
    Par Clorish dans le forum Langage
    Réponses: 5
    Dernier message: 14/12/2004, 17h18
  5. [JSP] Erreur incompréhensible
    Par xxaragornxx dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 09/09/2003, 16h37

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