blikk info infothek forum galerie sitemap

Palindroerkennung durch umdrehen und vergleichen

anfang zurueck weiter ende nach oben


                                                                                               von Alexander E.

Palindromerkennung durch umdrehen und vergleichen:

    Man prüft ob ein String ein Palindrom ist, indem man ihn von vorne und von hinten liest und die zwei Gelesenen vergleicht.

Beispielprogramm:


PROGRAM Palindromerkennung_durch_umdrehen;


(******************************************************************************)


{ Falls zum Beispiel bei einem Satzpalindrom dir Woerter }

{ mit Leerzeichen getrennt sind werden diese von folgender Funktion entfernt }


FUNCTION Blanks (zkette :String): String;

VAR

      i               : INTEGER;   {Zaehlvariable fuer FOR-Schleife}

      cleanwort : STRING;     {zeichenkette ohne Blanks}


BEGIN

      cleanwort:='';          {claenwort als leer initialisiert}

      FOR i:=1 TO length(zkette) DO

            IF zkette[i] <> ' ' THEN

                cleanwort:=cleanwort+zkette[i];

    Blanks:= cleanwort;

END;


(******************************************************************************)


{Folgende Funktion wandelt alle Eingegebenen Buchstaben in Großbuchstaben um, damit ein Vergleich moeglich ist }


FUNCTION Gross (zkette : String) :String;

VAR

      i: INTEGER; {Zaehlvariable für FOR-Schleife}

BEGIN

     FOR i:=1 TO length (zkette) DO

           IF (zkette[i]>='a') AND (zkette[i] <= 'z') THEN

                 zkette[i]:= Chr(Ord(zkette[i]) - 32);

              Gross:=zkette

END;








(******************************************************************************)


{Folgende Funktion dreht den gesammten String um, um ihn anschließend zu vergleichen}


FUNCTION umdrehen (zkette: STRING): String;


VAR

       verstring : String;         {veränderter String}

        i            : INTEGER; {Zählvariable für FOR-Schleife}


BEGIN

      verstring:=''; {String initialisieren}

                FOR i:=length (zkette) DOWNTO 1 DO

                     verstring := verstring + zkette[i];

               umdrehen:=verstring

END;


(******************************************************************************)


{Folgende Funktion Vergleicht die eingegebene Zeichenkette mit der ungedrehten, um festzustellen ob dieser ein Palindrom ist oder nicht .Sie gibt TRUE oder FALSE aus weil sie vom Typ BOOLEAN ist}


FUNCTION Vergleich (umdrehen, zkette: STRING): BOOLEAN;


BEGIN

               IF zkette = umdrehen THEN

        Vergleich:=TRUE

     ELSE

        Vergleich:=FALSE

        END;


(******************************************************************************)


{Beginn Hauptprogramm}


VAR

      zkette: STRING; {Eingegebene Zeichenkette}


BEGIN

    WriteLn (' Geben Sie die Zeichenkett ein, die Sie ueberpruefenwollen...');     

    {Abfrage STRING}

    ReadLn(zkette); {Einlesen STRING}

    {Aufruf der Funktionen}

     IF Vergleich(umdrehen(gross(Blanks(zkette))),(gross(Blanks(zkette)))) THEN

         WriteLn(zkette,' ist ein Palindrom.') {Ausgabe des Ergebnisses}

     ELSE

          WriteLn(zkette,' ist kein Palindrom.');

   ReadLn;

END.




nach oben