#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