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

Turbo Pascal Discussion :

Exercice/programme sur les boucles et booléens


Sujet :

Turbo Pascal

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Exercice/programme sur les boucles et booléens
    Bonjour,
    j'ai un programme T.P. auquel je ne comprend strictement rien.
    Doux seigneurs, et gentes dames, au secours!
    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
     
    Program;
    var T: array[1..20001] of integer; 
         U,S,i,n: Integer; 
         coincide: boolean;
    begin
    randomize;
    for i:=1 to 20001 do T[i]:=1+random(2000);
    end;
    i:=1; coincide:=False;
    Repeat
    i:=i+1.
    S:=0;
    While (S<i-1) and NOT coincide DO
    begin
    S:=S+1;
    If T[S]=[i] then coincide:= true;
    end;
    until coincide:=true;
    U:=i;
    for n:=1 to i do writeln(T[n],',');
    writeln('U=',U); writeln('S=',S);
    end.
    Les questions demandées sont:
    1- Que fait la première boucle fort?
    2-Que sont U et S à la fin du programme?
    3-Pourquoi est-il certain que le nombre de passage dans la boucle repeat...until est fini?

  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
    Lao,

    Et toi, quelles sont tes réponses ?

    Car personne n'est ici pour faire ton travail à ta place.
    Si les cons volaient, il ferait nuit à midi.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour tes indications,


    1 ça compte le nombre de fois où un réel i pris au hasard entre 1 et 2001 vaut 1 et ça met alors 'FALSE'

    2 mais c'est surtout la fin du programme que je n'arrive pas à comprendre.
    On est effectue l'expérience successives et si i prend la valeur 1 >> FALSE
    Sinon on attend que T[s]=T[i] et >> TRUE

    Ainsi U doit être en rapport avec le numéro pris par i lors du cas gagnant
    Et S doit être en rapport avec le nombre de fois où le i a pris une valeur par la boucle for pour arriver au cas gagnant????

    merci d'avance!

  4. #4
    Membre éclairé
    Avatar de richard
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2002
    Messages : 474
    Points : 772
    Points
    772
    Par défaut
    Cela n'est pourtant pas compliqué : il suffit de prendre un bon crayon de papier, une gomme et du brouillon. Puis refaire pas à pas ce que fait l'ordinateur en modifiant les données à chaque fois comme il le fait.
    "Software is getting slower more rapidly than hardware becomes faster." Niklaus Wirth
    https://pharo.org/web
    https://faust.grame.fr/

  5. #5
    Membre éprouvé
    Avatar de EpiTouille
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 372
    Points : 917
    Points
    917
    Par défaut
    si tu travaille sous tp7, il y a une fonction tres pratique c'est les "watch" sous l'onglet debug. ça permet d'afficher, en mode pas à pas , les valeurs actuelles des variables...

  6. #6
    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
    Qua,
    Citation Envoyé par titeeee Voir le message
    si tu travaille sous tp7, il y a une fonction tres pratique c'est les "watch" sous l'onglet debug. ça permet d'afficher, en mode pas à pas , les valeurs actuelles des variables...
    Oui, mais pour un débutant, rien ne vaut le papier/crayon, ça permet de mieux suivre les opérations.
    Si les cons volaient, il ferait nuit à midi.

  7. #7
    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
    Pour que le code puisse compiler,
    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
     
    Program modified_by_nabster;
       var 
            T : array[1..20001] of integer; 
            U, S, i, n : Integer; 
            coincide : boolean;
    begin
      randomize;
     
      for i:=1 to 20001 do 
        T[i] := 1+random(2000);
     
      i := 1;
      coincide := False;
      Repeat
        i:=i+1.
        S:=0;
        While (S<(i-1)) and (NOT coincide) DO
        begin
          S:=S+1;
          If (T[S] = T[i]) then 
           coincide := true;
        end;
      until (coincide=true);
     
      U:=i;
      for n:=1 to i do
       writeln(T[n], ',');
      writeln('U=', U);
      writeln('S=', S);
     
    end.
    le test d'égalité se fait avec l'opérateur = et non :=. le mot clé program doit etre suivi du nom qu'on donne au programme. Les pairs begin-end doivent etre équilibrer.

Discussions similaires

  1. aide pour exercice sur Les boucles
    Par hotdogFRANCE dans le forum C#
    Réponses: 3
    Dernier message: 13/03/2009, 08h43
  2. [MySQL] Juste pour une information sur les boucle ?
    Par miccheld dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 27/10/2007, 14h32
  3. Réponses: 9
    Dernier message: 15/10/2006, 20h37
  4. [VBS]Bug sur les boucles for.
    Par méphistopheles dans le forum VBScript
    Réponses: 7
    Dernier message: 24/03/2006, 22h17
  5. Réponses: 2
    Dernier message: 29/07/2005, 10h14

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