Anagrama

=__**Anagramas**__= > Escribir un programa que lea dos cadenas, y que determine sí una es un anagrama de la otra, es decir, si una cadena es una permutación de los caracteres de la otra. Por ejemplo, "acre" es un anagrama de "cera" y de "arce" (pero no de "acera").

code format="pascal" PROGRAM strin_7 ; TYPE tsCadenas = STRING [30] ;

FUNCTION fnboEsAnagrama (sPalabra_1, sPalabra_2 : tsCadenas) : Boolean ; VAR i, iPosicion : Integer ; boAnagramas : Boolean ; BEGIN boAnagramas := FALSE ; IF Length (sPalabra_1) = Length (sPalabra_2) THEN BEGIN FOR i := 1 TO Length (sPalabra_1) DO         BEGIN iPosicion := Pos (sPalabra_1 [i], sPalabra_2) ; IF iPosicion <> 0 THEN Delete (sPalabra_2, iPosicion, 1) ; END ;

boAnagramas := Length (sPalabra_2) = 0 ; END ;

fnboEsAnagrama := boAnagramas ; END ; { fnboEsAnagrama }

{--- Variables del Programa Principal -} VAR sPalabra_1, SPalabra_2 : tsCadenas ;

BEGIN { Programa Principal ---} Writeln ('Programa que dice si una palabra es anagrama de otra') ; Writeln ; Write  ('Escribe una palabra:') ; Readln (sPalabra_1) ; Write  ('       otra palabra:') ; Readln (sPalabra_2) ;

writeln ; IF fnboEsAnagrama (sPalabra_1, sPalabra_2) THEN WriteLN ('Ambas palabras SON ANAGRAMAS una de otra') ELSE WriteLN ('Ambas palabras NO SON ANAGRAMAS una de otra')

END. { FIN DE STRIN_7.PAS } code