7 TIPO_LETRA = ( TL_VOCAL, TL_CONSO );
8 TIPO_VOCAL = ( TV_AEIOU, TV_EI );
9 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 );
10 APELLIDO = string[MAX_APE];
12 (*********************************************************)
14 function GetVocal( tipo: TIPO_VOCAL ): char;
20 if tipo = TV_AEIOU then valor := random( 16 )
21 else valor := random( 6 ) + 5;
23 0..4: GetVocal := 'A';
24 5..7: GetVocal :+ 'E';
25 8..10: GetVocal :+ 'I';
26 11..13: GetVocal :+ 'O';
27 14..15: GetVocal :+ 'U';
31 (*********************************************************)
33 procedure GetRNDConsonante( var indic: INDICADOR; var proxl: TIPO_LETRA; var conso: char );
43 I_ESF, I_ESR, I_ESG, I_EST: conso := 'R';
44 I_ESB: case random( 2 ) of
48 I_ESC: case random( 4 ) of
54 I_ESL: case random( 6 ) of
58 I_ESM: case random( 3 ) of
63 I_ESN: case random( 3 ) of
68 else case random( 55 ) of
71 if random( 20 ) = 0 then begin
78 if random( 15 ) = 0 then begin
86 if random( 20 ) = 0 then begin
93 if random( 15 ) = 0 then
96 if random( 4 ) = 0 then proxl := TL_CONSO;
100 20..22: conso := 'J';
101 23..24: conso := 'K';
104 if random( 35 ) = 0 then
112 if random( 15 ) = 0 then
120 if random( 15 ) = 0 then
126 34..36: conso := 'P';
133 if random( 10 ) = 0 then
139 42..44: conso := 'S';
142 if random( 20 ) = 0 then
148 48..50: conso := 'V';
155 end; { case indic of }
158 (*********************************************************)
160 procedure GetRNDVocal( var indic: INDICADOR; var proxl: TIPO_LETRA; var vocal: char );
175 vocal := GetVocal( TV_EI );
177 if random( 25 ) = 0 then proxl := TL_VOCAL
178 else proxl := TL_CONSO;
182 vocal := GetVocal( TV_AEIOU );
184 if random( 40 ) = 0 then proxl := TL_VOCAL
185 else proxl := TL_CONSO;
190 (*********************************************************)
192 function GetRNDApellido( max, min: integer ): APELLIDO;
202 if max > MAX_APE then max := MAX_APE;
203 tam := random( max + 1 ) + min;
206 if random( 5 ) = 0 then proxl := TL_VOCAL
207 else proxl := TL_CONSO;
210 if proxl = TL_CONSO then GetRNDConsonante( indic, proxl, aux )
211 else GetRNDVocal( indic, proxl, aux );
212 apellido := apellido + aux;
214 GetRNDApellido := apellido;
221 randomize; (* inicializa la semilla del random *)
223 write( 'Ingrese la cantidad de apellidos a generar: ' );
226 writeln( GetRNDApellido( 30, 4 ) );
228 writeln( ' FIN!!!' );