27

C++ Das Übungsbuch - mitp.de · Einleitung Dieses Buch wendet sich an Leser, die ihre C++-Kenntnisse durch »Learning by Doing« vertiefen möchten. Es ist ideal, um sich im Stil

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: C++ Das Übungsbuch - mitp.de · Einleitung Dieses Buch wendet sich an Leser, die ihre C++-Kenntnisse durch »Learning by Doing« vertiefen möchten. Es ist ideal, um sich im Stil
Page 2: C++ Das Übungsbuch - mitp.de · Einleitung Dieses Buch wendet sich an Leser, die ihre C++-Kenntnisse durch »Learning by Doing« vertiefen möchten. Es ist ideal, um sich im Stil

Inhaltsverzeichnis

Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1 Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

Lösungen zu den Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . 19

Lösungen zu den Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2 Elementare Datentypen, Konstanten und Variablen . . . . . . . . . . . . . . 23

Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

Lösungen zu den Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . 28

Lösungen zu den Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3 Verwenden von Funktionen und Klassen . . . . . . . . . . . . . . . . . . . . . . 33

Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

Lösungen zu den Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . 40

Lösungen zu den Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

4 Ein- und Ausgaben mit Streams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

Lösungen zu den Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . 51

Lösungen zu den Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

5 Operatoren für elementare Datentypen . . . . . . . . . . . . . . . . . . . . . . . . 57

Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

Lösungen zu den Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . 63

Lösungen zu den Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

6 Kontrollstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

© des Titels »C++ Das Übungsbuch« (ISBN 9783958458024) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/802

Page 3: C++ Das Übungsbuch - mitp.de · Einleitung Dieses Buch wendet sich an Leser, die ihre C++-Kenntnisse durch »Learning by Doing« vertiefen möchten. Es ist ideal, um sich im Stil

Inhaltsverzeichnis

6

Lösungen zu den Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . 77

Lösungen zu den Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

7 Symbolische Konstanten und Makros . . . . . . . . . . . . . . . . . . . . . . . . . . 85

Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

Lösungen zu den Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . 92

Lösungen zu den Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

8 Umwandlung arithmetischer Datentypen . . . . . . . . . . . . . . . . . . . . . . 99

Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

Lösungen zu den Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . 106

Lösungen zu den Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

9 Die Standardklasse string . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

Lösungen zu den Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . 115

Lösungen zu den Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

10 Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

Lösungen zu den Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . 130

Lösungen zu den Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

11 Speicherklassen und Namensbereiche . . . . . . . . . . . . . . . . . . . . . . . . . 139

Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

Lösungen zu den Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . 147

Lösungen zu den Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

12 Referenzen und Zeiger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

Lösungen zu den Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . 165

Lösungen zu den Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

13 Definition von Klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

© des Titels »C++ Das Übungsbuch« (ISBN 9783958458024) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/802

Page 4: C++ Das Übungsbuch - mitp.de · Einleitung Dieses Buch wendet sich an Leser, die ihre C++-Kenntnisse durch »Learning by Doing« vertiefen möchten. Es ist ideal, um sich im Stil

Inhaltsverzeichnis

7

Lösungen zu den Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . 179

Lösungen zu den Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

14 Methoden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190

Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192

Lösungen zu den Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . 196

Lösungen zu den Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

15 Teilobjekte und statische Elemente . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207

Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208

Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210

Lösungen zu den Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . 215

Lösungen zu den Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216

16 Vektoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223

Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226

Lösungen zu den Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . 232

Lösungen zu den Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

17 Zeiger und Vektoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243

Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244

Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247

Lösungen zu den Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . 251

Lösungen zu den Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252

18 Grundlagen der Dateiverarbeitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259

Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260

Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262

Lösungen zu den Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . 266

Lösungen zu den Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

19 Operatoren überladen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283

Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284

Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286

Lösungen zu den Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . 293

Lösungen zu den Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294

20 Typumwandlung für Klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309

Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310

Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313

© des Titels »C++ Das Übungsbuch« (ISBN 9783958458024) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/802

Page 5: C++ Das Übungsbuch - mitp.de · Einleitung Dieses Buch wendet sich an Leser, die ihre C++-Kenntnisse durch »Learning by Doing« vertiefen möchten. Es ist ideal, um sich im Stil

Inhaltsverzeichnis

8

Lösungen zu den Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . 318

Lösungen zu den Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318

21 Speicherreservierung zur Laufzeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327

Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328

Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331

Lösungen zu den Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . 338

Lösungen zu den Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339

22 Dynamische Elemente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353

Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354

Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357

Lösungen zu den Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . 369

Lösungen zu den Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369

23 Vererbung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393

Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394

Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396

Lösungen zu den Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . 404

Lösungen zu den Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405

24 Typumwandlungen in Klassenhierarchien . . . . . . . . . . . . . . . . . . . . . . 429

Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430

Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434

Lösungen zu den Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . 438

Lösungen zu den Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438

25 Polymorphe Klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453

Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454

Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457

Lösungen zu den Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . 468

Lösungen zu den Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468

26 Abstrakte Klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493

Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494

Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497

Lösungen zu den Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . 502

Lösungen zu den Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503

© des Titels »C++ Das Übungsbuch« (ISBN 9783958458024) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/802

Page 6: C++ Das Übungsbuch - mitp.de · Einleitung Dieses Buch wendet sich an Leser, die ihre C++-Kenntnisse durch »Learning by Doing« vertiefen möchten. Es ist ideal, um sich im Stil

Inhaltsverzeichnis

9

27 Mehrfachvererbung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515

Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516

Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

Lösungen zu den Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . 524

Lösungen zu den Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525

28 Ausnahmebehandlung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541

Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542

Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544

Lösungen zu den Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . 549

Lösungen zu den Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550

29 Mehr über Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561

Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562

Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564

Lösungen zu den Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . 574

Lösungen zu den Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575

Stichwortverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599

© des Titels »C++ Das Übungsbuch« (ISBN 9783958458024) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/802

Page 7: C++ Das Übungsbuch - mitp.de · Einleitung Dieses Buch wendet sich an Leser, die ihre C++-Kenntnisse durch »Learning by Doing« vertiefen möchten. Es ist ideal, um sich im Stil

© des Titels »C++ Das Übungsbuch« (ISBN 9783958458024) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/802

Page 8: C++ Das Übungsbuch - mitp.de · Einleitung Dieses Buch wendet sich an Leser, die ihre C++-Kenntnisse durch »Learning by Doing« vertiefen möchten. Es ist ideal, um sich im Stil

Einleitung

