Rodex_ icon

Palindrome

Rodex_ | PRO | 06/14/17 07:42:47 PM UTC | 0 ⭐ | 217 👁️ | Never ⏰ | []
C |

1.58 KB

|

None

|

0 👍

/

0 👎

#include <stdio.h>
#include <string.h>
#include <ctype.h>
 
int main() {
    char sentence[41];
    char *pointer_start = &sentence[0];
    char *pointer_end;
 
    //Einlesen des Satzes und in Array schreiben.
    printf("Enter a message: ");
        fgets(sentence, 41, stdin);
 
    //Länge von Array in einen Integer speichern.
    int length = strlen(sentence);
 
    //Sämtliche Zeichen im Array werden auf Kleinschreiben geändert.
    for (int i = 0; i < strlen(sentence); ++i) {
        sentence[i] = tolower(sentence[i]);
    }
 
    pointer_end = &sentence[length];
 
    //Solange der pointer_end nicht auf einen Buchstaben zeigt bzw. ungleich pointer_start ist,
    // wird er runtergezählt.
    while (!(*pointer_end >= 'a' && *pointer_end <= 'z') && pointer_end != pointer_start) {
        pointer_end--;
    }
 
    //Die zwei pointer (pointer_start und pointer_end) werden schrittweise verglichen, solange die zwei
    //Integer Werte vom Pointer ungleich sind.
    while (*pointer_start == *pointer_end && pointer_end != pointer_start && *pointer_end != sentence[0]) {
        pointer_start++;
        pointer_end--;
        while (!(*pointer_start >= 'a' && *pointer_start <= 'z')) {
            pointer_start++;
        }
        while (!(*pointer_end >= 'a' && *pointer_end <= 'z')) {
            pointer_end--;
        }
    }
 
    //Ausgeben ob Palindrome oder nicht Palindrome.
    if (pointer_start == pointer_end || *pointer_end == sentence[0]) {
        printf("Palindrome");
    } else {
        printf("Not a palindrome");
    }
 
    return 0;
}

Comments