program puiss_mat;

const LONG=3;
type mat_int = array [1..LONG,1..LONG] of integer;

procedure saisie(var A : mat_int);
var i,j : integer;
begin
   writeln('Saisie d une matrice carree de taille ',LONG,' :');
   for i:=1 to LONG do
   begin
      writeln('entree de la ligne numero ',i,' :');
      for j:=1 to LONG do readln(A[i,j]);
   end;
end;

procedure visu(A : mat_int);
var i,j : integer;
begin
   for i:=1 to LONG do
   begin
      write('[ ');
      for j:=1 to LONG-1 do write(A[i,j],' , ');
      writeln(A[i,LONG],' ]')
   end;
end;

procedure mult(A : mat_int;B:mat_int;var C:mat_int);
var i,j,k,tmp : integer;
begin
   {...}
end;

procedure mat_id(var Id: mat_int);
var i,j	: integer;
begin
   {...}
end;

procedure puiss_naive(A	: mat_int;n:integer;var R:mat_int);
var k	: integer;
begin
   {...}
end;

function pair(n	: integer):boolean;
begin
   if (n mod 2=0) then pair:=true else pair:=false
end;

procedure puiss_dicho(A	: mat_int;n:integer;var R:mat_int);
var k	     : integer;
   puiss,res : mat_int;
begin
   {...}
end;



var A,B,C,I:mat_int;

BEGIN
   {clrscr;}
   writeln('saisie de A');
   saisie(A);
   visu(A);
   readln;
   writeln('saisie de B');
   saisie(B);
   visu(B);
   readln;  
   writeln('C=A*B:');
   mult(A,B,C);
   visu(C);
   readln;
   writeln('matrice id :');
   mat_id(I);
   visu(I);
   readln;
   writeln('puissance naive');
   puiss_naive(A,7,C);
   visu(C);
   readln;
   writeln('puissance dicho');
   puiss_dicho(A,7,C);
   visu(C);
   readln;
END.