Dieses Buch wendet sich an Leser, die ihre C++-Kenntnisse durch »Learning byDoing« vertiefen möchten. Es ist ideal, um sich im Stil eines Workshops auf Prü-fungen oder auf die Mitarbeit in einem C++-Projekt vorzubereiten.

Die Gliederung des Stoffs entspricht der des Buches »C++ Lernen und professio-nell anwenden«, das ab der 8. Auflage den neuesten C++-Standard von 2017 (kurzC++17) berücksichtigt. Neue Sprachelemente von C++17 sind in aktuellen Compi-lern noch nicht voll integriert und werden deshalb in diesem Buch mit (*) gekenn-zeichnet.

Aber es ist nicht wesentlich, wie Sie C++ gelernt haben. Jedes Kapitel beginnt miteiner Zusammenfassung des Stoffs, zu dem anschließend Fragen und Aufgabengestellt werden. Beispielsweise ist das Thema des 9. Kapitels »Die Standardklassestring«. Wenn Ihnen dann der Inhalt der Zusammenfassung zur string-Klassevertraut ist, sollten Sie auch ohne größere Probleme die anschließenden Fragenund Aufgaben lösen können.

Jedes Kapitel besteht neben der einführenden Beschreibung des Themas aus dreiweiteren Teilen: Verständnisfragen, Programmieraufgaben und den Musterlösun-gen zu allen Fragen und Aufgaben. Mit jeweils 20 Verständnisfragen können Sietesten, wie gut Sie sich in dem jeweiligen Themenbereich auskennen. Die Art derFragen sind entweder Ja-Nein-Fragen, Multiple-Choice-Fragen oder es muss eineAussage vervollständigt werden.

Im Aufgabenteil können Sie dann Ihr Wissen praktisch umsetzen. In jedem Kapitelgibt es mindestens zehn Aufgaben mit steigendem Schwierigkeitsgrad. Die Bear-beitung einfacher Aufgaben ist oft in wenigen Minuten erledigt. Dagegen kann dieLösung umfänglicher Aufgaben auch Tage in Anspruch nehmen. Dies gilt insbe-sondere bei Aufgaben zu den Themen »Dynamische Elemente«, »Vererbung« und»Polymorphie«. Umfangreichere Problemstellungen sind dabei oft auf mehrereAufgaben verteilt.

Bei der Auswahl der Problemstellungen für Aufgaben wurde stets darauf geachtet,dass sie typisch und praxisnah sind. Auf diese Weise lernen Sie viele interessanteAlgorithmen und Datenstrukturen kennen. Auch durch die eigenständige Imple-mentierung von »Iteratoren« und »Intelligenten Zeigern« vertiefen Sie Ihr Ver-ständnis für die Konzepte der Standardbibliothek. In jedem Fall verfügen Sie nach

© des Titels »C++ Das Übungsbuch« (ISBN 9783958458024) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/802

Page 9: C++ Das Übungsbuch - mitp.de · Einleitung Dieses Buch wendet sich an Leser, die ihre C++-Kenntnisse durch »Learning by Doing« vertiefen möchten. Es ist ideal, um sich im Stil

Einleitung

12

der Durcharbeitung des Buches über fundierte Programmiererfahrungen undeinen umfangreichen Fundus von Beispiel-Code.

Trotz ausfühlicher Aufgabenstellungen und vieler Hinweise kann es immer malvorkommen, dass man nicht zum Ziel kommt. Dann hilft ein Blick in die kommen-tierten Musterlösungen. Außerdem ist es sicher immer interessant, die eigeneLösung mit der im Buch zu vergleichen. Die Musterlösungen finden Sie auch imInternet unter http://www.mitp.de/802.

Dem Leser wünschen wir viele Erfolgserlebnisse beim Lösen der Übungen.

Ulla Kirch Peter [email protected] [email protected]

© des Titels »C++ Das Übungsbuch« (ISBN 9783958458024) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/802

Page 10: C++ Das Übungsbuch - mitp.de · Einleitung Dieses Buch wendet sich an Leser, die ihre C++-Kenntnisse durch »Learning by Doing« vertiefen möchten. Es ist ideal, um sich im Stil

Kapitel 1

Grundlagen

Dieses Kapitel umfasst grundlegende Fragen und Aufgaben zur Erstellung vonC++-Programmen. Hierzu zählen auch das

� Inkludieren von Header-Dateien Eine Header-Datei beinhaltet Informationen, die von einem C++-Programmverwendet werden. In der Header-Datei iostream beispielsweise sind Infor-mationen enthalten, die zur Ein-/Ausgabe von Daten erforderlich sind. EineHeader-Datei wird mit der #include-Direktive in ein Programm kopiert.

� Verwenden der using-DirektiveVordefinierte Namen, wie z.B. cout, gehören zum Namensbereich std. DieDirektive using namespace std; ermöglicht es, diese Namen ohne den Vor-satz std:: direkt zu verwenden.

� Formulieren von Anweisungen Eine Anweisung legt fest, was das Programm tun soll, und wird stets miteinem Semikolon abgeschlossen. Zur Ausgabe von Daten auf den Bildschirmwird in C++ der Stream cout verwendet, z.B. cout << "Hallo";

� Definieren einer main-FunktionDie erste Funktion, die in einem C++-Programm ausgeführt wird, ist stets diemain-Funktion. Die auszuführenden Anweisungen stehen im Funktions-block, d.h. innerhalb der Klammern { }. Bei Erreichen der return-Anweisungwird die Funktion verlassen.

� Kommentieren von QuelldateienKommentare dienen zur Dokumentation in einem Programm. Sie verbesserndie Lesbarkeit und können bei der Fehlersuche nützlich sein. Jede Zeichen-folge, die in /* ... */ eingeschlossen ist oder mit // beginnt, ist ein Kom-mentar. Der Compiler ignoriert Kommentare.

© des Titels »C++ Das Übungsbuch« (ISBN 9783958458024) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/802

Page 11: C++ Das Übungsbuch - mitp.de · Einleitung Dieses Buch wendet sich an Leser, die ihre C++-Kenntnisse durch »Learning by Doing« vertiefen möchten. Es ist ideal, um sich im Stil

Kapitel 1C++. Das Übungsbuch – Testfragen und Aufgaben mit Lösungen

14

Verständnisfragen

1.1 C++ ist eine rein objektorientierte Sprache.

[_] Richtig [_] Falsch

