]> git.llucax.com Git - z.facultad/75.40/2do-cuat/material.git/blob - ej3.pas
Import inicial después del "/var incident". :(
[z.facultad/75.40/2do-cuat/material.git] / ej3.pas
1 program Ejercicio3;\r
2 \r
3 const\r
4      MAX = 10;\r
5 \r
6 type\r
7     Vector = array [1..MAX] of integer;\r
8 \r
9 \r
10   (*****************************************************)\r
11 \r
12   procedure leerDatos(var v: Vector);\r
13 \r
14   var\r
15      i: integer;\r
16 \r
17   begin\r
18        for i := 1 to MAX do begin\r
19            write('Numero: ');\r
20            readln(v[i]);\r
21        end;\r
22   end; { leerDatos }\r
23 \r
24   (*****************************************************)\r
25 \r
26   procedure ordenarDecreciente(var v: Vector);\r
27 \r
28   var\r
29      i, j, aux: integer;\r
30 \r
31   begin\r
32        for i := 1 to MAX do\r
33            for j := i + 1 to MAX do\r
34                if v[i] < v[j] then begin\r
35                   aux := v[i];\r
36                   v[i] := v[j];\r
37                   v[j] := aux;\r
38                end;\r
39   end; { ordenarDecreciente }\r
40 \r
41   (*****************************************************)\r
42 \r
43   function buscaBinaria(var v: Vector; num, ini, fin: integer): integer;\r
44 \r
45   var\r
46      medio: integer;\r
47 \r
48   begin\r
49        if (v[ini] < num) or (v[fin] > num) then\r
50           buscaBinaria := 0\r
51        else begin\r
52           medio := ini + ((fin - ini) div 2);\r
53           if num = v[medio] then\r
54              buscaBinaria := medio\r
55           else\r
56              if num < v[medio] then\r
57                 buscaBinaria := buscaBinaria(v, num, medio + 1, fin)\r
58              else\r
59                 buscaBinaria := buscaBinaria(v, num, ini, medio - 1);\r
60        end;\r
61   end;\r
62 \r
63   (*****************************************************)\r
64 \r
65 var\r
66    v: Vector;\r
67    indice: integer;\r
68 \r
69 begin\r
70      leerDatos(v);\r
71      ordenarDecreciente(v);\r
72      indice := buscaBinaria(v, 333, 1, MAX);\r
73      if indice = 0 then\r
74         writeln('NO SE ENCONTRO EL NUMERO ''333'' ENTRE LOS INGRESADOS')\r
75      else\r
76         writeln('El numero ''333'' se encuentra en la posicion ', indice, '.');\r
77 end.