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

Langage Pascal Discussion :

[Débutant] Soustraction à l'aide d'une boucle while .. do


Sujet :

Langage Pascal

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 30
    Points : 10
    Points
    10
    Par défaut [Débutant] Soustraction à l'aide d'une boucle while .. do
    Bonjour,
    J'ai un petit problème avec une soustraction, je dois utiliser une boucle "while...do". Merci de me dire ce qui ne va pas :
    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
    Program soustraction;
    Var a,b: real;
    Begin
     WriteLn ('Entrez un nombre');
     ReadLn (a);
     b:=0;
     While (a<>0) do
      Begin
       b:=a-b;
       WriteLn ('Entrez un nombre');
       ReadLn (a);
      End;
      WriteLn ('la reponse est ',b:2:2);
    ReadLn
    End.

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Xoe,

    Exécute ton programme à la main, en notant les valeurs des variables, etc., et tu verras ce qui ne va pas.

    En fait, il te suffit de le relire soigneusement, en vérifiant ce qu'il fait effectivement, et pas ce que tu penses qu'il fait.

    Accessoirement, on est dans un cas où une boucle repeat...until est préférable.
    Si les cons volaient, il ferait nuit à midi.

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 32

    Informations forums :
    Inscription : Novembre 2008
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Ici il faut connaître qu'elle boucle à utiliser

    Tant que utilisé quand il s'agit de répéter un traitement avec un nombre inconnu et que le traitement itératif peux n'exécuter au départ (0 fois)
    ex:on se propose d'écrire un programme qui permet de saisir une suite d'entier qui se termine par (-1) puis calculer et afficher la somme de ces valeurs sauf le dernier.

    Explication :
    ici tu peux donner (-1) au départ alors il ne fait aucune instruction (car la valeur -1 n'entre pas dans la somme).

    Solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    x:donné
    s<-- 0
    tant que x <> -1 faire
    s<-- s+x
    x:donné
    fin tant que
    Si tu fais l'exécution manuelle de cette algorithme tu auras la base de tant que

    Merci pour vous M.Tarek

  4. #4
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    mf.chedly parait tres content aujourd'hui!

    Avant de se demander ce qui ne va pas, je crois qu' il sera preferable de lui demander d' abord ce qu'il veut que le programme fasse. Pour moi, ce programme ne fait rien de bon bien que ça se compile sans erreur.

  5. #5
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 117
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par darrylsite Voir le message
    il sera preferable de lui demander d' abord ce qu'il veut que le programme fasse.
    ça me fait penser à la division euclidienne de 2 entiers

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 30
    Points : 10
    Points
    10
    Par défaut
    je veux que le programme fasse une soustraction. D'autant de nombre que l'utilisateur veut, le programme donnera la réponse une fois le nombre 0 entrer. Je dois utilisé While...do comme boucle et pas une autre.
    Merci beaucoup pour vos réponses mais je ne sais toujours pas comment corriger cela.
    merci encore

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 30
    Points : 10
    Points
    10
    Par défaut
    j'ai également un problème avec la division, je veux faire exactement la même chose qu'avec la soustraction mais avec la division. J'y arrive pour l'addition et la multiplication. SVP aidez moi
    mon code de la division:
    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
     
      Program division;
      Var ad1, ad2: real; ad3: integer;
      Begin
       WriteLn ('Entrez 1 pour obtenir le resultat');
       WriteLn;
       ad3:=1;
       Write ('Entrez le ',ad3,'er nombre: ');  
       ReadLn (ad1);
       ad2:=1;  
       While (ad1<>1) do
        Begin
         ad2:=ad1/ad2;
         ad3:=ad3+1;
         Write ('Entrez le ',ad3,'eme nombre: ');
         ReadLn (ad1);
        End;
       WriteLn;
       WriteLn ('La reponse est ',ad2:2:2);	
      End.

  8. #8
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Voe,

    Persiste et signe : exécute ton programme à la main, et constate ce qui se passe.

    Si tu as une version qui marche pour les autres opérations, il n'est quand même pas difficile de l'adapter (il suffit de contrôler qu'on ne va pas diviser par 0).
    Si les cons volaient, il ferait nuit à midi.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 30
    Points : 10
    Points
    10
    Par défaut
    justement je n'arrive pas à l'adapter, comment ferais-tu toi pour faire une soustraction et une division avec une boucle while...do? parce que je m'en sors vraiment pas.

  10. #10
    Expert confirmé
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Points : 4 015
    Points
    4 015
    Par défaut
    Bonjour
    ALors montres nous comment tu le ferais une soustraction à la main
    Pour faire cette soustraction dans ton premier post tu vois bien que tu ne fais pas la soustraction de deux nombres puisque tu mets un à 0
    Et vu que tu tiens à utiliser une boucle while il faudra d'abord lire tes deux données avant d'entrer dans la boucle et dans la boucle tu ne liras qu'une donnée( si tu comprends bien ce que je veux dire !)

    Cordialement
    Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

    Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells

  11. #11
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    Citation Envoyé par krachik Voir le message
    Bonjour
    ALors montres nous comment tu le ferais une soustraction à la main
    Pour faire cette soustraction dans ton premier post tu vois bien que tu ne fais pas la soustraction de deux nombres puisque tu mets un à 0
    Et vu que tu tiens à utiliser une boucle while il faudra d'abord lire tes deux données avant d'entrer dans la boucle et dans la boucle tu ne liras qu'une donnée( si tu comprends bien ce que je veux dire !)

    Cordialement
    Je crois que tu n' as pas encore compris ce qu'il veut faire. C'est pas une seule soustraction qu'il veut faire mais plutot une serie de soustraction du genre :
    resultat= a10-a9-a8-a7-a6-a5-a4-a3-a2-a1-a0
    enfin je crois.
    Mais ce que son programme fait c'est:
    resultat=a3-(a2-(a1-a0))

  12. #12
    Expert confirmé
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Points : 4 015
    Points
    4 015
    Par défaut
    Citation Envoyé par darrylsite Voir le message
    Je crois que tu n' as pas encore compris ce qu'il veut faire. C'est pas une seule soustraction qu'il veut faire mais plutot une serie de soustraction du genre :
    resultat= a10-a9-a8-a7-a6-a5-a4-a3-a2-a1-a0
    enfin je crois.
    Mais ce que son programme fait c'est:
    resultat=a3-(a2-(a1-a0))
    Je ne crois pas avoir parlé d'un seule soustraction dans mon post
    Citation Envoyé par krachik
    Et vu que tu tiens à utiliser une boucle while il faudra d'abord lire tes deux données avant d'entrer dans la boucle et dans la boucle tu ne liras qu'une donnée( si tu comprends bien ce que je veux dire !)
    SI tu comprend bien ce que j'ai écris tu le traduirais de la sorte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      Lire(a);
      Lire(b);
      Tant que b<>0 Faire
         a=a-b;
         Lire (b);
      Fin Tant que;
    Les deux données dont je parlais sont a et b avant la boucle et b dans la boucle (Pour ne pas lui donnée directement la réponse c'est une autre façon de dire ce qu'il veut. SOn code le présente d'une autre façon

    Cordialement
    Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

    Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells

  13. #13
    Membre confirmé
    Avatar de diden138
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    714
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 714
    Points : 589
    Points
    589
    Par défaut re
    bonjour,
    commence par nous dire ce qui marche pas dans ton programme?
    Je crois que tu n' as pas encore compris ce qu'il veut faire. C'est pas une seule soustraction qu'il veut faire mais plutot une serie de soustraction du genre :
    resultat= a10-a9-a8-a7-a6-a5-a4-a3-a2-a1-a0
    enfin je crois.
    Mais ce que son programme fait c'est:
    resultat=a3-(a2-(a1-a0))
    tout à fait d'acord c'est exactement ce que fais ton programme si c'est le cas je ne vois pas du tout ou est le probléme
    et comme on te la dit déjà et on le dira jamais assez commence par prendre un crayon et une feuille et fais la trace de programme y a pas mieux , tu comprendera tout seul ce qui cloche.
    Cordialement,
    et vint le 20siècle et l'homme se mit à réflechir comme la machine auteur: diden138
    Langage: Pascal,OCaml,Delphi,c/c++.
    Langages web:Xhtml,Css,Php/Mysql,Javascript,Actionscript 2.0
    Plate forme:Windows XP Pro SP2./Red Hat 9.0/SUSE 10.2
    Config :Intel P4 3.2GHZ,2MO cach,512 RAM.
    Outils:Tp7,objective caml,Delphi 6 perso, C++builder 6,Visual C++ Express edition sous win,code-block sous linux(Ubuntu) .

Discussions similaires

  1. [Débutant] Quitter une boucle "while" à l'aide d'une touche
    Par Tibtib dans le forum MATLAB
    Réponses: 2
    Dernier message: 04/04/2011, 16h40
  2. Réponses: 4
    Dernier message: 20/04/2010, 11h24
  3. [Débutant]Arreter une boucle while.
    Par kobalt02 dans le forum LabVIEW
    Réponses: 7
    Dernier message: 03/07/2009, 10h25
  4. Réponses: 3
    Dernier message: 12/03/2009, 18h08
  5. [MFC] Dialog dans une boucle while
    Par oxor3 dans le forum MFC
    Réponses: 5
    Dernier message: 23/04/2004, 22h51

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