]> git.llucax.com Git - z.facultad/75.40/1er-cuat/material.git/blob - 2do_parcial_ej_b.pas
Se expanden keywords del svn.
[z.facultad/75.40/1er-cuat/material.git] / 2do_parcial_ej_b.pas
1 program ejercicioB;\r
2 \r
3 const\r
4      max = 10;\r
5 \r
6 type\r
7     persona = record\r
8                     apellido: string[30];\r
9                     telefono: string[20];\r
10               end;\r
11 \r
12     matriz = array[1..max, 1..max] of persona;\r
13 \r
14 \r
15 (***********************************************************************)\r
16 \r
17 procedure Rotar90Matriz( var mat: matriz; mn, mx: integer );\r
18 \r
19    type\r
20        vector = array[1..max] of persona;\r
21 \r
22    var\r
23       i: integer;\r
24       vtemp: vector;\r
25 \r
26    begin\r
27         if mn < mx then\r
28           begin\r
29                for i := mn to mx - 1 do\r
30                   vtemp[i] := mat[mn,i];\r
31                for i := mn to mx - 1 do\r
32                   mat[mn,i] := mat[i,mx];\r
33                for i := mn + 1 to mx do\r
34                   mat[mx+1-i,mx] := mat[mx,i];\r
35                for i := mn + 1 to mx do\r
36                   mat[mx,i] := mat[i,mn];\r
37                for i := mn to mx - 1 do\r
38                   mat[mx+1-i,mn] := vtemp[i];\r
39                Rotar90Matriz( mat, mn + 1, mx - 1 );\r
40           end;\r
41    end;\r
42 \r
43 (***********************************************************************)\r
44 \r
45 procedure MostrarMatriz( var mat: matriz; tope: integer);\r
46 \r
47   var\r
48      i, j: integer;\r
49 \r
50   begin\r
51        for i := 1 to tope do\r
52          begin\r
53               for j := 1 to tope do\r
54                  write( ' (', mat[i,j].apellido, ', ', mat[i,j].telefono, ') ' );\r
55               writeln;\r
56          end;\r
57   end;\r
58 \r
59 (***********************************************************************)\r
60 \r
61 procedure CargarMatriz( var mat: matriz; tope: integer );\r
62 \r
63   var\r
64      i, j: integer;\r
65 \r
66   begin\r
67        for i := 1 to tope do\r
68           for j := 1 to tope do\r
69             begin\r
70                  write( 'Ingrese el nobre: ' );\r
71                  readln( mat[i,j].apellido );\r
72                  write( 'Ingrese el telefono: ' );\r
73                  readln( mat[i,j].telefono );\r
74             end;\r
75   end;\r
76 \r
77 (***********************************************************************)\r
78 \r
79 \r
80 var\r
81    mat: matriz;\r
82    n, i: integer;\r
83 \r
84 begin\r
85      write( 'Ingrese el tama¤o de la matriz (', max : 1, ' m ximo): ' );\r
86      readln( n );\r
87      while n > max do\r
88        begin\r
89             writeln( 'El n£mero que ingres¢ es muy grande, el m ximo es ', max : 1 );\r
90             write( '  Ingrese otro n£mero: ' );\r
91             readln( n );\r
92        end;\r
93      CargarMatriz( mat, n );\r
94      for i := 1 to 4 do\r
95        begin\r
96             MostrarMatriz( mat, n );\r
97             Rotar90Matriz( mat, 1, n );\r
98             writeln;\r
99        end;\r
100 end.\r