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

Pascal Discussion :

Remplir un tableau élément par élément


Sujet :

Pascal

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 5
    Par défaut Remplir un tableau élément par élément
    Bonjour,
    Je rencontre un petit problème pour remplir un tableau en mettant tous les éléments à la ligne, sans appuyer sur Entrer après chaque saisie.
    Je m'explique:

    j'ai un code tout simple,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var 
      tab: array[1..N] of integer;
      i: integer;
    begin
      for i := 1 to N do
          begin
              read(tab[i]);
          end;
     
    end.
    Voilà, là quand on fait ça, on rentre les valeurs en appuyant sur entrer. Et comment on pourrait faire pour rentrer les valeurs simplement en appuyant sur la touche espace?

    Cordialement

  2. #2
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 130
    Billets dans le blog
    9
    Par défaut
    Bonjour !

    Je ne suis pas sûr que ce que vous voulez faire soit possible.

    Pour entrer plusieurs valeurs sur une seule ligne, on peut faire comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var
      a, b, c: integer;
     
    begin
      ReadLn(a, b, c);
      WriteLn(a, ' ', b, ' ', c);
      ReadLn;
    end.
    Maintenant, s'il s'agit d'un tableau, je crains que le seul moyen ne soit de faire la même chose, c'est-à-dire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      ReadLn(tab[1], tab[2], tab[3] ...
    P.-S. Pourriez-vous préciser quel compilateur vous utilisez ?

  3. #3
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 964
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 964
    Par défaut
    Mai,

    On peut se débrouiller avec ReadKey.

  4. #4
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 130
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par droggo Voir le message
    On peut se débrouiller avec ReadKey.
    Effectivement. Quand j'ai dit que ce n'était pas possible, je me suis mal exprimé : je voulais dire que ce n'était pas possible avec ReadLn.

    Voici une proposition, qui consiste à lire la ligne saisie dans une chaîne et à extraire les valeurs numériques contenues dans la chaîne. Par facilité j'ai utilisé une liste. Compilation Free Pascal.

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    (* Free Pascal 2.6 *)
     
    program FonctionIntegerArrayReadLn;
    {$MODE DELPHI}
     
    uses
      Classes; (* TStringList *)
     
    function IntegerArrayReadLn(var a: array of integer): boolean;
    var
      s: string;
      l: TStringList;
      i: integer;
      e: word;
    begin
      (* On lit dans une seule variable de type chaîne tout ce que l'utilisateur
         saisit. *)
      ReadLn(s);
     
      (* On convertit cette chaîne en liste. *)
      l := TStringList.Create;
      l.DelimitedText := s; (* Par défaut, le délimitateur est le caractère espace,
        ce qui tombe bien en l'occurrence. *)
      result := (l.Count = Length(a)); (* On vérifie que la longueur de la liste
        obtenue est égale à la longueur du tableau. *)
     
      if result then
        (* On parcourt la liste, on convertit les chaînes en nombres entiers et on
          remplit le tableau. *)
        for i := 0 to l.Count - 1 do
        begin
          Val(l[i], a[i], e);
          if e <> 0 then (* Si la conversion échoue... *)
          begin
            result := false;
            break;
          end;
        end;
     
      l.Free;
    end;
     
    const
      N = 4;
     
    var
      a: array[1..N] of integer;
      i: integer;
     
    begin
      if IntegerArrayReadLn(a) then
        for i := 1 to N do
          WriteLn(a[i]);
      ReadLn;
    end.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 5
    Par défaut
    Super, merci

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

Discussions similaires

  1. [CR 8] Split d'un champ élément par élément
    Par mscpleaz dans le forum Formules
    Réponses: 2
    Dernier message: 19/06/2015, 10h19
  2. Remplir un tableau Chiffre par Chiffre
    Par Supay2905 dans le forum Débuter
    Réponses: 5
    Dernier message: 30/11/2013, 17h18
  3. Faire des opérations élément par élément
    Par fahimonasri dans le forum MATLAB
    Réponses: 2
    Dernier message: 25/11/2013, 15h06
  4. [CSV] Parcourir un CSV élément par élément
    Par malvax dans le forum Langage
    Réponses: 2
    Dernier message: 15/03/2009, 23h44
  5. [Dates] pb pour afficher éléments par éléments
    Par linouline dans le forum Langage
    Réponses: 9
    Dernier message: 04/06/2006, 14h55

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