Transformation d'une matrice en un tableau à une seule dimension
Salut à tous,
j'ai un problème : je veux transformer ma matrice n*m en un tableau à une seule dimension. Voilà, j'ai essayé mais ça n'a pas marché.
Aidez-moi s'il vous plaît ..
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
program heh;
uses crt;
var
t:array[1..10,1..1à] of integer;
k:array[1..1)] of integer;
i,n,j,l,m:integer;
begin
clrscr;
readln(n);readln(m);
clrscr;
for i:= 1 to n do
for j:=1 to m do
begin
readln(t[i,j]);
end;
for i:= 1 to n do
for j:=1 to m do
begin
l:=1;
while l<m*n do
begin
k[l]:=t[i,j];
l:=l+1;
end;
end;
for l:=1 to m*n do
begin
writeln(k[l]);
end;
readln;
end. |
Que faire : réveiller les neurones ?
Cela ne semble pas nécessiter beaucoup de réflexion, pourtant...:weird:
Les meilleurs amis du programmeur : papier et crayon.
Bon, reprenons : je suppose une matrice t de n lignes par m colonnes.
- on parcours les lignes de 1 à n, donc i varie de 1 à n.
- la i-ème ligne, c'est t[i,1] à t[i,m], donc j varie de 1 à m,
Ce qui donne, à la queue-leu-leu (c'est à dire pour remplir k[]) :
t[1,1] à t[1,m], t[2,1] à t[2,m], ... , t[n,1] à t[n,m]
- la première ligne (i=1) remplit k[1] à k[m],
- la seconde ligne (i=2) remplit k[m+1] à k[m+m],
- la troisième ligne (i=3) remplit k[2m+1] à k[2m+m],
etc
Et là, cela doit faire tilt pour la formule.
Essaye avec un crayon avant de lire le résultat :
k[ ((i-1)*m) + j] = t[i,j]
Pour le coup, j'espère bien ne pas faire d'erreur... :mouarf: