Info2/25.4.3.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;
}