Stocker des array dans un array

abidcha Messages postés 8 Date d'inscription jeudi 1 janvier 2004 Statut Membre Dernière intervention 28 janvier 2004 - 2 janv. 2004 à 18:15
abidcha Messages postés 8 Date d'inscription jeudi 1 janvier 2004 Statut Membre Dernière intervention 28 janvier 2004 - 5 janv. 2004 à 15:14
Bonjour,

J"aimerai savoir si on peux stocker des array dans un array en Delphi.
Voici le code que j"ai pense mais ca marche pas:
Var
matMachPer : array[0..5,0..2] of double;
finMachTps : array[0..20] of double;

Begin
matMachPer[1][1] := finMachTps;
end;

Merci
abidcha

7 réponses

yvemoreau Messages postés 308 Date d'inscription mardi 11 juin 2002 Statut Membre Dernière intervention 26 septembre 2008
2 janv. 2004 à 21:09
tant que les types sont identiques pas de problème ,mais attention ,le nombre d'élément ne correspond pas 18 vs 21 ?

matMachPer[0,0] := finMachTps[0];
matMachPer[0,1] := finMachTps[1];
matMachPer[0,2] := finMachTps[2];
...
matMachPer[5,0] := finMachTps[15];
matMachPer[5,1] := finMachTps[16];
matMachPer[5,2] := finMachTps[17];

ou l'inverse

finMachTps[18]:=matMachPer[5,2] ;

j'aimerais comprendre pourquoi utiliser 2 tableaux de dimmensions différentes ? :question)

yve
0
abidcha Messages postés 8 Date d'inscription jeudi 1 janvier 2004 Statut Membre Dernière intervention 28 janvier 2004
2 janv. 2004 à 21:20
Merci Yve de m'avoir repondu.
Cependant je veux stocker dans chaque emplacement de la matrice TOUT le vecteur et pas un seul element a la fois. Mon code va se ressembler a:
Begin
matMachPer[1][1] := finMachTps;
end;
ET PAS:
matMachPer[1][1] := finMachTps[1];

Je doit declarer
matMachPer : array[0..5,0..2] of array;
mais ca ne marche pas.

Merci

abidcha
0
yvemoreau Messages postés 308 Date d'inscription mardi 11 juin 2002 Statut Membre Dernière intervention 26 septembre 2008
3 janv. 2004 à 02:59
quelque chose cloche quelque pars ?
explique ce dont tu as besoin...

sinon il serait possible de faire comme ceci ...

matMachPer : array[0..5,0..2,0..20] of double;
finMachTps : array[0..20] of double;

procedure assignToutVecteur(R,C:Integer);
var
X:Integer;
begin
for x:=0 to 20 do
matMachPer[R,C,x] :=finMachTps[x];
end;

?
yve
0
abidcha Messages postés 8 Date d'inscription jeudi 1 janvier 2004 Statut Membre Dernière intervention 28 janvier 2004
3 janv. 2004 à 17:58
J'ai tester ton code avec R et C comme integer mais ca ne se compile pas. Je ne suis pas sur qu'il fera ce que je veux. J'explique plus mon probeme et je presente le code que je propose:
Je commence a replir un vecteur (finMachTps), puis je le met (en entier) dans un emplacement d'une matrice (matMachPer). Je revient a mon vecteur (finMachTps ) pour le remplir a nouveau avec de nouvelles valeurs, puis je le met (en entier) dans un autre emplacement de ma matrice (matMachPer). Je continue jusuqu'a remplir tous les emplacements de ma matrice (matMachPer ).

Voici un exmple de code qui me renvoi un erreur dans la ligne : matMachPer[ii,j] := finMachTps;

Var
matMachPer : array[0..5,0..2,0..20] of double;
finMachTps : array[0..20] of double;
i,ii,tps,j : integer;

Begin
for tps := 0 to 18 do
begin
for i:=0 to 20 do
begin
finMachTps[i] := i; //dans mon vrais code : i + function(i)
end;//for i:=0 to

for ii:=0 to 5 do
for j:=0 to 2 do
begin
matMachPer[ii,j] := finMachTps;//erreur dans ce ligne
end;//for j:=0
end;//for tps := 0 to

end;//Begin

Merci d'avance
abidcha
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yvemoreau Messages postés 308 Date d'inscription mardi 11 juin 2002 Statut Membre Dernière intervention 26 septembre 2008
3 janv. 2004 à 22:03
Je commence a replir un vecteur (finMachTps), puis je le met (en entier) dans un emplacement d'une matrice (matMachPer). Je revient a mon vecteur (finMachTps ) pour le remplir a nouveau avec de nouvelles valeurs, puis je le met (en entier) dans un autre emplacement de ma matrice (matMachPer). Je continue jusuqu'a remplir tous les emplacements de ma matrice (matMachPer ).

alors si je comprend bien la question ,le deuxième tableau ne sert qu'a convertir les double en Integer ? alors le premier sera toujours en entier ...

si on simplifie ,on souhaite classer 21 items Integer[0..20] (vecteurs) dans un tableau de 6 X 3 ([0..5],[0..2])

unit Unit1;
interface
uses
Classes,Controls,StdCtrls,forms,math;
type TForm1 = class(TForm)end;

procedure attribuer(x,y:Integer);

var
Form1: TForm1;
matMachPer : array[0..5,0..2,0..20] of Integer;
finMachTps : array[0..20] of Double;

implementation
{$R *.dfm}

//pour attribuer une case
//du tableau 6X3

procedure attribuer(x,y:Integer);
var z:Integer;
begin
for z:=0 to 20 do
matMachPer[x,y,z]:=Floor(finMachTps[z]);
end;

end.

//compile très bien chez moi ???
yve
0
abidcha Messages postés 8 Date d'inscription jeudi 1 janvier 2004 Statut Membre Dernière intervention 28 janvier 2004
5 janv. 2004 à 15:13
Le probleme est regle, merci beaucoup pour l'aide.

abidcha
0
abidcha Messages postés 8 Date d'inscription jeudi 1 janvier 2004 Statut Membre Dernière intervention 28 janvier 2004
5 janv. 2004 à 15:14
le probleme est regle, merci beaucoup pour l'aide.
abidcha
0
Rejoignez-nous