MINT üben

Was C++ ergänzt

Dreißig Übungen zu C++ — von cout und cin über string bis zu Referenzen.

Dein Fortschritt:
0 / 0 Aufgaben
1

Übungsaufgaben

Dreißig Übungen in gemischter Reihenfolge — du klickst, ziehst, ordnest, rechnest und knobelst. Jede Übung gibt dir sofort eine Rückmeldung, und zu jeder Aufgabe gibt es zwei gestufte Tipps: Der erste zeigt die Richtung, der zweite den entscheidenden Schritt. Die Chips zeigen das Anforderungsniveau: AFB I heißt wiedergeben und direkt anwenden, AFB II selbst entscheiden und verknüpfen, AFB III begründen, beurteilen oder eine Falle durchschauen. Aufgaben mit dem Chip Mix verbinden Wissen aus früheren Unterkapiteln, bei Trick steckt eine Falle drin. Fährst du über ein unterstrichenes Arbeitswort, siehst du, was es genau von dir verlangt.

A1
Einlesen mit cin und getline
AFB II

Werte die vier Fälle aus und trage ein, was nach dem Einlesen in s steht und was noch ungelesen ist. Gegeben ist string s;.

Setze für jede Zeile die Ausgänge: Klick auf ein Feld schaltet ? → Zustand 1 → Zustand 2 … weiter. Tastatur: Enter/Leertaste schaltet, Pfeiltasten wandern durch die Tabelle.
EingabeLesebefehlInhalt von snoch ungelesen
Adacin >> s
Ada Lovelacecin >> s
Ada Lovelacegetline(cin, s)
Adagetline(cin, s)
cin >> liest nur bis zum Leerzeichen, der Rest bleibt ungelesen. getline(cin, s) liest die ganze Zeile. Besteht die Eingabe nur aus einem Wort, verhalten sich beide gleich.
Ansatz: Entscheide zuerst, wie weit der jeweilige Befehl liest: bis zum Leerzeichen oder bis zum Zeilenende.
Weiter: Besteht die Eingabe nur aus einem Wort, bleibt in beiden Fällen nichts übrig.
A2
Wirkung von Änderungen
AFB II

Deute die Wirkung jeder Änderung und trage ein, ob die beiden Größen im Vergleich zum Ausgangsprogramm steigen, sinken oder gleich bleiben.

C++ · handy.cpp (Ausschnitt)
void lade(int &akku) { akku = akku + 20; }
// main: int handy = 30;  lade(handy);
Setze in jede Zelle einen Pfeil: ↑ steigt, ↓ sinkt, → bleibt gleich. Ein Klick dreht den Pfeil weiter; mit der Tastatur Tab zur Zelle, dann ↑, ↓ oder →. Unter der Tabelle steht deine Wahl als Satz.
Größe (Ausgang: handy = 50, Parameter ist eine Referenz)ohne &zweiter AufrufParameter umbenannt
handy in main
akku in der Funktion

Ohne & arbeitet lade mit einer Kopie: handy bleibt 30 statt 50, in der Funktion rechnet die Kopie weiter. Ein zweiter Aufruf erhöht handy auf 70. Der Name des Parameters ändert nichts.
Ansatz: Rechne den Ausgang durch: 30 + 20 ergibt 50.
Weiter: Ohne & arbeitet die Funktion mit einer Kopie; der Name eines Parameters ist egal.
A3
Strings zusammensetzen
AFB I
C++ · wort.cpp
string vor = "Mo", nach = "bil";
string s = vor + nach + "e";
cout << s.length() + nach.length() << endl;

Gib die Ausgabe an.

Überlege selbst und trage das Ergebnis ein — Enter prüft direkt.
s ist „Mobile“ mit 6 Zeichen, nach hat 3 Zeichen: 6 + 3 = 9. Das Endezeichen zählt length() nicht mit — wie strlen. Typischer Fehler: 10 oder 11, weil man wie bei sizeof ein '\0' dazuzählt.
Ansatz: Setze zuerst s zusammen und zähle dann die Zeichen.
Weiter: Mo + bil + e = Mobile.