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

Vokale in einem String mit C und C++ zählen

In dieser Lektion zählst du die Vokale einer Textzeile und ignorierst dabei den Unterschied zwischen Groß- und Kleinbuchstaben.

Einführung

Beim Zählen von Vokalen kommen drei Fähigkeiten zusammen: jedes Zeichen des Strings durchlaufen, Zeichen in Kleinbuchstaben umwandeln und prüfen, ob ein Zeichen zu einer Menge gehört. Die Vokale im Englischen sind a, e, i, o und u.

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 <ctype.h>
#include <stdio.h>
#include <string.h>
int main(void) {
    const char *text = "Code Utility"; int count = 0;
    // strchr performs a compact membership check.
    for (; *text; ++text) if (strchr("aeiou", tolower((unsigned char)*text))) ++count;
    printf("vowels=%d\n", count);
}
Ergebnis der Ausführung
vowels=5
C++
Code ausführen →
main.cpp
#include <algorithm>
#include <cctype>
#include <iostream>
#include <string>
int main() {
    std::string text = "Code Utility";
    // count_if counts characters accepted by the predicate.
    auto vowels = std::count_if(text.begin(), text.end(), [](unsigned char c) {
        return std::string("aeiou").find(std::tolower(c)) != std::string::npos;
    });
    std::cout << "vowels=" << vowels << '\n';
}
Ergebnis der Ausführung
vowels=5

C und C++ im Vergleich

Die Funktion tolower wandelt jedes Zeichen in einen Kleinbuchstaben um, damit Groß- und Kleinbuchstaben gleich behandelt werden. Das Zeichen wird vorher in unsigned char umgewandelt, um Probleme mit Sonderzeichen zu vermeiden. Die Funktion strchr("aeiou", ...) liefert einen Zeiger ungleich NULL, wenn das Zeichen im Vokal-String vorkommt, dann wird der Zähler erhöht. Der String "Code Utility" hat 5 Vokale.

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