Comment fait on pour parcourir un tableau a 2 dimensions en diagonal?

Comment fait on pour parcourir un tableau a 2 dimensions en diagonal? - Ada - Programmation

Marsh Posté le 31-03-2004 à 11:52:53    

Bonjour a tous et a toutes ! Voilà, je n'arrive pas a parcourir mon tableau a 2 dimensions en diagonale.
 
Pour le parcourir en verticale et en horizontale, il n y a aucun probleme mais alors, pour la diagonale...
 
Les lignes de mon tableau vont de 1 a 8.
Les colonnes vont de 'A' a 'H'.
 
Je suis vraiment déséspérée et je remercie d'avance la personne qui pourra m'aider a resoudre ce probleme.

Reply

Marsh Posté le 31-03-2004 à 11:52:53   

Reply

Marsh Posté le 31-03-2004 à 12:50:54    

fépéter ton code pour le parcourir à l'horizontale et à la verticale STP.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 31-03-2004 à 13:07:37    

Si tu y arrives à l'horizontale et à la verticale, je ne vois où est le problème pour la diagonale.
C'est en quel langage ton tableau ?

Reply

Marsh Posté le 31-03-2004 à 13:17:14    

a mon avis, tu devrais eviter de declarer les colonnes de ton echiquier par leurs noms ('A'..'H') et utiliser un entier.
ca facilite les traitements :
 
tu peux essayer un truc comme ca :
 
with Ada.text_io;
 
procedure Test is
ECHIQUIER : array( 1..8, 1..8 ) of INTEGER;
begin
 
for i in 1..8 loop
 for j in 1..8 loop
  ECHIQUIER(I,J) := I+J;
 end loop;
end loop;
 
for i in 1..8 loop
 ada.text_io.put_line(Integer'image(ECHIQUIER(I,I)));
end loop ;
 
end;

Reply

Marsh Posté le 31-03-2004 à 13:23:13    

Vinx a écrit :

C'est en quel langage ton tableau ?

t'en veeeeeeeeux ?


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 31-03-2004 à 13:25:34    

sinon, ce code devrait (peut-etre) fonctionner, mais je trouve ca tres (trop ?) tordu.
il existe sans doute plus simple.
 
essaie le :
 
with Ada.text_io;
 
procedure Test is
 
type Column is (A, B, C, D, E, F, G, H);
type Echiquier is array (1..8, Column) of Integer;
board: Echiquier;
 
begin
 
for i in 1..8 loop
 for j in A..H loop
  Board(I,J) := I;
 end loop;
end loop;
 
for i in 1..8 loop
 ada.text_io.put_line(Integer'image(Board(I,Column'Val(I))));
end loop ;
 
end;

Reply

Marsh Posté le 31-03-2004 à 13:46:36    

vonm a écrit :

sinon, ce code devrait (peut-etre) fonctionner, mais je trouve ca tres (trop ?) tordu.
il existe sans doute plus simple.
 
essaie le :
 
with Ada.text_io;
 
procedure Test is
 
type Column is (A, B, C, D, E, F, G, H);
type Echiquier is array (1..8, Column) of Integer;
board: Echiquier;
 
begin
 
for i in 1..8 loop
 for j in A..H loop
  Board(I,J) := I;
 end loop;
end loop;
 
for i in 1..8 loop
 ada.text_io.put_line(Integer'image(Board(I,Column'Val(I))));
end loop ;
 
end;
 

j'allais faire cet exemple, mais je me suis dit que séparer les type de lignes et colones n'est pas très important, ils sont séparés par la dimension dans le tableau.
 
par contre, attention à utiliser des 'Range(N) dans les boucles et des 'Pos(val) pour convertir les énumérations en int.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 31-03-2004 à 13:49:10    

heuuu... je ne saisis pas l'exemple des range, tu peux montrer stp ?
 
v.

Reply

Marsh Posté le 31-03-2004 à 13:53:41    

nraynaud a écrit :

t'en veeeeeeeeux ?


 
Ouais, j'veux bien. Fais tourner.  :D  
 
Autant pour moi. j'avais pas vu que nous étions dans la sous rubrique Ada  ;)

Reply

Marsh Posté le 31-03-2004 à 14:01:28    

vonm a écrit :

heuuu... je ne saisis pas l'exemple des range, tu peux montrer stp ?
 
v.

http://www.iuma.ulpgc.es/users/jmi [...] A-5-5.html
 

Code :
  1. with Ada.text_io;
  2. procedure Test is
  3.   type Column is (A, B, C, D, E, F, G, H);
  4.   type Echiquier is array (1..8, Column) of Integer;
  5.   board: Echiquier;
  6. begin
  7.   for i in Board'Range(0) loop
  8.     for j in Board'Range(1) loop
  9.       Board(I,J) := I;
  10.     end loop;
  11.   end loop;
  12.   for i in Board'Range(0) loop
  13.     ada.text_io.put_line(Integer'image(Board(I,Column'Val(I))));
  14.   end loop ;
  15. end;


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 31-03-2004 à 14:01:28   

Reply

Marsh Posté le 31-03-2004 à 14:52:42    

ok merci, je connaissais pas.
 
v.

Reply

Marsh Posté le 31-03-2004 à 15:22:26    

Merci a tous pour vos reponses !  :)  
Les characters ca complique le tout mais j y suis malheureusement  
obligé  :(  
 
Des que tout fonctionne, je vous tiendrai au courant.
Encore une fois, merci a tous !

Reply

Marsh Posté le 31-03-2004 à 15:48:19    

Je me suis remis au boulot et j ai pas mal de probleme...
 
C'est de ma faute, je n'ai pas precisé que ce n'est pas un tableau d'integer mais un tableau de type pion(rouge,vert,jaune,bleu).
 
type pion is (rouge,vert,jaune,bleu);
type echequier is array(1..8, character range 'A'..'H') of pion;
board:echequier;
 
 
Je n'arrive pas a transformer l'essai...
 
ada.text_io.put_line(Integer'image(Board(I,Column'Val(I))));


Message édité par igi le 31-03-2004 à 15:49:40
Reply

Marsh Posté le 31-03-2004 à 17:47:24    

igi a écrit :

Je me suis remis au boulot et j ai pas mal de probleme...
 
C'est de ma faute, je n'ai pas precisé que ce n'est pas un tableau d'integer mais un tableau de type pion(rouge,vert,jaune,bleu).
 
type pion is (rouge,vert,jaune,bleu);
type echequier is array(1..8, character range 'A'..'H') of pion;
board:echequier;
 
 
Je n'arrive pas a transformer l'essai...
 


 
ada.text_io.put_line(Pion'Image(Board(I,Column'Val(I)));


Message édité par nraynaud le 31-03-2004 à 17:48:02

---------------
trainoo.com, c'est fini
Reply

Sujets relatifs:

Leave a Replay

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