1.2 Die umfangreiche in C entwickelte Software kann auch in C++-Programmenverwendet werden.

[_] Richtig [_] Falsch

1.3 Eine Quelldatei wird zur Übersetzung an den _____________ übergeben.

1.4 Der ___________ bindet eine Objektdatei mit anderen Modulen zu einer aus-führbaren Datei.

1.5 Die gebräuchlichsten Endungen im Namen von Quelldateien sind

a) .c b) .cpp c) .cc

1.6 Standardisierte Funktionen und Klassen sind in der ____________________enthalten.

1.7 Bei der Suche nach Fehlern in einem C++-Programm beginnen Sie immermit

a) dem letzten vom Compiler angezeigten Fehler.

b) irgendeinem angezeigten Fehler.

c) dem ersten angezeigten Fehler.

1.8 Eine Warnung kann einen

a) Syntaxfehler anzeigen.

b) logischen Fehler anzeigen.

c) Laufzeitfehler anzeigen.

1.9 Jedes C++-Programm enthält die Funktion __________.

1.10 In einem C++ Programm bedeutet das Doppelkreuz # am Anfang einer Zeile,dass diese Zeile für

a) den Compiler bestimmt ist.

b) den Präprozessor bestimmt ist.

c) die Header-Datei bestimmt ist.

1.11 Vordefinierte Namen der C++-Standardbibliothek befinden sich im Namens-bereich ________.

© des Titels »C++ Das Übungsbuch« (ISBN 9783958458024) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/802

Page 12: C++ Das Übungsbuch - mitp.de · Einleitung Dieses Buch wendet sich an Leser, die ihre C++-Kenntnisse durch »Learning by Doing« vertiefen möchten. Es ist ideal, um sich im Stil

Grundlagen

15

1.12 Die Programmausführung beginnt (abgesehen von der Initialisierung globa-ler Objekte) mit

a) der ersten #include-Direktive.

b) der ersten Anweisung in der Funktion main().

c) der zuerst definierten Funktion.

1.13 Der Name cout bezeichnet ein Objekt, das zuständig ist für

a) Eingaben.

b) den Programmstart.

c) Ausgaben.

1.14 In der Funktion main() bewirkt die Anweisung

a) das Verlassen von main().

b) die Beendigung des Programms.

c) die Rückgabe des Exitcode 0 an das aufrufende Programm.

1.15 Die kürzeste Anweisung besteht aus _______________.

1.16 C++-Funktionen müssen in einer bestimmten Reihenfolge definiert werden.

[_] Richtig [_] Falsch

1.17 Die erste Funktion, die in einer Quelldatei definiert wird, ist stets die Funk-tion main().

[_] Richtig [_] Falsch

1.18 Die Anweisungen, die in der Funktion main() ausgeführt werden, stehen im

__________________________.

1.19 Zeichenfolgen werden als Kommentare interpretiert, wenn sie

a) mit /* beginnen.

b) in /* */ eingeschlossen sind.

c) mit // beginnen.

1.20 In einer Zeile können mehrere Präprozessor-Direktiven angeführt werden.

[_] Richtig [_] Falsch

return 0;

© des Titels »C++ Das Übungsbuch« (ISBN 9783958458024) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/802

Page 13: C++ Das Übungsbuch - mitp.de · Einleitung Dieses Buch wendet sich an Leser, die ihre C++-Kenntnisse durch »Learning by Doing« vertiefen möchten. Es ist ideal, um sich im Stil

Kapitel 1C++. Das Übungsbuch – Testfragen und Aufgaben mit Lösungen

16

Aufgaben

1.1 Was gibt das folgende Programm auf dem Bildschirm aus?

1.2 Formulieren Sie die entsprechenden Anweisungen, um

a) beginnend bei der aktuellen Cursorposition auszugeben.

b) am Anfang der nächsten Zeile auszugeben.

1.3 Jedes der folgenden Programme enthält einen Fehler. Bestimmen und korri-gieren Sie jeden Fehler.

a)

b)

#include <iostream>

using namespace std;

int main()

{

cout << "Hi Leute, ";

cout << endl;

cout << "was habt Ihr heute noch vor";

cout << "?" << endl;

return 0;

}

Mir geht's gut!

#include <iostream>

int main()

{ // Und jetzt kommt der berühmteste Spruch

// aus der Welt der Programmiersprachen:

cout << "Hello, World!" << endl;

return 0;

}

#include <iostream>

using namespace std;

int main()

{

cout >> "Hello, World!" >> endl;

}

© des Titels »C++ Das Übungsbuch« (ISBN 9783958458024) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/802

Page 14: C++ Das Übungsbuch - mitp.de · Einleitung Dieses Buch wendet sich an Leser, die ihre C++-Kenntnisse durch »Learning by Doing« vertiefen möchten. Es ist ideal, um sich im Stil

Grundlagen

17

c)

d)

1.4 Schreiben Sie ein C++-Programm, das Ihren Namen, Ihre Adresse, Telefon-nummer und E-Mail-Adresse in je einer Zeile auf dem Bildschirm ausgibt.

1.5 Fügen Sie Kommentare in die Lösung zur Aufgabe 1.4 ein, und zwar einenProgrammnamen, den Namen des Programmierers sowie eine Beschrei-bung, was das Programm macht.

1.6 Schreiben Sie ein C++-Programm, das folgendes Menü ausgibt:

#include <iostream>

using namespace std;

int main()

{

/ Wer zum Teufel hat das gesagt? /

cout << "Hello, World!" << endl;

return 0;

}

#include <iostream>

using namespace std;

int main()

{

cout << "Hallo, Universum! ";

<< endl;

return 0;

}

******** Telefonverzeichnis ********

E = Neuen Eintrag einfügen

L = Eintrag löschen

S = Telefonnummer suchen

A = Alle Einträge anzeigen

B = Programm beenden

Ihre Wahl:

© des Titels »C++ Das Übungsbuch« (ISBN 9783958458024) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/802

Page 15: C++ Das Übungsbuch - mitp.de · Einleitung Dieses Buch wendet sich an Leser, die ihre C++-Kenntnisse durch »Learning by Doing« vertiefen möchten. Es ist ideal, um sich im Stil

Kapitel 1C++. Das Übungsbuch – Testfragen und Aufgaben mit Lösungen

18

1.7 Sind die folgenden C++-Programme vollständig und fehlerfrei?

