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
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
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+
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.
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 :
Enjoy Your Self
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;
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+
Bonjour !
J'ai déjà rencontré à plusieurs reprises des déclarations du genre
Ne serait-ce pas ce que cherche dsr57 ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part Type Tableau = Array [0..0] of Kekchose;
Par contre, j'ignore tout de la gestion de tels types de données.
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
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...Envoyé par Alcatîz
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+
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 !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager