[Pascal] Décalaration d'un tableau

Décalaration d'un tableau [Pascal] - Delphi/Pascal - Programmation

Marsh Posté le 19-12-2005 à 11:23:38    

Bonjour,
Je voudrais crée un tableau dont les dimensions sont fixé par l'utilisateur.
Je demande donc a l'utilisateur d'entrer les deux borne du tableau dans les variable i et j.
Mais le probleme c'est que je dois déclarer le tableau au debut du programme en rentrant sa taille.
Comment faire?
 
Merci

Reply

Marsh Posté le 19-12-2005 à 11:23:38   

Reply

Marsh Posté le 19-12-2005 à 11:44:22    

Twister a écrit :

Bonjour,
Je voudrais crée un tableau dont les dimensions sont fixé par l'utilisateur.
Je demande donc a l'utilisateur d'entrer les deux borne du tableau dans les variable i et j.
Mais le probleme c'est que je dois déclarer le tableau au debut du programme en rentrant sa taille.
Comment faire?
 
Merci


 
je me rappelle plus en pascal  
mais c'ets pas un truc du genre
 
array tab[10][10]
 
oublie ce que je viens d'ecrire j'avais aps bien lu ta question
 
mais je pense qu'apres avoir recuperé tes valeurs i et j rentré par l'utilisateur tu declare ton tableau avec ces valeurs :
 
ByteArray = array[0..i][0...j] of Byte;
 
Je crois avoir vu un truc comme ca sur le net  
mais j'y connais rien en pascal


Message édité par saxgard le 19-12-2005 à 11:48:16
Reply

Marsh Posté le 19-12-2005 à 11:47:00    

Pascal etant capable de gerer la memoire dynamiquement, ou est le probleme?
Il te faut utiliser les pointeurs.


---------------
The Million Dollar Screenshot  (seo v7ndotcom elursrebmem paesys wifi)
Reply

Marsh Posté le 19-12-2005 à 12:23:54    

En "vrai" pascal, il ne me semble pas que ce soit possible.
En delphi, et je croi dans les version "recente" du turbo pascal, tu fait comme suis:
 
type  
  MonTableau = array of TypeQuelconque
...
 
procedure MaProcedure (taille:integer);
begin
  SetLength(MonTableau,taille);
end;

Reply

Marsh Posté le 19-12-2005 à 15:16:10    

Merci pour vos reponse.
Je ne vois pas comment les pointeurs peuvent m'aider, pourais tu m'expliquer?

Reply

Marsh Posté le 19-12-2005 à 23:10:55    

Ca depend ce que tu veut faire. Les plus simple sont la liste chainé(pour un accées séquentiel) ou du tableau de pointeur(pour enregistrement de plusieur Ko)...
 
Y'a bien une centaine de structure plus ou moins compliquée... Faut voir ce que tu met dans ton tableau et ce que tu veut en faire (acces sequentiel/aléatoire, remplissage en une fois/au fur et a mesure, ect....).  
Rien que ce sujet peut prendre un an à la fac :D

Reply

Marsh Posté le 21-12-2005 à 18:34:45    

Bonsoir, j'ai également une question a propos des tableaux a deux dimmension:
 
ex : Tab = array of array of ...;
 
Je ne comprend pas comment les utiliser !!  
déclarer la longueur ? setlength(  :??: )  
connaitre la longueur : length(  :??: )
écrire, lire dedans , ect ...

Reply

Marsh Posté le 21-12-2005 à 21:48:07    

De mémoire tu as 2 possibilités :
 
Par exemple pour un tableau 2d "rectangulaire" :
 
var
  Tab: array of array of Integer;
 
...
 
SetLength(Tab, 10, 20);
 
On accède aux elément avec  
Tab[0, 0] ... Tab[9, 19] ou bien Tab[0][0] ... Tab[9][19]
 
Tab.Length renvoie 10
Tab[0].Length renvoie 20  
 
On peut aussi faire des tableaux non rectangulaire par exemple :
 
SetLength(Tab, 10);
 
for I := 0 to Tab.Length - 1 do
  SetLength(Tab[I], I + 1);
 
Crééra un tableau :
Tab[0, 0]
Tab[1, 0] Tab[1, 1]
...
Tab[9, 0] ... Tab[9, 9]
 

Reply

Marsh Posté le 23-12-2005 à 00:44:44    

Merci, j'ai encore besoin d'une petite précision :
est-ce qu'il existe un moyen de d'enregistrer un tableau dynamique dans un fichier d'enregistrement ?
ex :
 
Type
  TElement = record
                  NomElt : ShortString;
                  Param   : Array of Double;
  end;
 
TFileElt = File of TElement;
 
à la compilation j'ai l'erreur suivante :
"le type bidule necessite une finalisation : non autorisé dans type fichier"
est-ce qu'il ya une astuce pour contourner ce probleme, sans devoir utiliser un tableau non dynamique ?          
 

Reply

Marsh Posté le 23-12-2005 à 08:47:00    

Un record a une taille fixe. Donc, si tu reusissais a enregister tes records(sans une procedure spécifique), tout ce que tu enregistrerais, ce serait les pointeur de tableaux.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed