(C-Programmieren) Palindrome erzeugen / ausgeben?
Hallo, kurze Frage. Wie schreibe ich ein Programm, welches ein Wort einliest, und daraus ein Palindrom macht und dieses wieder ausgibt? zB. wenn ich "AN" eingebe, dass es "ANNA" ausgibt, oder wenn ich "REIT" eingebe dass es "REITTIER" ausgibt. Irgendwelche Vorschläge? Vielen Dank im Voraus
4 Antworten
An welchem Schritt scheitert es denn am ehsten?
Die eigentliche Erzeugung des Palindrom kannst Du z.B. wie folgt gestalten:
Kopiere die Zeichen in eine neue Zeichenkette in aufsteigender Folge, um sie danach in absteigender Folge hineinzukopieren. Hierzu kannst du erst vorwärts und anschließend rückwärts über die Quellzeichenkette iterieren.
(Es geht natürlich je nach genauem Szenario auch schneller und besser, aber fürs algorithmische Verständnis ist diese Variante wohl am einfachsten.)
Z.B. so:
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]){
char wort[64];
printf("Hallo, i bims 1 Programm.\nGib mich 1 Wort vong Tastatur her: ");
scanf("%63s", wort);
int len = strlen(wort);
printf("%s", wort);
for(int i = 0, c; i < len/2; ++i){
c = wort[i];
wort[i] = wort[len-1-i];
wort[len-1-i] = c;
}
printf("%s", wort);
printf("\n");
}
a = input("Eingabe? ")
b = a[::-1]
print("Ergebnis: ", a+b)
Oder evtl. noch besser:
a = input("Eingabe? ")
b = a[::-1].lower()
print("Ergebnis: ", a+b)
- Lies die Eingabe in ein char-Array wort ein.
- Bestimme die Länge n von wort.
- Baue ein Array palindrom der Länge 2n , das aus den Zeichen wort[0], wort[1], ..., wort[n-1], wort[n-1], wort[n-2], ..., wort[0] (in dieser Reihenfolge) besteht.
Interessantes C, sieht fast aus wie Python. ;)