(C-Programmieren) Palindrome erzeugen / ausgeben?

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)
qugart  26.11.2019, 15:54

Oder evtl. noch besser:

a = input("Eingabe? ")
b = a[::-1].lower()
print("Ergebnis: ", a+b)
0
Isendrak  26.11.2019, 23:02

Interessantes C, sieht fast aus wie Python. ;)

0
qugart  27.11.2019, 16:41
@Isendrak

Hm....ich bin mir sicher gewesen, da wurde ursprünglich explizit nach Python gefragt.

0
  1. Lies die Eingabe in ein char-Array wort ein.
  2. Bestimme die Länge n von wort.
  3. 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.