Example: Multidimensional dynamic array/es

From Lazarus wiki
Jump to navigationJump to search

English (en) español (es) français (fr) 日本語 (ja)

Seleccione Proyecto -> Nuevo proyecto -> Aplicación de consola, pegue el siguiente código y ejecútelo para obtener el resultado de salida.

Código

program EjemploMatricesDnamicas;

type
  TMatriz2D = Array of Array of Integer;

procedure  RellenaMatriz2D(Matriz: TMatriz2D);
var
  i, j: Integer;
begin
  for i:=Low(Matriz) to High(Matriz) do
    for j:=Low(Matriz[i]) to High(Matriz[i]) do
      Matriz[i][j] := i*10 + j;
end;

procedure  MostrarMatriz2D(Matriz: TMatriz2D);
var
  i, j: Integer;
begin
  for i:=Low(Matriz) to High(Matriz) do
  begin
    Write('Matriz[', i, ']:  ');
    for j:=Low(Matriz[i]) to High(Matriz[i]) do
      Write(Matriz[i][j]:2, '  ');
    WriteLn;
  end;
end;

procedure Pausa;
begin
  WriteLn;
  Write('...');
  ReadLn;
  WriteLn;
end;


var
  Matriz2D: TMatriz2D;

begin
  SetLength(Matriz2D, 5, 3);  // redimensionar a dos dimensiones
    WriteLn('Matriz dinámica rectangular después de redimensionar');
    WriteLn('-----------------------------------------');
    MostrarMatriz2D(Matriz2D);
    Pausa;

  RellenaMatriz2D(Matriz2D);
    WriteLn('Matriz dinámica rectangular después de rellenar:');
    WriteLn('-----------------------------------------');
    MostrarMatriz2D(Matriz2D);
    Pausa;

  SetLength(Matriz2D, 10);  // redimensionar a una dimensión
    WriteLn('Matriz dinámica no rectangular después de redimensionar a una dimensión:');
    WriteLn('----------------------------------------------------------------');
    MostrarMatriz2D(Matriz2D);
    Pausa;

  SetLength(Matriz2D[0], 9);
  SetLength(Matriz2D[1], 7);
  SetLength(Matriz2D[2], 6);
  SetLength(Matriz2D[3], 9);
  SetLength(Matriz2D[4], 5);
  SetLength(Matriz2D[5], 8);
  SetLength(Matriz2D[6], 5);
  SetLength(Matriz2D[7], 3);
  SetLength(Matriz2D[8], 1);
  SetLength(Matriz2D[9], 7);
    WriteLn('Matriz dinámica no rectangular después de rellenar y redimensionar a una dimensión:');
    WriteLn('----------------------------------------------------------------------------');
    MostrarMatriz2D(Matriz2D);
    Pausa;

  RellenaMatriz2D(Matriz2D);
    WriteLn('Matriz dinámica no rectangular después de rellenar:');
    WriteLn('--------------------------------------------');
    MostrarMatriz2D(Matriz2D);
    Pausa;
end.
=== Salida ===

Matriz dinámica rectangular después de redimensionar
-----------------------------------------
Matriz[0]:   0   0   0  
Matriz[1]:   0   0   0  
Matriz[2]:   0   0   0  
Matriz[3]:   0   0   0  
Matriz[4]:   0   0   0  

...

Matriz dinámica rectangular después de rellenar:
-----------------------------------------
Matriz[0]:   0   1   2  
Matriz[1]:  10  11  12  
Matriz[2]:  20  21  22  
Matriz[3]:  30  31  32  
Matriz[4]:  40  41  42  

...

Matriz dinámica no rectangular después de redimensionar a una dimensión:
----------------------------------------------------------------
Matriz[0]:   0   1   2  
Matriz[1]:  10  11  12  
Matriz[2]:  20  21  22  
Matriz[3]:  30  31  32  
Matriz[4]:  40  41  42  
Matriz[5]:  
Matriz[6]:  
Matriz[7]:  
Matriz[8]:  
Matriz[9]:  

...

Matriz dinámica no rectangular después de rellenar y redimensionar a una dimensión:
----------------------------------------------------------------------------
Matriz[0]:   0   1   2   0   0   0   0   0   0  
Matriz[1]:  10  11  12   0   0   0   0  
Matriz[2]:  20  21  22   0   0   0  
Matriz[3]:  30  31  32   0   0   0   0   0   0  
Matriz[4]:  40  41  42   0   0  
Matriz[5]:   0   0   0   0   0   0   0   0  
Matriz[6]:   0   0   0   0   0  
Matriz[7]:   0   0   0  
Matriz[8]:   0  
Matriz[9]:   0   0   0   0   0   0   0  

...

Matriz dinámica no rectangular después de rellenar:
--------------------------------------------
Matriz[0]:   0   1   2   3   4   5   6   7   8  
Matriz[1]:  10  11  12  13  14  15  16  
Matriz[2]:  20  21  22  23  24  25  
Matriz[3]:  30  31  32  33  34  35  36  37  38  
Matriz[4]:  40  41  42  43  44  
Matriz[5]:  50  51  52  53  54  55  56  57  
Matriz[6]:  60  61  62  63  64  
Matriz[7]:  70  71  72  
Matriz[8]:  80  
Matriz[9]:  90  91  92  93  94  95  96  

...

Ver también