algorithmique
Répondre à la discussion
Affichage des résultats 1 à 13 sur 13

algorithmique



  1. #1
    invite56f88dc9

    algorithmique


    ------

    Bonjour.
    Je voudrais avoir de l'aide pour des algorithmes en pseudo-langage.

    Voici les énoncés :
    Ecrire un programme saisissant trois nombres et testant qi l'un d'entre eux est la somme des deux autres.

    Voici ce que je pense :
    début
    lire a;
    lire b;
    lire c;
    si a+b=c alors écrire ("test positif pour",c)
    sinon écrire 'test négatif pour",c)
    si b+c=a alors écrire ("test positif pour",a)
    sinon écrire 'test négatif pour",c)
    si a+c=b alors écrire ("test positif pour",b)
    sinon écrire 'test négatif pour",c)

    fin

    (corrigez moi si erreur)

    Enoncé 2 :
    On veut simuler par un programme le fonctionnement d'un distributeur automatique de boissons. Le distributeur n'accepte que des pièces de 2, 1 € ou 50,20,10 cents, et l'on admet que le prox des boissons distribuées est exprimé par un nombre entier de dizaine de centimes d'€.
    Le fonctionnement du distributeur peut être résumé ainsi (on ne met qu'une pièce à la fois) :
    tant que la somme versée est inférieure au prix demandé, la machine affiche "il reste encore x,y € à verser (x et y entiers); lorsque la somme est supérieure au prix demandé, la machine affiche le montant à rendre (éventuellement nul)
    avant de servir la boisson et de rendre la monnaie.
    Ecrire l'algortihme en partant de :

    début
    lire p (sous entendu prix correspondant à la boisson choisie)

    Voici ce que je propose :

    début
    lire p
    s:=0;
    tant que s<p faire
    écrire ("il rest encore à verser:", p-s
    si s>p faire
    écrire ("somme à rendre:",s-p)
    fin

    Ce programme me paraît un peu court.
    Veuillez m'aider à le corriger ou à l'agrandir.
    Merci.

    -----

  2. #2
    invite88ef51f0

    Re : algorithmique

    Salut,
    Le premier programme me paraît bien...

    Pour le deuxième programme, il faut pouvoir rajouter des pièces et donner la boisson...

  3. #3
    invite56f88dc9

    Re : algorithmique

    mais il n'y a pas de commandes en pseudo langage pour intervenir sur la machine...(à moins que j'ai raté un truc essentiel...)

  4. #4
    invite88ef51f0

    Re : algorithmique

    Tu inventes une commande "servir"... Mais c'est pas l'essentiel. Pour l'instant, tu es bloqué dans ta boucle car s reste à 0, vu que tu n'as prévu qu'on puisse rajouter des sous...

  5. A voir en vidéo sur Futura
  6. #5
    invite56f88dc9

    Re : algorithmique

    Voici des modif :
    début
    lire p
    s:=0;
    lire x;
    tant que x<p faire
    écrire ("il reste encore à verser:", p-s)
    s:=s+x
    si s>p faire
    écrire ("somme à rendre:",s-p)
    fin

    c'est bon ?

  7. #6
    invite88ef51f0

    Re : algorithmique

    Pas encore tout à fait... Il faut relire x, et il faut faire s=s+x avant d'afficher...

  8. #7
    invite56f88dc9

    Re : algorithmique

    début
    lire p
    s:=0;
    lire x;
    tant que x<p faire
    s:=s+x
    écrire ("il reste encore à verser:", p-s)
    lire x;
    si s>p faire
    écrire ("somme à rendre:",s-p)
    fin


    ?????j'espère que c'est bon

  9. #8
    invite88ef51f0

    Re : algorithmique

    Argh... j'avais pas vu. Y a encore un bug ! Il faut faire la boucle sur s et non x, et du coup faire s=s+x à la fin de la boucle (et aussi juste avant) :

    début
    lire p
    s:=0;
    lire x;
    s:=s+x;
    tant que s<p faire
    écrire ("il reste encore à verser:", p-s)
    lire x;
    s:=s+x
    si s>p faire
    écrire ("somme à rendre:",s-p)
    fin

  10. #9
    invite56f88dc9

    Re : algorithmique

    Merci pour l'aide(je ne savais pas qu'il fallait relire x et s:=s+x.Ton algo me paraît parfaitement cohérent.

  11. #10
    invite88ef51f0

    Re : algorithmique

    Ok. Tu as compris d'où venaient mes changements ?
    Le mieux dans ce genre de cas, c'est de s'imaginer l'exécution, étape par étape.

  12. #11
    invite56f88dc9

    Re : algorithmique

    oui

  13. #12
    danyvio

    Re : algorithmique

    Citation Envoyé par Coincoin Voir le message
    Argh... j'avais pas vu. Y a encore un bug ! Il faut faire la boucle sur s et non x, et du coup faire s=s+x à la fin de la boucle (et aussi juste avant) :

    début
    lire p
    s:=0;
    lire x;
    s:=s+x;
    tant que s<p faire
    écrire ("il reste encore à verser:", p-s)
    lire x;
    s:=s+x
    si s>p faire
    écrire ("somme à rendre:",s-p)
    fin
    Il faut même supprimer le premier "lire x" et le premier s:=s+x, de telle façon que :
    1) Le programme gère les boissons gratuites (p=0) auquel cas on n'a pas à mettre de pièce,
    2) Que (si la boisson n'est pas gratuite), il s'affiche "il reste encore à verser etc.." dès le premier "tour".
    ENfin , j'ajouterais les nstructions fin tant et fin si où il faut

    Ma version :

    début
    lire p
    s:=0;
    tant que s<p faire
    écrire ("il reste encore à verser:", p-s)
    lire x;
    s:=s+x
    FIN TANT
    si s>p faire
    écrire ("somme à rendre:",s-p)
    Fin si
    fin

  14. #13
    invite88ef51f0

    Re : algorithmique

    Effectivement, je n'avais pas pensé à ce que tu dis.
    En plus c'est plus élégant de tout mettre dans la boucle.

Discussions similaires

  1. problème en algorithmique
    Par rasengan dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 28/10/2007, 10h01
  2. complexité algorithmique
    Par invite997f7e79 dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 18/03/2007, 10h31
  3. algorithmique
    Par invite56f88dc9 dans le forum Mathématiques du supérieur
    Réponses: 10
    Dernier message: 05/11/2006, 17h04
  4. l'informatique pas algorithmique
    Par inviteb271042d dans le forum Science ludique : la science en s'amusant
    Réponses: 15
    Dernier message: 25/08/2006, 20h48
  5. Algorithmique
    Par invitecf4fc664 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 30/06/2005, 14h35