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] Fonction pour compter le nombre d'entrées dans un tableau


Sujet :

Langage Pascal

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 14
    Points : 18
    Points
    18
    Par défaut [Débutant] Fonction pour compter le nombre d'entrées dans un tableau
    Bonjour,

    Je débute en Pascal et j'aimerais savoir s'il existe une fonction qui compte le nombre d'entrées dans un tableau (count). Si elle n'existe pas, pouvez-vous m'expliquer comment la créer ?

    Merci d'avance .

  2. #2
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Quand tu manipules un tableau, il te faut toujours avoir une variable qui contient le nombre d'éléments dans le tableau. Cette variable doit être mise à jour à chaque insertion et suppression d'un ou plusieurs éléments dans le tableau.
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 14
    Points : 18
    Points
    18
    Par défaut
    Ok, et merci pour ton aide express.

  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
    Citation Envoyé par Toshy62 Voir le message
    Bonjour,
    Je debute en pascal et j'aimerai savoir si il existe une fonction qui compte le nombre d'entrer dans un tableau( count ). Si elle n'existe pas pouvais vous m'expliquez comment la créer.

    Merci d'avance .
    Salut,
    Je n'arrive pas a bien comprende ton post.

    As tu un tableau de taille fixe disons TailleMax, et que tu veux utiliser comme tableau dynamique? si c'est le cas, la reponse wormful_sickfoot repond bien a ton inquietude. Et pour avoir un code propre, tu pourras ecrire les fonction ajouterElement(), supprimerElement(), et obtenirTaille() pour te faciliter la tache.

    Mais si l'idee de ton post n'est pas de faire un tableau dynamique, il faudra donner plus details.

  5. #5
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    generalement pour:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    type
      D = array of [type];
      T = array[0..15] of [type];
    on utilise la fonction Length() (TP/FP/Delphi) pour connaitre la "profondeur" du tableau.
    Length() ne renvois donc pas le nombre d'element "entrés" dans le tableau.
    par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    type
      T = array[0..15] of integer;
     
    var
      vT : T;
    begin
      vT[0] := 1;
      vT[1] := 2;
      vT[2] := 3;
     
      write(Length(vT)); // affiche 16
    end;
    si l'on veut connaitre le nombre d'elements entrés dans le tableau, il faut initialiser le tableau avec une valeur non-usitée -1 par exemple.
    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
     
    function CountNot(const aT : T; const iV: integer = -1): integer;
    var N : integer;
    begin
      CountNot := 0;
      for N := low(aT) to high(aT) do
        if aT[N] = iV then
          inc(CountNot);
    end;
     
    var
      vT : T;
    begin
      FillChar(vT, -1, Length(vT));
     
      vT[0] := 1;
      vT[1] := 2;
      vT[2] := 3;
     
      write(CountNot(vT),' éléments entrés sur ', Length(vT));
      // affiche : 3 éléments entrés sur 16
    end;
    pour

    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
     
    type
      pMT = ^MT;
      MT = array[0..0] of [type];
     
    const
      MaxMemory = (32 shl 20); // 32Mo
      MaxLength  = MaxMemory div SizeOf([type dans MT]);
     
    var
      ptr : pMT;
    begin
      ptr := AllocMem(MaxMemory); 
     
      write('nombre d''elements : ', MaxLength); 
      // affiche : nombre d'elements : 8470528 (pour type = integer par exemple)
     
      FreeMem(ptr, MaxMemory);
    end;
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

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

    Ce n'est pas la meilleure solution, ne serait-ce que par sa consommation de calcul pour trouver la valeur, et aussi et surtout parce qu'elle implique qu'on réserve une valeur, qui est donc interdite pour l'utilisation.

    La bonne solution est de conserver une variable qui tient à jour le nombre d'éléments ajoutés dans le tableau, ce qui implique d'écrire les fonctions/procédures gérant ça, et, pour simplifier les paramètres à passer, fait partie du type.

    À ceci, 2 principales solutions :

    N étant le nombre maximum d'éléments prévus ==>

    - Faire un tableau d'indices 0 à N, et utiliser la case d'indice 0 pour stocker le nombre d'éléments effectivement présents, qui disposeront des indices 1 à N

    - Définir un nouveau type avec 2 champs
    . Le compteur
    . Le tableau, avec des indices de 1 à N.

    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
    Aussi, il est à noté que l'auteur du post à préciser qu'il debute en pascal. Lui proposer une solution contenant des pointeurs, des operation de rotation de bit conduira sans doute à l'ennuyer

  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
    Bei,
    Citation Envoyé par darrylsite Voir le message
    Aussi, il est à noté que l'auteur du post à préciser qu'il debute en pascal. Lui proposer une solution contenant des pointeurs, des operation de rotation de bit conduira sans doute à l'ennuyer
    +1, d'autant plus que ça n'ajoute absolument rien au propos.
    Si les cons volaient, il ferait nuit à midi.

Discussions similaires

  1. fonction pour compter le nombre de personne dans une tranche d'age
    Par djo007 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 07/02/2012, 00h03
  2. Réponses: 2
    Dernier message: 15/06/2009, 18h41
  3. Compter le nombre d'entrées dans une BDD avec condition
    Par iFlo1 dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 29/03/2009, 21h33
  4. Réponses: 10
    Dernier message: 07/01/2009, 10h20
  5. fonction pour compter le nombre de checkbox coché ?
    Par Death83 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 15/09/2005, 11h28

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