]> git.llucax.com Git - z.facultad/75.40/1er-cuat/material.git/blob - 2do_parcial_ej_a.pas
Se expanden keywords del svn.
[z.facultad/75.40/1er-cuat/material.git] / 2do_parcial_ej_a.pas
1 program ejercicioA;\r
2 \r
3 const\r
4      max = 200;\r
5 \r
6 type\r
7     matriz = array[1..max, 1..max] of integer;\r
8 \r
9 (***********************************************************************)\r
10 \r
11 function GetPrimo( n: integer ): integer;\r
12 \r
13   var\r
14      primo: boolean;\r
15      i: integer;\r
16 \r
17   begin\r
18        primo := false;\r
19        while not primo do\r
20          begin\r
21               primo := true;\r
22               for i:= 2 to trunc( sqrt( n ) ) + 1 do\r
23                  if ( n mod i ) = 0 then primo := false;\r
24               if not primo then n := n + 1;\r
25          end;\r
26 \r
27        GetPrimo := n;\r
28   end;\r
29 \r
30 (***********************************************************************)\r
31 \r
32 procedure CargaMatriz( var mat: matriz; tope: integer );\r
33 \r
34   var\r
35      prim, i, j: integer;\r
36 \r
37   begin\r
38        prim := 1;\r
39        for i := 1 to tope do\r
40           for j := 1 to tope do\r
41             begin\r
42                  mat[i,j] := GetPrimo( prim + 1 );\r
43                  prim := mat[i,j];\r
44             end;\r
45   end;\r
46 \r
47 (***********************************************************************)\r
48 \r
49 procedure MuestraMatriz( var mat: matriz; tope: integer);\r
50 \r
51   var\r
52      i, j: integer;\r
53 \r
54   begin\r
55        for i := 1 to tope do\r
56          begin\r
57               for j := 1 to tope do\r
58                  write( mat[i,j] : 7 );\r
59               writeln;\r
60          end;\r
61   end;\r
62 \r
63 (***********************************************************************)\r
64 \r
65 procedure RecorreMatriz( var mat: matriz; mn, mx: integer );\r
66 \r
67   procedure RecMat( var mat: matriz; mn, mx: integer );\r
68 \r
69     var\r
70        i, j: integer;\r
71 \r
72     begin\r
73       if mn <= mx then\r
74        begin\r
75          for j := mn to mx do\r
76             write( mat[mn,j] : 1, ', ' );\r
77          for i := mn + 1 to mx do\r
78             write( mat[i,mx] : 1, ', ' );\r
79          for j := mx - 1 downto mn do\r
80             write( mat[mx,j] : 1, ', ' );\r
81          for i := mx - 1 downto mn + 1 do\r
82             write( mat[i,mn] : 1, ', ' );\r
83          RecMat( mat, mn + 1, mx - 1 );\r
84        end;\r
85     end;\r
86 \r
87   begin\r
88        RecMat( mat, mn, mx );\r
89        writeln;\r
90   end;\r
91 \r
92 (***********************************************************************)\r
93 \r
94 var\r
95    n: integer;\r
96    mat: matriz;\r
97 \r
98 begin\r
99      write( 'Ingrese un n£mero (', max : 1, ' m ximo): ' );\r
100      readln( n );\r
101      while n > max do\r
102        begin\r
103             writeln( 'El n£mero que ingres¢ es muy grande, el m ximo es ', max : 1 );\r
104             write( '  Ingrese otro n£mero: ' );\r
105             readln( n );\r
106        end;\r
107      writeln;\r
108      writeln( '   Cargando Matriz...' );\r
109      writeln;\r
110      CargaMatriz( mat, n );\r
111   {  MuestraMatriz( mat, n );  }\r
112      writeln;\r
113      writeln( '   Matriz cargada.' );\r
114      writeln;\r
115      RecorreMatriz( mat, 1, n );\r
116 end.\r
117 \r