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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 262
    Billets dans le blog
    10
    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 982
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 982
    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 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 262
    Billets dans le blog
    10
    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