Leer+frase++y+separar+vocales+y+consonantes

=__**Leer una frase y separar vocales y consonantes**__=

Programa que lee una cadena de caracteres y separa las vocales y las consonantes, para crea otras dos cadenas:
 * Una con las vocales
 * Otra con las consonantes de la cadena leída.

code format="pascal" PROGRAM Separ_cad ; TYPE tsCadenas = String [30] ;

PROCEDURE Separar_1 ( sTotal : tsCadenas ; VAR sVocales, sConsonantes : tsCadenas) ; VAR i : Byte ; byContVocal, byContCons : Byte ; BEGIN byContVocal := 0 ; byContCons := 0 ;

FOR i := 1 TO Length (sTotal) DO      CASE Upcase (sTotal[i]) OF          'A', 'E', 'I', 'O', 'U': BEGIN byContVocal := byContVocal + 1 ; sVocales [byContVocal] := sTotal [i] END ;

'B' .. 'D', 'F' .. 'H', 'J' .. 'N', 'P' .. 'T', 'ñ', 'Ñ' : BEGIN byContCons := byContCons + 1 ; sConsonantes [byContCons] := sTotal [i] END ; END ; { CASE }

sVocales [0] := Chr (byContVocal) ; sConsonantes [0] := Chr (byContCons) ; END ; { Separar_1 }

PROCEDURE Separar_2 (sTotal : tsCadenas ; VAR sVocales, sConsonantes : tsCadenas) ; VAR i : Byte ; BEGIN { Inicializar como vacías las dos cadenas } sVocales := '' ; { sVocales[0] := Chr(0) } sConsonantes := '' { sConsonantes[0] := Chr(0) }

FOR i := 1 TO Length (sTotal) DO       CASE Upcase (sTotal[i]) OF            'A', 'E', 'I', 'O', 'U': sVocales := sVocales + sTotal [i] ; 'B' .. 'D', 'F' .. 'H', 'J' .. 'N', 'P' .. 'T', 'ñ', 'Ñ' : sConsonantes := sConsonantes + sTotal [i] ; END ; {CASE}

END ; { Separar_2 }

{--- Variables del Programa Principal -} VAR sCadTotal, sCadVocal, sCadCons : tsCadenas ;

BEGIN { Programa Principal ---} Write ('Escribe una sucesión de caracteres: ') ; Readln (sCadTotal) ;

Separar_1 (sCadTotal, sCadVocal, sCadCons) ;

Writeln (' Vocales: ', sCadVocal) ; Writeln ('Consonantes: ', sCadCons) ;

Separar_2 (sCadTotal, sCadVocal, sCadCons) ;

Writeln (' Vocales: ', sCadVocal) ; Writeln ('Consonantes: ', sCadCons) ;

ReadLn ; END. code