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