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 :

[LG]tableau infini et fonction longueur


Sujet :

Langage Pascal

  1. #1
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut [LG]tableau infini et fonction longueur
    salut tout le monde !

    existe t il une possibilité de creer un tableau sans définir une longueur ?
    Et existe il une fonction qui permette de connaitre la longueur du tableau. exxemple la fonction lenght en c java

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 465
    Points : 4 312
    Points
    4 312
    Par défaut
    Par définition, un tableau a une longueur finie ! Même si java permet d'utiliser des tableaux "infinis", sans en préciser la taille... (ça irait bien pour Charly ça...). Quoiqu'il en soit, un tableau doit donc être déclarer avec sa longueur, et aucune case ne pourra être rajoutée à l'exécution.
    Pour connaître la longueur du tableau, il n'existe aucune fonction prédéfinie avec Turbo Pascal... Donc il faudra sûrement utiliser une variable indiquant le nombre d'éléments dans le tableau !
    Sinon, une alternative au tableau "infini" serait la liste chaînée ! Renseigne-toi à ce sujet, c'est très pratique !

    a+

  3. #3
    HRS
    HRS est déconnecté
    Membre confirmé
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    678
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 678
    Points : 638
    Points
    638
    Par défaut
    la version 1.90 de FreePascal permet les tableaux dynamiques

    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
     
    program tabdyn;
    var montabint : array of integer;
    procedure raztabint (var tb : array of integer);
    var i : integer;
    begin
       writeln (length (tb));
       for i:= low (tb) to high (tb) do
           tb [i] := 0;
    end;
    begin
       setlength (montabint,30);
       raztabint (montabint);
       readln;
    end.

  4. #4
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 37
    Points : 41
    Points
    41
    Par défaut
    Hi Folks
    Pour Definir La Taille d'un tableau apres declaration je te conseille de passer via les pointeurs (les Fonctions Getmem & Freemem sont essentielles)

    Ex :

    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
     
    Const
       Max = 6540;
    Type
       TabType = Array[1..Max] of Byte;
    Var 
       Ptr         : ^Byte;
       MaxSize : Longint;
    Begin
       MaxSize := MemAvail;
       If MaxSize > Max Then
          MaxSize = Max
        Else
           Writeln('Not enough Memory');
        GetMem(Ptr,MaxSize);
     
          {Your program Here}
     
        Freemem(Ptr,MaxSize);
        MaxSize := Nil;
    End;
    Enjoy Your Self

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 465
    Points : 4 312
    Points
    4 312
    Par défaut
    Euh oui, mais je vois pas trop l'interêt de ton code, Macluvitch ( désolé, ne m'en veut pas ). Sauf qu'il économise l'espace mémoire, car on alloue de la mémoire seulement pour ce qu'on a à stocker...
    Autant utiliser une liste chaînée (si si je vous assure, c'est bien les listes !!)
    a+

  6. #6
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 967
    Points : 59 730
    Points
    59 730
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    J'ai déjà rencontré à plusieurs reprises des déclarations du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Type Tableau = Array [0..0] of Kekchose;
    Ne serait-ce pas ce que cherche dsr57 ?

    Par contre, j'ignore tout de la gestion de tels types de données.

  7. #7
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 37
    Points : 41
    Points
    41
    Par défaut
    Bon La question c'etait de creer un tableau sans definir une longueur.
    Si je comprend bien peut etre il a un prob de memoire il ne sait pas cmbien allouer.
    Passer par les listes chaines ou les arbres binaires ca reste toujours la meilleurs solution mais comme vou le dites c'est qqch de tabou pour un debutant

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 465
    Points : 4 312
    Points
    4 312
    Par défaut
    Citation Envoyé par Alcatîz
    Code:
    Type Tableau = Array [0..0] of Kekchose;

    Ne serait-ce pas ce que cherche dsr57 ?

    Par contre, j'ignore tout de la gestion de tels types de données.
    En général, on fait un type PTableau=^Tableau, ce qui permet de faire pointer vers un tableau dont on connait pas la longueur...
    Par exemple, pour les modes VESA, l'interruption nous fournit la liste des modes graphiques disponibles dans un tableau et nous retourne seulement un pointer sur ce tableau... Avec ce genre d'artifices, on peut sans problème récupérer les modes disponibles !

    a+

  9. #9
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 967
    Points : 59 730
    Points
    59 730
    Billets dans le blog
    2
    Par défaut
    Ah oui, c'est vrai qu'il y a toujours un pointeur associé à ce type de variable, dans les exemples que j'ai. C'aurait dû me faire tilt plus tôt.
    Merci pour la précision !

Discussions similaires

  1. Return d'un tableau par une fonction
    Par MegaNono dans le forum C
    Réponses: 4
    Dernier message: 30/04/2006, 18h26
  2. Réponses: 8
    Dernier message: 14/11/2005, 11h27
  3. Passer le résultat (tableau) d'une fonction
    Par coyote90 dans le forum Access
    Réponses: 3
    Dernier message: 10/11/2005, 19h56
  4. Retourner un tableau depuis une fonction
    Par obalais dans le forum C++
    Réponses: 2
    Dernier message: 20/10/2005, 16h49
  5. xsl-fo : ligne de tableau specifique en fonction d'un test
    Par de LANFRANCHI dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 12/05/2005, 08h24

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