a)

b)

c)

1.8 Angenommen, die folgenden Anweisungen befinden sich in einer main-Funktion. Was ist falsch?

a) cout >> "Weiter mit <return>" >> endl;

b) return "Alles klar!";

c) cout "<< Geben Sie eine Zahl ein: <<" endl;

1.9 Verfolgen Sie den Ablauf des folgenden C++-Programms und beschreibenSie, was auf dem Bildschirm ausgegeben wird.

int main()

{

return 0;

}

include <iostream>

using namespace std;

int main()

{

cout << "Hey, los!" << return 0;

}

#include <iostream>

using namespace std;

int main(

){

cout <<

"Das wär's für heute!" << endl; return 0

;}

#include <iostream>

using namespace std;

void star1(), star2(), star3();

int main()

{

© des Titels »C++ Das Übungsbuch« (ISBN 9783958458024) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/802

Page 16: C++ Das Übungsbuch - mitp.de · Einleitung Dieses Buch wendet sich an Leser, die ihre C++-Kenntnisse durch »Learning by Doing« vertiefen möchten. Es ist ideal, um sich im Stil

Grundlagen

19

1.10 Ändern Sie die main-Funktion aus der letzten Aufgabe so, dass folgende Gra-fik ausgegeben wird:

Fügen Sie außerdem Kommentare in den Quellcode ein und erklären Sie,was das Programm macht.

Lösungen zu den Verständnisfragen

1.1 Falsch (C++ ist eine Erweiterung der prozeduralen Programmiersprache C.)

1.2 Richtig

1.3 Compiler

1.4 Linker

1.5 b) und c)

1.6 C++-Standardbibliothek

1.7 c)

1.8 b)

1.9 main()

1.10 b)

star1();

star2();

star3();

star2();

star1();

return 0;

}

void star1() { cout << "****" << endl; }

void star2() { cout << "********" << endl; }

void star3() { cout << "************" << endl; }

************

********

****

********

************

© des Titels »C++ Das Übungsbuch« (ISBN 9783958458024) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/802

Page 17: C++ Das Übungsbuch - mitp.de · Einleitung Dieses Buch wendet sich an Leser, die ihre C++-Kenntnisse durch »Learning by Doing« vertiefen möchten. Es ist ideal, um sich im Stil

Kapitel 1C++. Das Übungsbuch – Testfragen und Aufgaben mit Lösungen

20

1.11 std

1.12 b)

1.13 c)

1.14 a), b) und c)

1.15 einem Semikolon

1.16 Falsch

1.17 Falsch

1.18 Funktionsblock

1.19 b) und c)

1.20 Falsch

Lösungen zu den Aufgaben

1.1

1.2

1.3 a) Hinter der Direktive #include <iostream> fehlt in einer neuen Zeile:

Alternativ kann auch std::cout und std::endl verwendet werden.

b) Statt >> ist der Operator << zu verwenden. Die abschließende Anweisungreturn 0; darf fehlen. Sie wird dann vom Compiler eingefügt.

c) Innerhalb der main()-Funktion ist der Kommentar syntaktisch nicht kor-rekt. Richtig wäre beispielsweise:

d) In der ersten Zeile im Rumpf der main()-Funktion muss das Semikolonentfernt werden.

Hi Leute,

was habt Ihr heute noch vor?

cout << "Mir geht's gut!";

cout << endl << "Mir geht's gut!";

(oder: cout << "\nMir geht's gut!"; )

using namespace std;

// Wer zum Teufel hat das gesagt?

/* Wer zum Teufel hat das gesagt? */

© des Titels »C++ Das Übungsbuch« (ISBN 9783958458024) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/802

Page 18: C++ Das Übungsbuch - mitp.de · Einleitung Dieses Buch wendet sich an Leser, die ihre C++-Kenntnisse durch »Learning by Doing« vertiefen möchten. Es ist ideal, um sich im Stil

Grundlagen

21

1.4

1.5

1.6

#include <iostream>

using namespace std;

int main()

{

cout << "Sarah Miller" << endl

<< "Karenstr. 123 " << endl

<< "80123 München" << endl

<< "Tel. (089) 6543210" << endl

<< "[email protected]" << endl;

return 0;

}

// ----------------------------------------------------

// Programmname: ex01_05.cpp

// Autor: Sarah Miller

// Das Programm gibt einen Namen, eine Adresse, eine

// Tel.-Nr. und eine E-Mail-Adresse auf dem Bildschirm aus.

// ----------------------------------------------------

#include <iostream>

using namespace std;

int main()

{

// Wie in der Lösung zur Aufgabe 1.4.

}

// ----------------------------------------------------

// ex01_06.cpp

// Gibt ein Menü für ein Telefonverzeichnis aus.

// -----------------------------------------------------#include <iostream>

using namespace std;

int main()

{

cout << "******** Telefonverzeichnis ********"

<< endl << endl;

cout << " E = Neuen Eintrag einfuegen" << endl;

cout << " L = Eintrag loeschen" << endl;

cout << " S = Telefonnummer suchen" << endl;

cout << " A = Alle Eintraege anzeigen" << endl;

cout << " B = Programm verlassen" << endl

<< endl;

© des Titels »C++ Das Übungsbuch« (ISBN 9783958458024) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/802

Page 19: C++ Das Übungsbuch - mitp.de · Einleitung Dieses Buch wendet sich an Leser, die ihre C++-Kenntnisse durch »Learning by Doing« vertiefen möchten. Es ist ideal, um sich im Stil

Kapitel 1C++. Das Übungsbuch – Testfragen und Aufgaben mit Lösungen

22

1.7 a) Das Programm tut zwar nichts, der Quellcode ist aber fehlerfrei und voll-ständig.

b) Im Quellcode liegen zwei Fehler vor:

1. Das Zeichen # fehlt vor include.

2. return 0; muss als separate Anweisung angeführt werden, d.h. nichtals Teil der Anweisung cout << ....;.

c) Der Quellcode ist fehlerfrei und vollständig, aber schlecht lesbar.

1.8 a) Anstelle von >> ist das Symbol << zu verwenden, um den Text in denAusgabestrom einzufügen.

b) Bei dem Return-Wert der main-Funktion muss es sich um eine Ganzzahlhandeln.

c) Die Symbole << müssen sich außerhalb des Strings "Geben Sie eineZahl ein: " befinden.

1.9

1.10

