7 APELLIDO = string[MAX_APE];
\r
8 DOCUMENTO = 10000000..40000000;
\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
18 (*********************************************************)
\r
20 function GetVocal( tipo: TIPO_VOCAL ): char;
\r
26 if tipo = TV_AEIOU then valor := random( 16 )
\r
27 else valor := random( 6 ) + 5;
\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
37 (*********************************************************)
\r
39 procedure GetRNDVocal( var indic: INDICADOR; var proxl: TIPO_LETRA; var vocal: char );
\r
54 vocal := GetVocal( TV_EI );
\r
60 vocal := GetVocal( TV_AEIOU );
\r
62 if random( 40 ) = 0 then proxl := TL_VOCAL
\r
63 else proxl := TL_CONSO;
\r
68 (*********************************************************)
\r
70 procedure GetRNDConsonante( var indic: INDICADOR; var proxl: TIPO_LETRA; var conso: char );
\r
80 I_ESF, I_ESR, I_ESG, I_EST: conso := 'R';
\r
81 I_ESB: case random( 2 ) of
\r
85 I_ESC: case random( 4 ) of
\r
91 I_ESL: case random( 6 ) of
\r
95 I_ESM: case random( 3 ) of
\r
100 I_ESN: case random( 3 ) of
\r
105 else case random( 55 ) of
\r
108 if random( 10 ) = 0 then begin
\r
115 if random( 5 ) = 0 then begin
\r
120 8..11: conso := 'D';
\r
123 if random( 10 ) = 0 then begin
\r
130 if random( 5 ) = 0 then
\r
133 if random( 4 ) = 0 then proxl := TL_CONSO;
\r
136 18..19: conso := 'H';
\r
137 20..22: conso := 'J';
\r
138 23..24: conso := 'K';
\r
141 if random( 15 ) = 0 then
\r
149 if random( 5 ) = 0 then
\r
157 if random( 5 ) = 0 then
\r
163 34..36: conso := 'P';
\r
170 if random( 3 ) = 0 then
\r
176 42..44: conso := 'S';
\r
179 if random( 10 ) = 0 then
\r
185 48..50: conso := 'V';
\r
190 end; { case random( 55 ) of }
\r
192 end; { case indic of }
\r
193 end; { procedimiento }
\r
195 (*********************************************************)
\r
197 function GetRNDApellido( max, min: integer ): APELLIDO;
\r
207 if max > MAX_APE then max := MAX_APE;
\r
208 tam := random( max + 1 ) + min;
\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
215 if proxl = TL_CONSO then GetRNDConsonante( indic, proxl, aux )
\r
216 else GetRNDVocal( indic, proxl, aux );
\r
217 apel := apel + aux;
\r
219 GetRNDApellido := apel;
\r
231 assign( arch, 'DATOS.TXT' );
\r
233 dni := 10000000 + (random( 15000 ) * 100);
\r
237 ap := GetRNDApellido( 7, 4 );
\r
238 dni := dni + random( 50000 ) + 1;
\r
239 writeln( arch, ap );
\r
240 writeln( arch, dni );
\r