1 program Generador_De_Nombres_Ordenados_Alfabeticamente;
\r
10 APELLIDO = string[MAX_APE];
\r
11 DOCUMENTO = 10000000..40000000;
\r
16 TABLA = array[1..1000] of PERSONA;
\r
17 TIPO_LETRA = ( TL_VOCAL, TL_CONSO );
\r
18 TIPO_VOCAL = ( TV_AEIOU, TV_EI );
\r
19 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
21 (*********************************************************)
\r
23 function GetVocal( tipo: TIPO_VOCAL ): char;
\r
29 if tipo = TV_AEIOU then valor := random( 16 )
\r
30 else valor := random( 6 ) + 5;
\r
32 0..4: GetVocal := 'A';
\r
33 5..7: GetVocal := 'E';
\r
34 8..10: GetVocal := 'I';
\r
35 11..13: GetVocal := 'O';
\r
36 14..15: GetVocal := 'U';
\r
40 (*********************************************************)
\r
42 procedure GetRNDVocal( var indic: INDICADOR; var proxl: TIPO_LETRA; var vocal: char );
\r
57 vocal := GetVocal( TV_EI );
\r
63 vocal := GetVocal( TV_AEIOU );
\r
65 if random( 40 ) = 0 then proxl := TL_VOCAL
\r
66 else proxl := TL_CONSO;
\r
71 (*********************************************************)
\r
73 procedure GetRNDConsonante( var indic: INDICADOR; var proxl: TIPO_LETRA; var conso: char );
\r
83 I_ESF, I_ESR, I_ESG, I_EST: conso := 'R';
\r
84 I_ESB: case random( 2 ) of
\r
88 I_ESC: case random( 4 ) of
\r
94 I_ESL: case random( 6 ) of
\r
98 I_ESM: case random( 3 ) of
\r
103 I_ESN: case random( 3 ) of
\r
108 else case random( 55 ) of
\r
111 if random( 10 ) = 0 then begin
\r
118 if random( 5 ) = 0 then begin
\r
123 8..11: conso := 'D';
\r
126 if random( 10 ) = 0 then begin
\r
133 if random( 5 ) = 0 then
\r
136 if random( 4 ) = 0 then proxl := TL_CONSO;
\r
139 18..19: conso := 'H';
\r
140 20..22: conso := 'J';
\r
141 23..24: conso := 'K';
\r
144 if random( 15 ) = 0 then
\r
152 if random( 5 ) = 0 then
\r
160 if random( 5 ) = 0 then
\r
166 34..36: conso := 'P';
\r
173 if random( 3 ) = 0 then
\r
179 42..44: conso := 'S';
\r
182 if random( 10 ) = 0 then
\r
188 48..50: conso := 'V';
\r
193 end; { case random( 55 ) of }
\r
195 end; { case indic of }
\r
196 end; { procedimiento }
\r
198 (*********************************************************)
\r
200 function GetRNDApellido( max, min: integer ): APELLIDO;
\r
210 if max > MAX_APE then max := MAX_APE;
\r
211 tam := random( max + 1 ) + min;
\r
214 if random( 5 ) = 0 then proxl := TL_VOCAL
\r
215 else proxl := TL_CONSO;
\r
216 for i := 1 to tam do
\r
218 if proxl = TL_CONSO then GetRNDConsonante( indic, proxl, aux )
\r
219 else GetRNDVocal( indic, proxl, aux );
\r
220 apel := apel + aux;
\r
222 GetRNDApellido := apel;
\r
225 (*********************************************************)
\r
227 function GetRNDLetra( min, max: char ): char;
\r
230 GetRNDLetra := chr( random( ord( max ) - ord( min ) + 1 ) + ord( min ) );
\r
234 (*********************************************************)
\r
235 procedure GetOrdApellidos( var ar: text; cant: integer );
\r
239 letra, letra1: char;
\r
240 i, j, veces: integer;
\r
242 ap, ape, apel: APELLIDO;
\r
246 if cant = 1000 then mil := true;
\r
247 dni := 10000000 + (random( 15000 ) * 100);
\r
251 for letra := 'A' to 'Z' do
\r
254 for letra1 := 'A' to 'Z' do
\r
257 writeln( ar, 'ciclo for letra1 := ''A'' to ''Z'' do. letra1: ', letra1 );
\r
261 'A', 'B', 'C', 'E', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T':
\r
263 'A', 'B', 'C', 'E', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'Z': veces := 2;
\r
266 else case letra1 of
\r
267 'A', 'B', 'C', 'E', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T': veces := 2;
\r
273 'A', 'B', 'C', 'D', 'E', 'F', 'I', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'V':
\r
275 'D', 'F', 'G', 'H', 'I', 'J', 'K', 'U', 'V': veces := 2;
\r
278 else case letra1 of
\r
279 'D', 'F', 'G', 'H', 'I', 'J', 'K', 'U': veces := 2;
\r
283 ape := ap + letra1;
\r
284 for j := 1 to veces do
\r
286 if j = 1 then apel := ape + GetRNDLetra( 'A', 'M' ) + GetRNDApellido( 6, 1 )
\r
287 else apel := ape + GetRNDLetra( 'N', 'Z' ) + GetRNDApellido( 6, 1 );
\r
288 dni := dni + random( 50000 ) + 1;
\r
289 writeln( ar, apel );
\r
290 writeln( ar, dni );
\r
294 {writeln( ar, 'apel := NADA' );}
\r
299 {writeln( ar, 'ape := NADA' );}
\r
302 end; { for letra1 := 'A' to 'Z' do }
\r
304 {writeln( ar, 'En AP: ', ap );}
\r
308 {writeln( ar, 'ap := NADA' );}
\r
311 end; { for letra := 'A' to 'Z' do }
\r
315 (*********************************************************)
\r
327 assign( arch, 'DATOS.TXT' );
\r
330 GetOrdApellidos( arch, n );
\r