with Ada.Text_IO; use Ada.Text_IO;
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;

procedure Q5K is
    -- Definindo tipos para a matriz
    type Matrix is array (1 .. 10, 1 .. 10) of Integer;  -- Máximo de 10x10
    M, Mt : Matrix;  -- Matrizes M e Mt
    N : Integer;  -- Dimensão da matriz

begin
    -- Entrada da matriz M
    Put("Digite o tamanho da matriz (n x n): ");
    Get(N);

    Put_Line("Digite os elementos da matriz M:");
    for I in 1 .. N loop
        for J in 1 .. N loop
            Put("Elemento (" & Integer'Image(I) & ", " & Integer'Image(J) & "): ");
            Get(M(I, J));
        end loop;
    end loop;

    -- Calculando a matriz transposta Mt
    for I in 1 .. N loop
        for J in 1 .. N loop
            Mt(J, I) := M(I, J);  -- Transpondo a matriz
        end loop;
    end loop;

    -- Exibindo a matriz transposta Mt
    Put_Line("A matriz transposta Mt é:");
    for I in 1 .. N loop
        for J in 1 .. N loop
            Put(Integer'Image(Mt(I, J)) & " ");
        end loop;
        New_Line;  -- Nova linha após cada linha da matriz
    end loop;
end Q5K;
