program espi;
uses crt;
var
i, j ,fi , co: integer;
espiral, matriz : array[1..4,1..4] of integer;
C : char;
verdad : boolean;
procedure fico(fila,columna: integer; var ii,jj:integer);
begin
if (fila = 1) and (columna = 1) then
begin
ii := 3;
jj := 2 ;
end;
if (fila = 1) and (columna = 2) then
begin
ii := 3;
jj := 3 ;
end;
if (fila = 1) and (columna = 3) then
begin
ii := 2;
jj := 3 ;
end;
if (fila = 1) and (columna = 4) then
begin
ii := 2;
jj := 2 ;
end;
(****************)
if (fila = 2) and (columna = 1) then
begin
ii := 2;
jj := 1 ;
end;
if (fila = 2) and (columna = 2) then
begin
ii := 3;
jj := 1 ;
end;
if (fila = 2) and (columna = 3) then
begin
ii := 4;
jj := 1 ;
end;
if (fila = 2) and (columna = 4) then
begin
ii := 4;
jj := 2 ;
end;
(****************)
if (fila = 3) and (columna = 1) then
begin
ii := 4;
jj := 3 ;
end;
if (fila = 3) and (columna = 2) then
begin
ii := 4;
jj := 4;
end;
if (fila = 3) and (columna = 3) then
begin
ii := 3;
jj := 4 ;
end;
if (fila = 3) and (columna = 4) then
begin
ii := 2;
jj := 4 ;
end;
(****************)
if (fila = 4) and (columna = 1) then
begin
ii := 1;
jj := 4 ;
end;
if (fila = 4) and (columna = 2) then
begin
ii := 1;
jj := 3;
end;
if (fila = 4) and (columna = 3) then
begin
ii := 1;
jj := 2 ;
end;
if (fila = 4) and (columna = 4) then
begin
ii := 1;
jj := 1 ;
end;
end;
procedure mostrarespi;
begin
writeln('La matriz en Espiral:');
writeln;
for i := 1 to 4 do
begin
for j := 1 to 4 do
begin
write(espiral[i,j]:10);
end;
writeln;
writeln;
end;
verdad := true;
end;
begin
clrscr;
writeln;
writeln(' La Matriz como se introdujo');
writeln;
for i := 1 to 4 do
begin
for j := 1 to 4 do
begin
write(' datos matriz fila: ', i ,' columna: ', j,'= ');
readln(matriz[i,j]);
end;
writeln;
writeln;
end;
for i := 1 to 4 do
begin
for j := 1 to 4 do
begin
fico(i,j,fi,co);
espiral[fi,co]:= matriz[i,j];
write(matriz[i,j]:10);
end;
writeln;
writeln;
end;
verdad := false;
repeat
repeat
Writeln('Presione Crtl+f9 para ver espiral');
C := Readkey;
Writeln(' tu presionaste ', C, ', el valor ASCII es ', Ord(C), '.');
until (C = chr(102));
mostrarespi;
until (verdad = true);
readln;
end.