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

Algorithmes et structures de données Discussion :

[AlgoBox] Erreur de syntaxe dans l'algorithme


Sujet :

Algorithmes et structures de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2014
    Messages : 43
    Points : 16
    Points
    16
    Par défaut [AlgoBox] Erreur de syntaxe dans l'algorithme
    Bonjour,

    j'ai un problème avec cet algorithme qui peut m'aider ?

    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
    19
    20
    21
       VARIABLES
         x EST_DU_TYPE NOMBRE
         s EST_DU_TYPE CHAINE
       DEBUT_ALGORITHME
         AFFICHER "entrez un nombre"
         LIRE x
         s PREND_LA_VALEUR " "
         TANT_QUE (x!=0) FAIRE
           DEBUT_TANT_QUE
          SI (x % 2=1) ALORS
            DEBUT_SI
            s PREND_LA_VALEUR 1+s
            FIN_SI
            SINON
              DEBUT_SINON
              s PREND_LA_VALEUR 0+s
              x PREND_LA_VALEUR x // 2
              FIN_SINON
          FIN_TANT_QUE
        AFFICHER s
      FIN_ALGORITHME
    affiche

    ***L'algorithme contient une erreur : impossible de le lancer***
    ***Vérifiez la syntaxe des affectations et des conditions***
    Merci

  2. #2
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    Par défaut
    Bonjour ligne 20 x//2 -> x/2 ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2014
    Messages : 43
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par kevin254kl Voir le message
    Bonjour ligne 20 x//2 -> x/2 ?
    mais je vous utliser la "div"
    pas la divsion


    la meme chose avec algobox

    ***L'algorithme contient une erreur : impossible de le lancer***
    ***Vérifiez la syntaxe des affectations et des conditions***

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Citation Envoyé par nadirmabed Voir le message
    mais je vous utliser la "div"
    Pas compris, mais en regardant l'algorithme, je te soufflerais la fonction floor.

    On va écouter le compilateur qui a toujours raison :
    ***Vérifiez la syntaxe des affectations et des conditions***
    Il est dit dans cette section :
    Exemples de syntaxe pour la condition :

    Pour vérifier si x est égal à 2, la condition à écrire est : x==2
    Avec un double == donc à cette ligne SI (x % 2==1) ALORS
    Ajout de commentaires
    L'ajout d'un commentaire dans le code de l'algorithme se fait une ligne vierge grâce au bouton Commentaire. Tout commentaire apparaît en italique et est précédé des caractères //.
    x PREND_LA_VALEUR x // 2 tu affectes donc (inutilement) x à x, et // 2 est un commentaire, non pris en compte dans le code.
    En plus de mon soufflage de début, je te conseille de reconsidérer la position de cette ligne.

    Autre remarque : s étant une chaîne, je verrais plutôt s PREND_LA_VALEUR "0"+s et s PREND_LA_VALEUR "1"+s (voir le paragraphe Opérations avec les chaînes de la section).

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2014
    Messages : 43
    Points : 16
    Points
    16
    Par défaut
    J'ai fait comme tu ma dis ses la même chose
    regarde si j'ai tromper

    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
    19
    20
    21
    22
    23
    24
    25
     
     
    AlgoBox : problem conversion
    Code de l'algorithme
    1   VARIABLES
    2     x EST_DU_TYPE NOMBRE
    3     s EST_DU_TYPE CHAINE
    4   DEBUT_ALGORITHME
    5     AFFICHER "entrez un nombre"
    6     LIRE x
    7     s PREND_LA_VALEUR " "
    8     TANT_QUE (x!==0) FAIRE
    9       DEBUT_TANT_QUE
    10      SI (x % 2==1) ALORS
    11        DEBUT_SI
    12        s PREND_LA_VALEUR "1"+s
    13        FIN_SI
    14        SINON
    15          DEBUT_SINON
    16          s PREND_LA_VALEUR "0"+s
    17          x PREND_LA_VALEUR x floor(2)
    18          FIN_SINON
    19      FIN_TANT_QUE
    20    AFFICHER s
    21  FIN_ALGORITHME

  6. #6
    Membre confirmé
    Homme Profil pro
    .
    Inscrit en
    Juin 2002
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : .
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2002
    Messages : 239
    Points : 567
    Points
    567
    Par défaut
    Bonjour.

    Avant de donner mon avis sur cet algorithme, j'aimerais que l'on précise un point qui me semble capital :

    Quel compilateur a sorti les messages
    ***L'algorithme contient une erreur : impossible de le lancer***
    ***Vérifiez la syntaxe des affectations et des conditions***
    Personnellement, je ne connais aucun compilateur qui prenne en entrée un algorithme écrit dans le langage courant.
    ( qui plus est en Français ! )

    Winjerome a donné quelques indications intéressantes, mais il fait référence au langage C ( condition d'égalité, balise de commentaire ).
    Mais l'algorithme proposé par nadirmabed n'est visiblement pas écrit en C ...

    Quand on saura à quel compilateur a été soumis cet algorithme, il sera peut-être temps de chercher à comprendre pourquoi il a été refusé.

  7. #7
    Invité
    Invité(e)
    Par défaut
    C'est précisé dans le titre, c'est de l'AlgoBox, mon lien mène vers sa documentation.

    @nadirmabed : Je n'ai parlé que de la ligne SI (x % 2==1) ALORS pour doubler le =, pas de l'autre qui elle reste bien !=.
    Et x floor(2) tel quel n'a pas de sens.

  8. #8
    Membre confirmé
    Homme Profil pro
    .
    Inscrit en
    Juin 2002
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : .
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2002
    Messages : 239
    Points : 567
    Points
    567
    Par défaut
    C'est précisé dans le titre, c'est de l'AlgoBox
    Mea culpa : j'ignorai l'existence de ce logiciel.

    N'ayant pas encore pris connaissance de la syntaxe acceptée par AlgoBox, je ne peux rien dire sur la forme de l'algorithme proposé.

    Sur le fond, il s'agit visiblement d'un algorithme qui donne l'écriture en base 2 d'un nombre.

    Et il y une erreur de conception :
    l'instruction " x PREND_LA_VALEUR x // 2 " doit être placée après FIN_SINON et non avant.

    Il reste à écrire correctement cette instruction " x PREND_LA_VALEUR x // 2 ",
    sachant qu'il faut remplacer x par son quotient dans la division entière par 2.

  9. #9
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Bonjour,

    il ne reste plus qu'à apprendre à lire:
    Les expressions conditionnelles (structures SI ALORS et TANT QUE) :
    Exemples de syntaxe pour la condition :

    Pour vérifier si x est égal à 2, la condition à écrire est : x==2
    Pour vérifier si x est différent de 2, la condition à écrire est : x!=2
    Pour vérifier si x est strictement inférieur à 2, la condition à écrire est : x<2
    Pour vérifier si x est inférieur ou égal à 2, la condition à écrire est : x<=2
    Pour vérifier si x est strictement supérieur à 2, la condition à écrire est : x>2
    Pour vérifier si x est supérieur ou égal à 2, la condition à écrire est : x>=2
    Donc le signe !== est à supprimer.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2014
    Messages : 43
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Bonjour,

    il ne reste plus qu'à apprendre à lire:


    Donc le signe !== est à supprimer.

    la meme chose


    ***L'algorithme contient une erreur : impossible de le lancer***
    ***Vérifiez la syntaxe des affectations et des conditions***

  11. #11
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 420
    Points : 5 819
    Points
    5 819
    Par défaut
    salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    AlgoBox : problem conversion
       VARIABLES
         x EST_DU_TYPE NOMBRE
         s EST_DU_TYPE CHAINE
       DEBUT_ALGORITHME
         AFFICHER "entrez un nombre"
         LIRE x
         s PREND_LA_VALEUR " "
    jusqu'ici tout vas bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       TANT_QUE (x!==0) FAIRE
    ici ça se complique
    tu t'est trompé dans la formule d'affectation
    remplace ton expression par celle ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       TANT_QUE (x!=0) FAIRE
    on reprend la suite
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
          SI (x % 2==1) ALORS
    quand j'ai un doute je n’hésite pas à mettre de parenthèse pour éclaircir ma condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
          SI ((x % 2)==1) ALORS
    voila c'est plus clair tu compare le résultat d'une opération à 1
    on continue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        DEBUT_SI
          s PREND_LA_VALEUR "1"+s
        FIN_SI
           SINON
             DEBUT_SINON
              s PREND_LA_VALEUR "0"+s
    jusqu ici pas de changement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
              x PREND_LA_VALEUR x floor(2)
            FIN_SINON
    2 petit soucis :
    1°) il faut que la modification de x ce fasse a chaque boucle sinon tu te retrouve avec une boucle infini
    2°) la fonction floor ne modifie pas x elle ne prend que la partie entière de ta variable
    on le remplacera donc par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
         x PREND_LA_VALEUR floor(x/2)
         FIN_SINON
    on continue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
          FIN_TANT_QUE
        AFFICHER s
      FIN_ALGORITHME
    voila c'est fini a priori si tu modifie en conséquence cela devrais fonctionner correctement
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  12. #12
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2014
    Messages : 43
    Points : 16
    Points
    16
    Par défaut
    regarde ici
    ça marche

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    AlgoBox : problem conversion
    Code de l'algorithme
    1   VARIABLES
    2     x EST_DU_TYPE NOMBRE
    3     s EST_DU_TYPE CHAINE
    4   DEBUT_ALGORITHME
    5     AFFICHER "entrez un nombre"
    6     LIRE x
    7     s PREND_LA_VALEUR " "
    8     TANT_QUE (x!=0) FAIRE
    9       DEBUT_TANT_QUE
    10      SI ((x % 2)==1) ALORS
    11        DEBUT_SI
    12        s PREND_LA_VALEUR "1"+s
    13        FIN_SI
    14        SINON
    15          DEBUT_SINON
    16          s PREND_LA_VALEUR "0"+s
    17          FIN_SINON
    18      x PREND_LA_VALEUR floor(x/2)
    19      FIN_TANT_QUE
    20    AFFICHER s
    21  FIN_ALGORITHME
     
    Résultats
    ***Algorithme lancé***
    entrez un nombre
    Entrer x : 656549999999999999999999999999999999999999999999999
    1110000010011101011010000001101110101000011101110101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
    ***Algorithme terminé***
     
    Généré par AlgoBox
    resolu tres bien

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/06/2006, 00h22
  2. Erreur de syntaxe dans INSERT INTO VALUES
    Par Mariboo dans le forum Access
    Réponses: 4
    Dernier message: 25/05/2006, 18h57
  3. erreur de syntaxe dans l'instructiuon insert into
    Par greg64 dans le forum Access
    Réponses: 6
    Dernier message: 13/04/2006, 14h07
  4. Erreur de syntaxe dans une requete
    Par linou dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/08/2005, 12h44
  5. [JSP]Erreur de syntaxe dans un tag <option select
    Par logica dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 03/05/2005, 14h33

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