cout << "Ihre Wahl: ";

cout << endl;

return 0;

}

****

********

************

********

****

// ----------------------------------------------------

// ex01_10.cpp

// Modifizierung des Programms aus Aufgabe 1.9.

// ----------------------------------------------------

int main()

{

star3(); // Gibt 3*4 = 12 Sterne aus.

star2(); // Gibt 2*4 = 8 Sterne aus.

star1(); // Gibt 4 Sterne aus.

star2(); // Gibt 8 Sterne aus.

star3(); // Gibt 12 Sterne aus.

return 0;

}

© des Titels »C++ Das Übungsbuch« (ISBN 9783958458024) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/802

Page 20: C++ Das Übungsbuch - mitp.de · Einleitung Dieses Buch wendet sich an Leser, die ihre C++-Kenntnisse durch »Learning by Doing« vertiefen möchten. Es ist ideal, um sich im Stil

Stichwortverzeichnis

Symbole#define 85#ifdef 85#ifndef 85#include 13, 33#undef 85=default 189=delete 189

AAbleitung 393

mehrfache 515Absolutbetrag

komplexer Zahl 291Abstand

Punkte- 461Addition

Polynom 359von Zeigern 243

Address 401Adresse 157

Vektorelement 243Adressoperator 157Algorithmus

Boyer-Moore 335Euklid 130Kongruenzmethode 144Quick-Sort 366Tree-Sort 366

Aliasname 157Analyse

objektorientierte 171Anker 461Anweisung 13

break 69catch 541continue 69do-while 69for 69goto 69if-else 69return 13, 124switch 69throw 541while 69

Argument 33Default- 123Objekt 189

argv 243Array 223ASCII

-Code 27assert.h 90assert() 90assoziativ

Vektor 292at() 109atof() 251Aufräumarbeit 189Aufruf

Funktions- 33, 124Aufrufumgebung 541Aufzählung 207, 214Ausdruck 57Ausgabe

formatierte 45unformatierte 47

Ausnahmebehandlung 541Auswahloperator 69AutoPtr 361

Bback() 465bad_cast 453Bad-Character shift 337Basis

Zahlensystem 45Basisinitialisierer 393, 515Basisklasse 393, 515

mehrfache indirekte 515virtuelle 515

Basisklassenzeiger 429, 431, 453Baum

binärer 362durchlaufen 365-Ebene 364Höhe 364Lücke 365

Bedingung 62, 69

bedingungsfrei 69begin() 465Bereichsoperator 139, 393, 515Bereichsprüfung 333Bezeichner 142Beziehung

Hat- 394Ist- 393

BibliothekStandard- 33

Bild 464binär 283

Baum 362Operator 57Suchbaum 363Ziffernfolge 75

Binärmodus 261Bindung

dynamische 453, 456statisch 456

Binomialkoeffizient 229Blank 25, 114Blatt 362Block 69bool 57Boyer, R.S. 335break 69Brief 401Buchstabe

Groß/Klein- 126

CC

Header-Datei 33Kompatibilität 171

C++Standardbibliothek 33

C++17 11Call

by Reference 157, 189by Value 189

Call by Reference 123Call by Value 123cassert 90

© des Titels »C++ Das Übungsbuch« (ISBN 9783958458024) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/802

Page 21: C++ Das Übungsbuch - mitp.de · Einleitung Dieses Buch wendet sich an Leser, die ihre C++-Kenntnisse durch »Learning by Doing« vertiefen möchten. Es ist ideal, um sich im Stil

Stichwortverzeichnis

600

CastDown- 429, 453dynamic- 429Operator 429static- 429Typ- 99Up- 429

catch-Block 541cctype 85ceil() 39Celsius 61char16_t 23char32_t 23cin 45Circle 462class 171clear() 466Client 499climits 49, 335close() 259Code 262

ASCII- 27Exit- 262

Compilierungbedingte 85, 88

Complex 290, 317const

Datenelement 207Methode 191Parameter 243

const_iterator 465continue 69cos() 37Cosinus 37cout 13, 15, 25, 35, 45cstdlib 177, 251C-String 223, 225cstring 223ctime 145, 522ctime() 522ctype.h 400Customer 264CustomerFile 264

DDarstellung

binär 75dezimal 75hexadezimal 23, 45oktal 23Potenz- 115

Data 435Datei 259

einlesen 263, 290

Header- 33mischen 266öffnen 259-Position 260schließen 259schreiben 263, 290

Dateizugriff 260Datenabstraktion 393Datenelement 33

dynamisches 353konstantes 207statisches 207

Datenkapselung 283Datentyp 23, 24

const_iterator 465Hierarchie 99iterator 465list 465time_t 404

DayTime 315dec 45Default

-Argument 123-Destruktor 189-Konstruktor 190, 515-Methode 356

DefinitionFunktions- 123Klassen- 171Methode 172Objekt- 171String- 39Union 171Variable 23, 25Vektor 223, 227

Deklaration 140extern 139, 140friend 283Funktions- 33using 139, 141

Dekrementoperator 58delete 327, 453Dereferenzieren 157Destruktor 189

virtuell 453, 455dezimal 23Dezimalzahl 48Differenz 57, 126

komplexer Zahlen 290Zeiger 243

DimensionVektor- 223

Direktive#define 85

#include 13, 33#undef 85using 13, 139

Division 57Polynom 359

Divisionsrest 163Dokumentation 13Dollar 214Doppelkreuz 14double 23do-while 69Down-Cast 429, 453

sicherer 435, 453Dreieck

Pascal’sches 229Durchlauf

sequentieller 464Durchschnitt 60, 144, 227, 251dynamic_cast<> 429, 453dynamisch

Bindung 456Speicher 327Vektor 330

EEbene 364Eigenschaft 171, 175Eingabe

formatierte 45unformatierte 47

Einheitimaginäre 290

Einheitswürfel 195Element

Klassen- 171private 171protected 396public 171redefiniertes 393

Elementfunktion 171Elementinitialisierer 207Ellipse 462Elternknoten 362empty() 465end() 465Entfernungstabelle 335enum 207eof 259eof() 259erase 109erase() 111, 466Eratosthenes

Sieb des 568

© des Titels »C++ Das Übungsbuch« (ISBN 9783958458024) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/802

Page 22: C++ Das Übungsbuch - mitp.de · Einleitung Dieses Buch wendet sich an Leser, die ihre C++-Kenntnisse durch »Learning by Doing« vertiefen möchten. Es ist ideal, um sich im Stil

Stichwortverzeichnis

601

Eröffnungsmodus 259, 261Ersatztext 86Erweiterung

Ganzzahl 99Escape-Sequenz 23, 25Euklid 130Exception 109

auslösen 541bad_cast 453Deklaration 541-Handler 541

exceptionStandardfehlerklasse

543, 546exception handling 541Exit-Code 262explicit 309explizit

Typumwandlung 99exponentiell

Notation 23, 45extern 139, 140

FFähigkeit

von Klassen 171Fahrenheit 60fail() 259false 23, 57Farbe 195Fehler

Dateizugriff 259-Flags 47

Fehlerbehandlung 541Fehlerklasse 541Fehlermeldung 33Fehlerobjekt 541Fehlersuche 13, 14Feldbreite 45, 47Festpunkt-Notation 46Festpunktzahl 45Fibonaccizahl 130Figur

zweidimensionale 460Filterprogramm 85find() 109, 114, 162fixed 45Fläche

Kreis- 146Flächeninhalt

Quadrat 27Flag

Fehler- 47Formatierungs- 45

Öffnungsmodus 259Status- 259

float 23FloatULong 178floor() 127fmod() 164for 69, 71Formatierung

-Flags 46Freund 363friend

Funktion 283Klasse 283

front() 465fstream 259Füllzeichen 45Funktion

Aufruf 38, 124-Block 123Deklaration 33friend- 283inline 123, 125Konvertierungs- 309-Kopf 123main() 27Operator 283rekursiv 123, 126Speicherklasse 139static- 139überladen 123, 128Zeigerversion 243

fußgesteuert 69

GGanzzahl 25, 46

-Erweiterung 99Garbarge Collector 327Geldbetrag

runden 214Geldbörse 286Geldstück 176Geldwechsel 214Geltungsbereich 207Genauigkeit 24, 45Generator

Zufallszahlen- 145geometrisch 248get() 48, 259getline() 48, 259, 437Gleitpunktdarstellung 49Gleitpunkttyp 23Gleitpunktzahl 23, 37, 45, 49

runden 106

global 25, 35, 139Operatorfunktion 283

Good-Suffix Shift 337goto 69, 73Grad

Polynom 248, 358Grenzwert 26Groß-/Kleinbuchstabe 126Groß-/Kleinschreibung 23

HHalbachse 463Handler

Exception- 541New- 329

Handy 193Hanoi 230Hat-Beziehung 208, 394Header-Datei 13, 33, 49, 109

assert.h 90cassert 90cctype 85climits 49, 335cstdlib 177, 251cstring 223ctime 145ctype.h 400fstream 260iostream 13list 464math.h 164stdlib.h 177string 109time.h 145typeinfo 459

hex 45Hexadezimalzahl 47, 48Hierarchie

Datentyp 99Hochkomma 23Höhe

Baum 364Rechteck 463Zylinder 127

Horner-Schema 115, 248, 359

Iif-else 69ifstream 259imaginär 290Imaginärteil 290implizit

Typumwandlung 99

© des Titels »C++ Das Übungsbuch« (ISBN 9783958458024) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/802

Page 23: C++ Das Übungsbuch - mitp.de · Einleitung Dieses Buch wendet sich an Leser, die ihre C++-Kenntnisse durch »Learning by Doing« vertiefen möchten. Es ist ideal, um sich im Stil

Stichwortverzeichnis

602

ImportNamesbereich 142

Index 109, 112, 223, 224Indexoperator 109, 289

überladen 292inhomogen 464Initialisierung

Liste 327Teilobjekte SieheVariablen- 23, 25Vektor 223

Inkrementoperator 58inline 125

-Methode 189insert() 109, 466Instanz 35IntArr 333, 357intelligent 361Interface

öffentliches 364Invertieren

String 163ios 45, 259iostream 35isalpha() 85iscntrl() 91isdigit() 85islower() 85ISO-Standard 11isspace() 400Ist-Beziehung 393istream 45isupper() 85iterativ 364Iterator 360, 464iterator 465

JJob 333JobList 335

Kkartesisch 178, 288Keim 144, 177Kette

else-if 69Kindknoten 362Klammer 57Klasse 33, 290, 335

abgeleitete 393abstrakte 493Address 401AutoPtr 361

Basis- 393Circle 398, 462Complex 317Customer 264Data 435DayTime 315definieren 171Ellipse 462Email 547friend 283IntArr 333, 357Iterator 360Job 333JobList 335konkrete 493KundenService 523Letter 402Line 462LongArr 354Mail 401MailService 402MeasureArr 354mehrfach vererben 515MobilePhone 193, 213,

250MoneyChanger 214MyData 436, 460MyString 400NameValueArr 292Node 363PackedFood 499Pair 313, 316Parcel 402PhoneCall 521PiggyBank 176, 194Player 177Point 461Point3D 288, 313Polygon 462Polyline 461polymorph 453Polynomial 358PrioQueue 501Product 499Random 177, 193Rectangle 399, 462RGB_Color 195, 215RGB-Color 195SearchTree 363Shape2D 398ShapePtrList 464Square 399StringMatching 336TimeStamp 522

TowersOfHanoi 230TraceParcel 403UnpackedFood 499Wallet 286

Klasse siehe auch Standard-klasseKlasse.Point2D 314Klassen-Array 223Klassenhierarchie 396, 403, 429Klassenvariable 207Kloster 231Knoten 362

einfügen 364innerer 362löschen 366

Kommandozeile 243, 251Kommentar 13, 17komplex 290Komprimieren

Vektor 333Kongruenzmethode 144Konstante 24

klassenspezifische 207numerische 23String- 23symbolische 85

Konstruktor 189, 190Default- 190Konvertierungs- 309Kopier- 353Move- 353

Kontrollstruktur 69Konvertierung

Datentyp 99-Funktion 309in Klassenhierarchien

429-Konstruktor 309

Konvertierung siehe Typum-wandlungKoordinaten

kartesische 288zweidimensionale 314

Koordinatensystemkartesisches 178

Kopieflache 466tiefe 353

Kopierkonstruktor 353Kredit 61Kreis 127, 146, 463kubisch 128Kugel 90

© des Titels »C++ Das Übungsbuch« (ISBN 9783958458024) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/802

Page 24: C++ Das Übungsbuch - mitp.de · Einleitung Dieses Buch wendet sich an Leser, die ihre C++-Kenntnisse durch »Learning by Doing« vertiefen möchten. Es ist ideal, um sich im Stil

Stichwortverzeichnis

603

LLänge

String- 36, 110Laufbedingung 69Laufzeit

Algorithmen 366Typinformation 453

left 45length() 109Letter 402Line 462linear

Polynom 128Linie 463Linienzug 463list 464Liste

inhomogene 464Initialisierung 223konstante 465sortierte 500verkettete 330, 464

list-Klasse 465Literal 23

String- 109logic_error 543lokal 35, 139long double 23long long 23LONG_MAX 62LONG_MIN 62LongArr 355LRN-Schema 365

MMail 401MailService 402main() 27Makro 85, 123Manipulator 45, 46Marke 69Maschinencode 123, 172Matrix 223, 228, 245Maximum 227MeasureArr 354Median 77, 127Mehrdeutigkeit

bei Mehrfachvererbung 515

bei Typumwandlungen 309

Mehrfach-Inkludierung 85

Mehrfachvererbung 515Mehrfachzuweisung 57Memory Leaks 361Menü 17merge() 250Methode 33, 171, 189

aktivieren 189const 191deaktivieren 189Default- 356Definition 172inline 189Read-Only 189rein virtuelle 493statische 210virtuell 453

Methodentabellevirtuell 456, 493

Minimum 69, 227Minute 61, 165Mischen

sortierter Vektoren 249von Dateien 266

Mittelarithmetisches 60, 144,

227, 251geometrisches 128, 248

MobilePhone 193, 213, 250Modul 14Modulodivision 57, 130Modus

Binär- 261Eröffnungs- 259

Mönch 231MoneyChanger 214Moore, J.S. 335Move

-Konstruktor 353-Zuweisung 353

Multiplikation 57Polynom 359

Münzen 176, 286Murphy 27, 43MyData 436, 460MyString 400

NNachfolger 362Name 13, 25

Alias- 157Header-Datei 33Programm- 243Variablen- 23

Namensbereich 14, 35, 139, 141

verschachteln 142namespace 13NameValue 292NameValueArr 292new 327New-Handler 329Newline 25, 114NLR-Schema 366Node 363Norm

komplexer Zahl 291noshowpos 45Notation

exponentielle 45, 49nouppercase 45npos 162NULL 251

OOberfläche

Kugel 90Objekt 33, 35, 171

-Adresse 157aktuelles 189Auf-/Abbau 393definieren 171global 139, 140konstantes 189Konvertierung 309lokal 139persistentes 259Speicherklasse 139statisches 140Teil- 207

Objektdatei 14objektorientiert 14

Analyse 171oct 45Öffnen

Datei 259ofstream 259oktal 23OOP 393open() 259Operand 57Operator 57, 429

Adress- 157arithmetischer 57Bereichs- 139binär 283Cast- 99, 429delete 327, 453

© des Titels »C++ Das Übungsbuch« (ISBN 9783958458024) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/802

Page 25: C++ Das Übungsbuch - mitp.de · Einleitung Dieses Buch wendet sich an Leser, die ihre C++-Kenntnisse durch »Learning by Doing« vertiefen möchten. Es ist ideal, um sich im Stil

Stichwortverzeichnis

604

dynamic_cast<> 453-Funktion 283Index 109, 289logischer 57new 327Pfeil- 173Präfix- 286Punkt- 173sizeof() 224-Symbol 283typeid() 453überladen 283unär 283Vergleichs- 57Verweis- 157virtueller 493Zuweisung- 57, 173

operatorSchlüsselwort 283

Operatorfunktionvirtuelle 493

ostream 45, 46

PPaar 113, 292Pair 313, 316Paket 401Parameter 33

const 243Makro- 85Zeiger 243

Parcel 402Pascal 229permanent 139Persistenz

von Objekt 259Pfeiloperator 173Pi 90PiggyBank 176, 194Player 177Point 178, 461Point2D 314Point3D 288, 313Pointer

Smart 361, 466Polygon 462, 463Polyline 461Polymorphie 453Polynom 248

auswerten 359kubisches 128lineares 128, 129n-ten Grades 248, 358quadratisches 129

Polynomial 358pop_back() 466pop_front() 466Position 111

Datei- 260Potenz 129Potenzdarstellung 115Präfix

Operator 286Präprozessor 85Primzahl 127, 568Priorität 57Priority Queue 500private 393Produkt

komplexer Zahlen 291Skalar- 289

Programm-Dokumentation 13-Erstellung 13-Name 243

Programmierungmodulare 144

protected 393, 396-Element 396

Prototyp 33, 36, 124Proxy 499Prüfungsergebnis 289Pseudo-Zufallszahlen 144, 177, 193public 171, 393Punkt 33

dreidimensionaler 288zweidimensionaler 178,

314Punktestand 177Punktoperator 173push_back() 465push_front() 465put() 259

QQuadrat 27, 75Quelldatei 14, 124, 144Queue 334Quick-Sort Algorithmus 366Quotient

komplexer Zahlen 291quotient 163

RRadius

Kreis 127rand() 177

Random 177, 193Ratenzahlung 61Raum

dreidimensionaler 288zweidimenionaler 314

read() 259Read-Only

-Methode 189Referenz 157Zeiger 243

Realteil 290Rechteck 463Rectangle 399, 462Redefinition

Element- 393Referenz 157, 158

auf Basisklasse 429, 493

Read-Only 157-Typ 157

rein virtuell 493rekursiv 123

Funktion 126replace() 109, 114, 162reserve() 163return 13Return-Wert

Objekt 189Zeiger 243

rfind() 109, 114RGB_Color 195, 215RGB-Einheitswürfel 195right 45RTTI 459Rückgabe 189Runden

Geldbetrag 214Gleitpunktzahl 106

runtime_error 543Run-Time-Type-Informati-on 459

SSchachteln

Fehlerbehandlung 541if-else 69

Schaltjahr 63Schema

Horner 115, 359LRN 365

Schleife 69Schleifenkopf 69Schließen

Datei 259

© des Titels »C++ Das Übungsbuch« (ISBN 9783958458024) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/802

