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 :

Non prise en compte d'une instruction dans une boucle [Turbo Pascal]


Sujet :

Turbo Pascal

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

    Informations forums :
    Inscription : Octobre 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Non prise en compte d'une instruction dans une boucle
    Je rencontre un problème que je ne comprends pas:

    je fais une boucle while toute simple (enfin je pensais) pour remplir un tableau contenant des noms et à terme d'autres informations.

    voici:
    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
    33
    program test;
    uses wincrt;
     
    type
     
    personne=record
    nom:string;
    prenom:integer;
    end;
     
    tabEtudiant= array[1..100] of personne;
     
    var i,n:integer;
        t:tabEtudiant;
     
    procedure saisiePersonne(var n:integer; var t:tabEtudiant);
    var i,encore:integer;
    begin
         encore:=1;
         n:=0;
         while encore=1
         do begin
            n:=n+1;
            writeln('Entrez le nom numero ',n,' : ');
            readln(t[n].nom);
            writeln('voulez vous continuer? oui (1) non (0)');
            read(encore);
            end;
    end;
     
    begin
       saisiePersonne(n,t);
    end.
    Le problème est que lors du deuxième passage dans la boucle while l'instruction "readln(t[n].nom);" n'est pas prise en compte, je n'arrive pas à entrer un autre nom. Je ne comprends pas??

    Si vous avez une idée merci.

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 235
    Points : 506
    Points
    506
    Par défaut
    Sans avoir testé, j'ai dans l'idée qu'au 2eme tour de boucle et à tous les suivants tu récupère une chaîne vide pour le nom. Cette chaîne vide c'est le "end of line" de ta lecture de encore. Remplace le read(encore) par readln(encore) et ça devrait aller mieux.

  3. #3
    Membre habitué Avatar de Modulpro
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2010
    Messages : 76
    Points : 175
    Points
    175
    Par défaut
    Bonjour,

    Lorsque vous dites "l'instuction n'est pas prise en compte", le programe affiche t-il la ligne suivante, ou sort-il de la boucle ?
    Vous pouvez essayer, au lieu de faire une boucle "while" qui oblige l'initialisation de encore, de faire une boucle "repeat" de ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    repeat
    //instructions de la boucle
    until encore = 0;
    Attention de plus à la déclaration de la variable locale i dans la procédure, qui masque la variable globale du même nom (possibilité de confusion)

    Cordialement

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 950
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 950
    Points : 5 667
    Points
    5 667
    Par défaut
    Hia,

    Une fois de plus, le problème est sans doute dû à

    Read ne lit pas le retour chariot, qui reste donc dans le buffer d'entrée ...

    ... et au prochain ReadLn, paf !!!

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

    Informations forums :
    Inscription : Octobre 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci batyann811 t'as mis dans le mille. T'avais raison droggo.

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

Discussions similaires

  1. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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