Está en la página 1de 3

PROGRAM ModeloA_2_23;

TYPE
tsCadena20 = String [20];

FUNCTION fncLeerOpcion : Char;


VAR
cOpc : Char;
BEGIN
WriteLn; WriteLn;
WriteLn (' A.- Cadena sin espacios iniciales');
WriteLn (' B.- Palabra HOLA');
WriteLn (' C.- Cadena interseccion');
WriteLn (' D.- Fin');
WriteLn;
REPEAT
Write (' Opcion? ':15);
ReadLn (cOpc);
cOpc := Upcase (cOpc);
UNTIL (cOpc >= 'A') AND (cOpc <= 'D');
WriteLn; WriteLn;
fncLeerOpcion := cOpc
END; { Fin de la declaración de la función fncLeerOpcion }

PROCEDURE QuitarIniciales (VAR sUnaCadena: tsCadena20; VAR iNumero: Integer);


BEGIN
iNumero := 0;
WHILE sUnaCadena [1] = ' ' DO
BEGIN
DELETE (sUnaCadena, 1, 1);
iNumero := iNumero + 1;
END;
sUnaCadena := '*' + sUnaCadena + '*';
END; { Fin de la declaración de la función fnsQuitarIniciales }
FUNCTION fnboPalabra: Boolean;
VAR
i : Integer;
sCadena : tsCadena20;
boHola : Boolean;
BEGIN
boHola := FALSE;
FOR i := 1 TO 6 DO
BEGIN
Write ('Cadena? ');
ReadLn (sCadena);
IF (boHola = FALSE) AND (POS ('HOLA', sCadena) <> 0)
THEN boHola := TRUE;
END; { Fin del FOR }
fnboPalabra := boHola;
END; { Fin de la declaración de la función fnboPalabra }

FUNCTION fnsInterseccion (sTexto1, sTexto2: tsCadena20): tsCadena20;


VAR
i: Integer;
sCadena: tsCadena20;
BEGIN
sCadena := '';
FOR i := 1 TO length (sTexto1) DO
IF (POS (sTexto1[i], sTexto2) <> 0) AND (POS (sTexto1[i], sCadena) = 0)
THEN sCadena := sCadena + sTexto1[i];
fnsInterseccion := sCadena;
END;

VAR
cOpcion: Char;
sCadena1, sCadena2: tsCadena20;
iEspacios: Integer;
{ Cuerpo del programa principal }
BEGIN
REPEAT
cOpcion := fncLeerOpcion;
CASE cOpcion OF
'A': BEGIN
Write ('Cadena? ');
ReadLn (sCadena1);
IF Length (sCadena1) > 0
THEN BEGIN
QuitarIniciales (sCadena1, iEspacios);
WriteLn ('Cadena: ', sCadena1);
WriteLn ('Numero de espacios eliminados: ', iEspacios);
END
ELSE WriteLn ('ERROR! Cadena vacia.');
END;
'B': IF fnboPalabra
THEN WriteLn ('Palabra HOLA introducida!!!! ')
ELSE WriteLn ('Palabra HOLA NO introducida!!!! ');
'C': BEGIN
Write ('Cadena 1? ');
ReadLn (sCadena1);
Write ('Cadena 2? ');
ReadLn (sCadena2);
IF (Length (sCadena1) > 0) AND (Length (sCadena2) > 0)
THEN WriteLn ('Interseccion: ', fnsInterseccion (sCadena1, sCadena2))
ELSE WriteLn ('ERROR! Cadena vacia.');
END;
END; { Fin del CASE cOpcion OF }
UNTIL cOpcion = 'D';
WriteLn ; WriteLn ('Pulsa RETURN para finalizar') ; ReadLn ;
END. { Fin del programa principal }

También podría gustarte