wörter umdrehen und palindrome finden in c?

...komplette Frage anzeigen

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
#include <ctype.h>
#include <stdlib.h>
#include <string.h>

int is_palindrome(const char *s) {
const size_t len = strlen(s);
const size_t limit = len / 2;

for (size_t i = 0; i < limit; ++i) {
if (tolower(s[i]) != tolower(s[len - i - 1])) {
return 0;
}
}

return 1;
}

Das sollte theoretisch auch Palindrome mit unterschiedlicher Groß- und Kleinschreibung finden. Zum Beispiel "Abba" oder "LESEesel" ... Habe jetzt aber keine Zeit zum testen ... hoffentlich sind keine Flüchtigkeitsfehler drin. ><

i=1;
int d;
d=a; //5
while (text[i]==text[d]){

Arrays fangen bei 0 an zu zählen, also i = 0 ;)

Ansonsten hilft es vielleicht auch, wenn du dir in der while-Schleife probeweise die Buchstabenpaare (also text[i] und text[d]) mit printf() ausgeben lässt.

Probiers mal aus, es funktioniert trotzdem nicht.

0

Ich lerne selber gerade erst C, daher kann ich dir nicht so wirklich helfen. Ich habe nur ein paar Ausgaben hinzugefügt und ein seltsames Ergebnis erhalten (siehe unten). Offenbar wird die Schleife, die die Eingabe des Textes liest, einmal ausgeführt, ohne dass ein Text eingegeben wurde und text[0] mit einem anderen Wert gefüllt als dem ersten Buchstaben.

#include <stdio.h>
#include <stdlib.h>

int main(){
//einlesen
printf("Geben Sie die Länge des Strings an: ");
int a;
scanf("%i", &a);
char text[a];
printf("Text eingeben:\n");
int i;
for (i = 0; i != a; i++) {
scanf("%c", &text[i]);
}
//umgekehrt ausgeben
int c;
c = a;
while (c > -1){
printf("text[%d] = %c\n", c, text[c]);
c--;
}
//Palindrom oder nicht
int count = 0;
i = 0;
int d;
d = a - 1; //4
while (text[i] == text[d]){
count ++;
i++;
d--;
}
if(count == a){
printf("palindrom");
}
return 0;
}

Ausgabe siehe Bild

Ausgabe - (Programm, programmieren, Programmierung)

Was möchtest Du wissen?