Page 26: C++ Das Übungsbuch - mitp.de · Einleitung Dieses Buch wendet sich an Leser, die ihre C++-Kenntnisse durch »Learning by Doing« vertiefen möchten. Es ist ideal, um sich im Stil

Stichwortverzeichnis

605

Schlüssel 363Schlüsselwort 23Schnittstelle 172

Klassen 172öffentliche 393

scientific 45SearchTree 363Seiteneffekt 123Sekunde 61, 165Semikolon 13sequentiell

Durchlauf 464Sequenz

-Escape 23setfill() 45setprecision() 45setw() 45Shape 461Shape2D 398ShapePtrList 464Shift

Bad-Character 337Good-Suffix- 337

showpos 45Sieb

Eratosthenes- 568Signatur 123, 125, 454

von Konstruktoren 190Simulation

Würfelspiel 177sin() 37Sinus 37size() 465sizeof() 24, 224Skalarprodukt 289Smart Pointer 361, 466Software

Wiederverwendbarkeit 393

Sparschwein 176Speicheplatz 171Speicher

dynamischer 327freigeben 328-Leck 361, 466reservieren 328

Speicherklasse 139Spezialisierung 393, 429Spezifizierer 139Sprung

goto 69Unterprogramm- 123

Square 399srand() 177

Stack-Unwinding 541

Standard-Bibliothek 33-Ein-/Ausgabe 85-Fehlerklasse 541-Funktion 33-Header-Datei 33Kopierkonstruktor 353-Makro 85-Methode 189

Standardfehlerklasseexception 543logic_error 543runtime_error 543

Standardklassefstream 259ifstream 259ios 45istream 45list 465ofstream 259ostream 45string 33, 109type_info 459

Standard-Template-Library 464static 139static_cast<> 429statisch

Funktion 141Objekt 140

Status-Flag 259Stream 259

std 13, 35, 139stdlib.h 177Steuerzeichen 91STL 464strcpy() 436Stream 45

-Klassen 33-Status 259, 561

Stream siehe auch DateiString

Definition 113-Endezeichen 25, 223ersetzen 162extrahieren 113, 292invertieren 163-Konstante 25Länge 109, 110Literal 109Suche 162, 335

verketten 36verschlüsseln 114zerlegen 251

string 33, 109StringMatching 336strlen() 436struct 171Struktur 171Stunde 61, 165Subtraktion

bei Vektoren 243Polynom 359

Suchbaum 363Suchstring 335Suchverfahren

Boyer-Moore 335Suffix 337Summe 57, 74, 144

komplexer Zahlen 290Vektor 332

switch 69, 72Symbol

Operator 283system() 293

TTabelle

Such- 335Tabulator 25, 114Teilbaum 362Teiler 128

größter gemeinsamer 130

Teilobjekt 207, 515Teilstring 162Temperatur 61Template 464Textdatei 85Textzeile 36

einlesen 437this 189throw 541time_t 404, 522time.h 145time() 145, 522Token 251tolower() 85, 400Ton 26toupper() 85, 400TowersOfHanoi 230TraceParcel 403Tree-Sort Algorithmus. 366true 23, 57

© des Titels »C++ Das Übungsbuch« (ISBN 9783958458024) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/802

Page 27: C++ Das Übungsbuch - mitp.de · Einleitung Dieses Buch wendet sich an Leser, die ihre C++-Kenntnisse durch »Learning by Doing« vertiefen möchten. Es ist ideal, um sich im Stil

Stichwortverzeichnis

606

try-Block 541Türme von Hanoi 230Typ 23type_info 459typeid() 453typeinfo 459Typinformation

zur Laufzeit 453Typumwandlung

explizit 99für Klassen 309in Klassenhierarchien

429Mehrdeutigkeit 309übliche arithmetische

99

UÜberladen

Funktionen 123Überladung

Operator- 283Zuweisungsoperator

353Überlauf 62Übersetzungseinheit 140UCHAR_MAX 335UINT_MAX 49Umfang

Ellipse 463Kreis- 146Quadrat 27

Umgebungsvariable 293Umlenken

Ein-/Ausgabe 89Umrechnung

binär->dezimal 75dezimal->binär 75

Umwandlungarithmetischer Typen

99dezimal -> hex 115hex -> dezimal 115Sekunden 165

unär 283Operator 57

Union 171Unterprogrammsprung 123Unterstrich 23Up-Cast 429uppercase 45using 139, 141

VVariable 23, 25

Definition 25Vektor 223, 243

assoziativer 292dynamischer 327, 330,

333komprimieren 333mehrdimensionaler 223mischen 249-Name 243Summme 332Zeiger- 243

Vererbung 393Vererbungsart 515Vergleich 57, 59

von Strings 109Verketten

Strings 110Verschlüsseln

Strings 114Verweisoperator 157Verzweigung 69Vielfaches 128Viereck 463virtual 453virtuell

Basisklasse 515Destruktor 453Methode 453Methodentabelle 456

void 33Volumen

Kugel 90Zylinder 127

Vorgänger 362Vorrang 57Vorzeichen 45, 46

WWallet

Klasse 286Warnung 14Warteschlange 334Wechselkurs 214Wert

Default- 123Wertebereich 26while 69, 74Wiederverwendbarkeit 393write() 259Würfelspiel 177Wurzel 128, 362

YYen 214

ZZahl

Festpunkt- 45komplexe 290konjugiert 291Norm 291

Zahlensystem 45Zeichen

-Konstante 23Newline 114Steuer- 91Zwischenraum- 25, 92

Zeichenkette 33Zeiger 157, 160, 243

als Parameter 243, 493Basisklassen- 429intelligenter 361, 466NULL 251Read-Only 243, 246this 189-Vektor 243

Zeigerarithmetik 243Zeigerversion 243Zeile

Kommando- 243Ziffer 23Zufallszahl 35, 144, 193

ganzzahlig 145gebrochen 145

Zufallszahlengenerator 145, 177Zugriffsmethode 189, 192Zugriffsproxy 499Zugriffsrecht

Datei- 259Zuweisung 58

einfache 57Move- 353von Objekten 173

Zuweisungsoperatorüberladen 353, 357virtueller 493

Zweigif-/else- 69

Zwischenraumzeichen 25, 91

entfernen 114Zylinder 127

© des Titels »C++ Das Übungsbuch« (ISBN 9783958458024) 2018 by mitp Verlags GmbH & Co. KG, Frechen. Nähere Informationen unter: http://www.mitp.de/802