]> git.llucax.com Git - z.facultad/75.40/1er-cuat/orden.git/blob - test/cargar.pas
f6d9f8b4a2cce687c8aa48e8d2d0db312cb4a231
[z.facultad/75.40/1er-cuat/orden.git] / test / cargar.pas
1 program RNDNames;\r
2 \r
3 const\r
4      MAX_APE = 15;\r
5 \r
6 type\r
7     APELLIDO = string[MAX_APE];\r
8     DOCUMENTO = 10000000..40000000;\r
9     PERSONA = record\r
10                     ap: APELLIDO;\r
11                     dni: DOCUMENTO;\r
12               end;\r
13     TABLA = array[1..1000] of PERSONA;\r
14     TIPO_LETRA = ( TL_VOCAL, TL_CONSO );\r
15     TIPO_VOCAL = ( TV_AEIOU, TV_EI );\r
16     INDICADOR = ( I_NADA, I_ESB, I_ESC, I_ESF, I_ESG, I_ESL, I_ESM, I_ESN, I_ESQ, I_ESQU, I_ESR, I_EST );\r
17 \r
18 (*********************************************************)\r
19 \r
20  function GetVocal( tipo: TIPO_VOCAL ): char;\r
21 \r
22    var\r
23       valor: integer;\r
24 \r
25    begin\r
26         if tipo = TV_AEIOU then valor := random( 16 )\r
27                            else valor := random( 6 ) + 5;\r
28         case valor of\r
29             0..4: GetVocal := 'A';\r
30             5..7: GetVocal := 'E';\r
31             8..10: GetVocal := 'I';\r
32             11..13: GetVocal := 'O';\r
33             14..15: GetVocal := 'U';\r
34         end;\r
35    end;\r
36 \r
37 (*********************************************************)\r
38 \r
39  procedure GetRNDVocal( var indic: INDICADOR; var proxl: TIPO_LETRA; var vocal: char );\r
40 \r
41    var\r
42       valor: integer;\r
43 \r
44     begin\r
45         case indic of\r
46             I_ESQ:\r
47                   begin\r
48                        vocal := 'U';\r
49                        indic := I_ESQU;\r
50                        proxl := TL_VOCAL;\r
51                   end;\r
52             I_ESQU:\r
53                    begin\r
54                         vocal := GetVocal( TV_EI );\r
55                         indic := I_NADA;\r
56                         proxl := TL_CONSO;\r
57                    end;\r
58             else\r
59               begin\r
60                    vocal := GetVocal( TV_AEIOU );\r
61                    indic := I_NADA;\r
62                    if random( 40 ) = 0 then proxl := TL_VOCAL\r
63                                        else proxl := TL_CONSO;\r
64               end;\r
65             end;\r
66     end;\r
67 \r
68 (*********************************************************)\r
69 \r
70  procedure GetRNDConsonante( var indic: INDICADOR; var proxl: TIPO_LETRA; var conso: char );\r
71 \r
72    var\r
73       valor: integer;\r
74 \r
75    begin\r
76         proxl := TL_VOCAL;\r
77         indic := I_NADA;\r
78 \r
79         case indic of\r
80             I_ESF, I_ESR, I_ESG, I_EST: conso := 'R';\r
81             I_ESB: case random( 2 ) of\r
82                        0: conso := 'R';\r
83                        1: conso := 'L';\r
84                    end;\r
85             I_ESC: case random( 4 ) of\r
86                        0: conso := 'C';\r
87                        1: conso := 'H';\r
88                        2: conso := 'R';\r
89                        3: conso := 'L';\r
90                    end;\r
91             I_ESL: case random( 6 ) of\r
92                        0: conso := 'T';\r
93                        1..5: conso := 'L';\r
94                    end;\r
95             I_ESM: case random( 3 ) of\r
96                        0: conso := 'P';\r
97                        1: conso := 'B';\r
98                        2: conso := 'L';\r
99                    end;\r
100             I_ESN: case random( 3 ) of\r
101                             0: conso := 'R';\r
102                             1: conso := 'V';\r
103                             2: conso := 'C';\r
104                    end;\r
105             else case random( 55 ) of\r
106                     0..3: begin\r
107                                conso := 'B';\r
108                                if random( 10 ) = 0 then begin\r
109                                                              indic := I_ESB;\r
110                                                              proxl := TL_CONSO;\r
111                                                         end;\r
112                           end;\r
113                     4..7: begin\r
114                                conso := 'C';\r
115                                if random( 5 ) = 0 then begin\r
116                                                              indic := I_ESC;\r
117                                                              proxl := TL_CONSO;\r
118                                                         end;\r
119                           end;\r
120                     8..11: conso := 'D';\r
121                     12..14: begin\r
122                                conso := 'F';\r
123                                if random( 10 ) = 0 then begin\r
124                                                              indic := I_ESF;\r
125                                                              proxl := TL_CONSO;\r
126                                                         end;\r
127                             end;\r
128                     15..17: begin\r
129                                conso := 'G';\r
130                                if random( 5 ) = 0 then\r
131                                  begin\r
132                                       indic := I_ESG;\r
133                                       if random( 4 ) = 0 then proxl := TL_CONSO;\r
134                                  end;\r
135                             end;\r
136                     18..19: conso := 'H';\r
137                     20..22: conso := 'J';\r
138                     23..24: conso := 'K';\r
139                     25..27: begin\r
140                                conso := 'L';\r
141                                if random( 15 ) = 0 then\r
142                                  begin\r
143                                       indic := I_ESL;\r
144                                       proxl := TL_CONSO;\r
145                                  end;\r
146                             end;\r
147                     28..30: begin\r
148                                conso := 'M';\r
149                                if random( 5 ) = 0 then\r
150                                  begin\r
151                                       indic := I_ESM;\r
152                                       proxl := TL_CONSO;\r
153                                  end;\r
154                             end;\r
155                     31..33: begin\r
156                                conso := 'N';\r
157                                if random( 5 ) = 0 then\r
158                                  begin\r
159                                       indic := I_ESN;\r
160                                       proxl := TL_CONSO;\r
161                                  end;\r
162                             end;\r
163                     34..36: conso := 'P';\r
164                     37..38: begin\r
165                                conso := 'Q';\r
166                                indic := I_ESQ;\r
167                             end;\r
168                     39..41: begin\r
169                                conso := 'R';\r
170                                if random( 3 ) = 0 then\r
171                                  begin\r
172                                       indic := I_ESR;\r
173                                       proxl := TL_CONSO;\r
174                                  end;\r
175                             end;\r
176                     42..44: conso := 'S';\r
177                     45..47: begin\r
178                                conso := 'T';\r
179                                if random( 10 ) = 0 then\r
180                                  begin\r
181                                       indic := I_EST;\r
182                                       proxl := TL_CONSO;\r
183                                  end;\r
184                             end;\r
185                     48..50: conso := 'V';\r
186                     51: conso := 'W';\r
187                     52: conso := 'X';\r
188                     53: conso := 'Y';\r
189                     54: conso := 'Z';\r
190                  end; { case random( 55 ) of }\r
191 \r
192         end; { case indic of }\r
193    end; { procedimiento }\r
194 \r
195 (*********************************************************)\r
196 \r
197  function GetRNDApellido( max, min: integer ): APELLIDO;\r
198 \r
199         var\r
200        tam, i: integer;\r
201        aux: char;\r
202        apel: APELLIDO;\r
203        indic: INDICADOR;\r
204        proxl: TIPO_LETRA;\r
205 \r
206         begin\r
207          if max > MAX_APE then max := MAX_APE;\r
208          tam := random( max + 1 ) + min;\r
209          indic := I_NADA;\r
210          apel := '';\r
211          if random( 5 ) = 0 then proxl := TL_VOCAL\r
212                             else proxl := TL_CONSO;\r
213          for i := 1 to tam do\r
214            begin\r
215                 if proxl = TL_CONSO then GetRNDConsonante( indic, proxl, aux )\r
216                                     else GetRNDVocal( indic, proxl, aux );\r
217                 apel := apel + aux;\r
218            end;\r
219          GetRNDApellido := apel;\r
220     end;\r
221 \r
222 var\r
223     n, i: integer;\r
224     arch: text;\r
225     ap: APELLIDO;\r
226     dni: DOCUMENTO;\r
227 \r
228 begin\r
229      randomize;\r
230      n := 1000;\r
231      assign( arch, 'DATOS.TXT' );\r
232      rewrite( arch );\r
233      dni := 10000000 + (random( 15000 ) * 100);\r
234 \r
235      for i := 1 to n do\r
236         begin\r
237              ap := GetRNDApellido( 7, 4 );\r
238              dni := dni + random( 50000 ) + 1;\r
239              writeln( arch, ap );\r
240              writeln( arch, dni );\r
241              writeln( arch );\r
242         end;\r
243      close( arch );\r
244 end.\r