C/C++-Übungen für Einsteiger

Palindrome in C und C++ prüfen

In dieser Lektion prüfst du, ob ein Wort vorwärts und rückwärts gleich gelesen wird, indem du die symmetrischen Zeichen vergleichst.

Einführung

Ein Palindrom (palindrome) ist ein String, der sich nicht ändert, wenn man die Reihenfolge der Zeichen umkehrt, etwa "level" oder "radar". Zum Prüfen vergleicht man das erste mit dem letzten Zeichen, das zweite mit dem vorletzten und so weiter bis zur Mitte.

Wichtige Punkte

  • Schalte die Compiler-Warnungen (compiler warnings) ein und behebe alle.
  • Verstehe den Datentyp und die Lebensdauer (lifetime) jedes Werts genau.
  • Prüfe immer die Eingabedaten und die Grenzen von Array-Indizes.

Codebeispiele in C und C++

C
Code ausführen →
main.c
#include <stdio.h>
#include <string.h>
int main(void) {
    const char *text = "level"; size_t length = strlen(text); int palindrome = 1;
    // Compare characters mirrored around the center.
    for (size_t i = 0; i < length / 2; ++i)
        if (text[i] != text[length - 1 - i]) { palindrome = 0; break; }
    printf("%s is %sa palindrome\n", text, palindrome ? "" : "not ");
}
Ergebnis der Ausführung
level is a palindrome
C++
Code ausführen →
main.cpp
#include <algorithm>
#include <iostream>
#include <string>
int main() {
    std::string text = "level";
    // equal compares the first half with a reversed view.
    bool palindrome = std::equal(text.begin(), text.begin() + text.size() / 2, text.rbegin());
    std::cout << text << " is " << (palindrome ? "" : "not ") << "a palindrome\n";
}
Ergebnis der Ausführung
level is a palindrome

C und C++ im Vergleich

Die Schleife muss nur bis zur Mitte des Strings (length / 2) laufen, weil jedes symmetrische Zeichenpaar nur einmal geprüft werden muss. Das Zeichen text[i] wird mit text[length - 1 - i] verglichen. Sobald ein ungleiches Paar gefunden wird, steht fest, dass es kein Palindrom ist, und das Programm verlässt die Schleife mit break.

C

C verwendet kleine prozedurale Funktionen und zeigt offen, wie Daten im Speicher dargestellt werden.

C++

C++ erlaubt weiterhin Arbeit auf niedriger Ebene, ergänzt aber Bibliothekstypen und sicherere Abstraktionen.

Übungen zur Vertiefung

Führe beide Versionen aus und ändere dann den Code, um zu beobachten, welche Sicherheit jede Sprache bietet.

  • Teste ungültige Eingaben und Grenzwerte.
  • Kompiliere mit den Flags -Wall -Wextra -Wpedantic, um zusätzliche Warnungen einzuschalten.
  • Lagere gemeinsame Deklarationen in eine Header-Datei und die Implementierung in eine eigene Datei aus.

Mit einer Challenge üben

Nutze den Inhalt dieser Lektion, um ein echtes Problem zu lösen. Jede Challenge läuft im Browser, mit sofortigen Tests und einem KI-Review.

Alle Challenges