Remplir une matrice

Résolu
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 - 13 mai 2006 à 15:11
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 - 14 mai 2006 à 07:10
Violent Ken
Salut à tous !
J'aurais une question : comment remplir une matrice de valeurs particulières ?
En fait, j'aimerais pourvoir éviter d'utiliser des boucles For imbriquées pour remplir case après case, amis tout remplir d'un coup dans l'affectation de la valeur.

Exemple ; voilà ce que j'aimerais :

Type Game_Matrix = Array[1..3,1..3] Of Integer;
Var iP : Game_Matrix;
iP:=[[1,0,1][0,0,1][2,1,4]];

Bien sur, la syntaxe de la troisième ligne est fausse, et c'est elle que j'aimerais modifier.
Auriez vous une idée de la structure à utiliser ?
Merci.
A voir également:

9 réponses

Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
13 mai 2006 à 15:52
"J'ai supposé que la syntaxe était identique à celle du Delphi"
Ben je crois que non

Dans ce cas il ne te reste plus qu'a faire une boucle

Procedure My_Procedure;
Var I : Integer;
Begin
For I := 1 to 3 do
Case I of
1: Begin
IP[I,1] : = 1;
IP[I,2] := 0;
IP[I,3] := 1;
End ;
2:Begin
IP[I,1] : = 0;
IP[I,2] := 0;
IP[I,3] := 1;
End ;
3:Begin
IP[I,1] : = 2;
IP[I,2] := 1;
IP[I,3] := 4;
End;
End; // End Case
End;

@+
Cirec
3
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
13 mai 2006 à 15:25
Salut,

Essaye comme ceci :

Type Game_Matrix = Array[1..3,1..3] Of Integer;
Var iP : Game_Matrix = ((1,0,1),(0,0,1),(2,1,4));

@+
Cirec
0
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
13 mai 2006 à 15:31
Violent Ken

Salut.
J'ai essayé, mais mon compilateur refuse la ligne "Var iP : Game_Matrix = ((1,0,1),(0,0,1),(2,1,4));" (attend un ';' à la place du '=')

Mais si j'affecte la valeur en constante dans le Var, ne sera t-il pas plus possible de la changer dans le programme par la suite ?

Merci de m'aider !
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
13 mai 2006 à 15:38
Attention pour pouvoir déclarer une variable comme ceci il faut qu'elle soit globale

Ex:

Type Game_Matrix = Array [1..3,1..3] Of Integer;

Var
Form1 : TForm;
iP : Game_Matrix = ((1,0,1),(0,0,1),(2,1,4));

Implementation

Procedure My_Procedure;
Var iP : Game_Matrix = ((1,0,1),(0,0,1),(2,1,4)); // ceci ne fonctionne pas
Begin
// ...
End;

@+
Cirec
0

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

Posez votre question
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
13 mai 2006 à 15:41
Violent Ken

Ahem, j'ai oublié de dire que je programmais en Pascal. J'ai supposé que la syntaxe était identique à celle du Delphi.

Oui, j'ai bien déclaré la variable en global.
Voici l'exemple essayé, et qui ne marche pas :

Program Untitled;


Type Game_Matrix = Array[1..3,1..3] Of Integer;
Var iP : Game_Matrix = ((1,0,1),(0,0,1),(2,1,4));

Procedure My_Procedure;
Begin
//
End;


Begin
//
End.
0
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
13 mai 2006 à 15:54
Violent Ken

D'accord ! Merci beaucoup pour ta réponse précise et ta vitesse.
Merci ! @+
0
cs_jfs59 Messages postés 178 Date d'inscription mardi 29 avril 2003 Statut Membre Dernière intervention 2 février 2010
13 mai 2006 à 16:18
IP[1,1] := 1; IP[1,2] := 0; IP[1,3] := 1;
IP[2,1] : = 0; IP[2,2] := 0; IP[2,3] := 1;
IP[3,1] := 2; IP[3,2] := 1; IP[3,3] := 4;

ca va aussi sinon plus vite ...
Cordialement jfs.

Tout est en tout et réciproquement ...
0
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
13 mai 2006 à 16:21
Violent Ken

Oui, c'est aussi rapide, voire plus dans ce cas.
C'est dommage de voir qu'en Pascal, aucun remplissage complet d'une matrice est possible en une ligne de code (comme en Delphi).
Merci, @+
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
14 mai 2006 à 07:10
type
TMatrix3i = array [1..3] of integer;
TDblMatrix3i = array [1..3] of TMatrix3i;

var
VMX : TDblMatrix;

function PushMatrix3i(const v1,v2,v3 : integer) : TMatrix3i;
begin
result[1] := v1;
result[2] := v2;
result[3] := v3;
end;

procedure InitMatrix;
begin
VMX[1] := PushMatrix3i(11,12,13);

VMX[2] := PushMatrix3i(21,22,23);

VMX[3] := PushMatrix3i(31,32,33);

end;
0
Rejoignez-nous