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++
#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 ");
}
level is a palindrome
#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";
}
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 verwendet kleine prozedurale Funktionen und zeigt offen, wie Daten im Speicher dargestellt werden.
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