]> git.llucax.com Git - z.facultad/75.40/2do-cuat/material.git/blob - ej2.pas
Se expanden keywords del svn.
[z.facultad/75.40/2do-cuat/material.git] / ej2.pas
1 program Ejercicio2;\r
2 \r
3 const\r
4      MAX_FILAS = 7;\r
5      MAX_COLUMNAS = 6;\r
6 \r
7 type\r
8     Datos = record\r
9                   i: integer;\r
10                   j: integer;\r
11             end;\r
12     Matriz = array [1..MAX_FILAS, 1..MAX_COLUMNAS] of integer;\r
13     Vector = array [1..MAX_FILAS+MAX_COLUMNAS] of Datos;\r
14 \r
15 \r
16   (*****************************************************)\r
17 \r
18   procedure visualiza(var m: Matriz; titulo: String);\r
19 \r
20   var\r
21      i, j: integer;\r
22 \r
23   begin\r
24        writeln(titulo);\r
25        writeln;\r
26        for i := 1 to MAX_FILAS do begin\r
27            for j := 1 to MAX_COLUMNAS do\r
28                write('  ', m[i,j]: 8);\r
29            writeln;\r
30        end;\r
31        writeln;\r
32   end; { visualiza }\r
33 \r
34   (*****************************************************)\r
35 \r
36   procedure leerDatos(var m: Matriz);\r
37 \r
38   var\r
39      f: Text;\r
40      i, j, k, code: integer;\r
41      s: String;\r
42 \r
43   begin\r
44        assign(f, 'datos.txt');\r
45        reset(f);\r
46        i := 1;\r
47        j := 1;\r
48        while (not eof(f)) and (i <= MAX_FILAS) and (j <= MAX_COLUMNAS) do begin\r
49             readln(f, s);\r
50             val(s, k, code);\r
51             if code <> 0 then begin\r
52                Writeln('Error en la posici¢n: ', Code);\r
53                exit;\r
54             end;\r
55             m[i,j] := k;\r
56             if j < MAX_COLUMNAS then\r
57                j := j + 1\r
58             else begin\r
59                 i := i + 1;\r
60                 j := 1;\r
61             end;\r
62        end;\r
63        close(f);\r
64   end; { leerDatos }\r
65 \r
66   (*****************************************************)\r
67 \r
68   function buscarMayor(var m: Matriz): integer;\r
69 \r
70   var\r
71      i, j, max: integer;\r
72 \r
73   begin\r
74        max := - MAXINT;\r
75        for i := 1 to MAX_FILAS do\r
76            for j := 1 to MAX_COLUMNAS do\r
77                if m[i,j] > max then\r
78                   max := m[i,j];\r
79        buscarMayor := max;\r
80   end; { buscarMayor }\r
81 \r
82   (*****************************************************)\r
83 \r
84   procedure buscarIndices(var m: Matriz; max: integer; var indices: Vector);\r
85 \r
86   var\r
87      i, j, k: integer;\r
88 \r
89   begin\r
90        k := 1;\r
91        for i := 1 to MAX_FILAS do\r
92            for j := 1 to MAX_COLUMNAS do\r
93                if m[i,j] = max then begin\r
94                   indices[k].i := i;\r
95                   indices[k].j := j;\r
96                   k := k + 1;\r
97                end;\r
98   end; { buscarIndices }\r
99 \r
100   (*****************************************************)\r
101 \r
102 var\r
103    m: Matriz;\r
104    i, max: integer;\r
105    indices: Vector;\r
106 \r
107 begin\r
108      leerDatos(m);\r
109      visualiza(m, 'Datos');\r
110      writeln;\r
111      max := buscarMayor(m);\r
112      writeln(' Valor Maximo: ', max);\r
113      writeln(' Se encuantra en los indices: ');\r
114      buscarIndices(m, max, indices);\r
115      for i := 1 to MAX_FILAS + MAX_COLUMNAS do\r
116          if (indices[i].i > 0) and (indices[i].j > 0) then\r
117             writeln(' | ', indices[i].i, ' | ', indices[i].j, ' |')\r
118          else\r
119             break;\r
120 end.