42 lines
1.5 KiB
C
42 lines
1.5 KiB
C
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <ctype.h>
|
|
|
|
int is_palindrome(char *wort) ///Funktion, die prüft ob das Wort ein Palindrom ist oder nicht
|
|
{
|
|
int len = strlen(wort); ///hier wird die Länge des Wortes ermittelt
|
|
int i;
|
|
for (i = 0; i < len / 2; i++) ///Da Wort wird von außen nach innen verglichen: erster und letzter Buchstabe usw.
|
|
{
|
|
if (tolower(wort[i]) != tolower(wort[len - 1 - i])) ///prüft ob die Zeichen, die verglichen werden gleich oder ungleich sind
|
|
{ ///Groß- und Kleinschreibung wird außer Acht gelassen
|
|
return 0; ///Wort ist kein Palindrom sofort return 0
|
|
}
|
|
}
|
|
return 1; ///Wort ist ein Palindrom --> alle Zeichen waren gleich
|
|
}
|
|
|
|
int main()
|
|
{
|
|
char text[1001]; ///Index beginnt immer bei 1 deshalb 1001
|
|
char *teiler = " ,:"; ///Diese Zeichen gelten als Trennzeichen
|
|
char *token; ///Zeiger der dann später auf jedes Wort zeigt
|
|
|
|
printf("Geben Sie Zeilen ein:\n");
|
|
scanf("%1000[^\n]s",text);
|
|
|
|
token = strtok(text, teiler); ///teilt den Text beim ersten Trennzeichen und gibt das erste Wort zurück
|
|
|
|
while (token != NULL) ///Solange es noch weitere Wörter gibt...
|
|
{
|
|
if (is_palindrome(token) == 1) ///prüft man ob es ein Palindrom ist und wenn ja gibt man es wieder aus
|
|
{
|
|
printf("........ %s\n", token);
|
|
}
|
|
token = strtok(NULL, teiler); ///gehe zum nächsten Wort
|
|
}
|
|
|
|
|
|
return 0;
|
|
}
|