Centrum für Informations- und Sprachverarbeitung SoSe 2018: Höhere Programmierung mit C++ Andreas Krieger. Musterlösung 7. Aufgabe 7.

Ähnliche Dokumente
Centrum für Informations- und Sprachverarbeitung SoSe 2018: Höhere Programmierung mit C++ Andreas Krieger. Musterlösung 9

6 UTF8 und Stringverarbeitung

13 Reguläre Ausdrücke

Übung HP Musterlösung zu Aufgabe 9:

Übung HP Codes zu Aufgabe 11:

4 Schleifen und Dateien

Streams, Kodierung und Funktionen. C++ Übung am 12. Mai 2016

Klassen. C++ Übung am 02. Juni 2016

Quiz und Übungen. C++ Übung am 19. Mai 2016

Informatik 1 D- ITET. Übung 9. Christoph Zimmerli Büro: IFW D46.2 hcp://blogs.ethz.ch/infitet09/

C++ Teil 7. Sven Groß. 3. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil 7 3. Juni / 16

C++ Teil 8. Sven Groß. 5. Dez IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 8 5. Dez / 16

Grundlagen der Informatik

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 23

Verwenden Sie für jede Aufgabe die C++ IDE von Eclipse (pro Aufgabe ein Projekt).

Praxis der Programmierung

Einführung in die Programmierung mit C++

Informatik 1 D-ITET Herbstsemester 2009 Übungstunde 8. Gruppe 7 ETZ F91 / 17-19h. Stefan Lienhard

boolean ispalindrome = word.equalsignorecase(reverse.tostring());

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Übung HP Beispielaufgaben 3

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: B Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Inoffizielle Lösung zur Informatik I Prüfung Frühlingssemester 2010 Freitag, 13. August May 23, 2011

Container usw. C++ Übung am 23. Juni 2016

Informatik für Mathematiker und Physiker Woche 7. David Sommer

Einführung in die Programmierung WS 2009/10. Übungsblatt 7: Imperative Programmierung, Parameterübergabe

Prüfung Algorithmen und Datenstrukturen I

EiP Übung

Hochschule Darmstadt Informatik-Praktikum WS 2017/2018 WIng Bachelor 6. Aufgabenblatt Zeiger, verkettete Liste, Dateieingabe und -ausgabe

Nachname: Vorname: Matr.-Nr.: Punkte: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende Struktogramm zur Berechnung von sin(x) mit Hilfe einer Reihe.

C-C++-Kurs Februar/März (Wed Mar 9 19:43: ), p. 1

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Hochschule Darmstadt Informatik-Praktikum WS 2017/2018 EIT Bachelor 5. Aufgabenblatt Datenstruktur, Dateieingabe und -ausgabe

Hochschule Darmstadt Informatik-Praktikum SS 2017 EIT Bachelor 5. Aufgabenblatt Datenstruktur, Dateieingabe und -ausgabe

Städtisches Gymnasium Olpe Java Ht Informatik - Q1 Die Klasse List im Abitur Methoden und Beispielcode Hier alle wichtigen Methoden. Ein Beispielcode

Nachtrag: Vergleich der Implementierungen von Stack

Klausur: Informatik I am 06. Februar 2009 Gruppe: D Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Algorithmen und Programmierung III

Technische Universität München WiSe 2018/19 Fakultät für Informatik Übungsblatt 6 Dr. Ch. Herzog 26. November 2018

Übung HP Angabe: #include <iostream> #include <vector> #include <locale>

5. Strukturen und Algorithmen

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

Algorithmen und Datenstrukturen (Informatik II)

Allgemeines. Shell Programmierung Unix. Kommentar. Vorgangsweise. Mag. Thomas Griesmayer

Kapitel 8: Abstrakte Datentypen. Inhalt. Definition ADT Keller ADT Schlange

Als erstes definiere ich einen Datentyp für einen Zeiger auf eine Funktion, die ein Element der Menge bearbeiten kann:

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Grundlagen von C# - 2

Programmieren in C. Rekursive Strukturen. Prof. Dr. Nikolaus Wulff

Informatik. Wiederholung Felder (Arrays), string. Vorlesung

Mapra: C++ Teil 4. Felix Gruber. 6. Mai IGPM, RWTH Aachen. Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 4 6.

Objektorientierte Programmierung mit C++ SS 2007

Algorithmen und Datenstrukturen

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Grundlagen der Informatik 12. Strukturen

Informatik B von Adrian Neumann

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

Klausur: Informatik I am 06. Februar 2009 Gruppe: D Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Klausur: Informatik, am 11. Juli 2013 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Hinweise zur Prüfung Programmieren WS0304 Seite 1. Schreiben Sie folgende For-Schleife in eine äquivalente While-Schleife um.

Klausur im WS 2003/04 : Informatik III

Programmieren in Java

Klausur: Grundlagen der Informatik I, am 27. März 2009 Gruppe: F Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Grundlagen der Informatik

Objektorientierte Programmierung und Modellierung

FH Ravensburg-Weingarten Schriftlich Prüfung Programmieren

ALP II Dynamische Datenmengen Datenabstraktion

Algorithmen und Programmierung III

Themen. Formatierte und unformatierte Eingabe Bedingungsoperator Namespaces Kommandozeilenargumente

Mapra: C++ Teil 7. Felix Gruber. 3. Juni IGPM, RWTH Aachen. Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 7 3.

Implementation VL3 Gruppe A

Vererbung I. Kfz Eigenschaften und Methoden der Klasse Kfz Lkw. Pkw. Eigenschaften und Methoden der Klasse Kfz

Assoziative Container in C++ Christian Poulter

Übersicht PERL. !!!! Wichtig: Nach dem Befehl einem Strichpunkt setzen!!!!

Einführung in die Programmierung

Computergrundkenntnisse und Programmieren, WS 07/08, Übung 11: Klassen der Standardbibliothek 2

Beispielprüfung CuP WS 2015/2016

Klausur: Informatik, am 11. Juli 2013 Gruppe: B Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Abschnitt 10: Datenstrukturen

Einführung in die STL

Grundlagen der Informatik 2. Typen

Mapra: C++ Teil 7. Felix Gruber, Michael Rom. 14. Juni 2016 IGPM. Felix Gruber, Michael Rom (IGPM) Mapra: C++ Teil 7 14.

Software Entwicklung 1

Name: Klausur Informatik III WS 2003/04

5. Behälter und Iteratoren. Programmieren in C++ Überblick. 5.1 Einleitung. Programmieren in C++ Überblick: 5. Behälter und Iteratoren

C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18

ios fstream ifstream

Programmieren in C++ Überblick

Lösungsvorschlag zum Übungsblatt 1 zur Vorlesung Informatik II / WS2001/02

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Programmieren 2 C++ Überblick

Transkript:

Centrum für Informations- und Sprachverarbeitung SoSe 2018: Höhere Programmierung mit C++ Andreas Krieger Musterlösung 7 Aufgabe 7.3 bool palindrome ( std :: wstring & word ); void reverse ( std :: wstring & word ); std :: wifstream input ; std :: wstring line ; std :: wstring word ; std :: wcout << L" Dateiname : "; input. open ( filename ); std :: cerr << " Die Datei existiert nicht!" << std :: endl ; if ( palindrome ( word )) { std :: wcout << word << std :: endl ; bool palindrome ( std :: wstring & word ) { std :: wstring r_word = word ; reverse ( r_word ); if ( word == r_word ) { else { void reverse ( std :: wstring & word ) { wchar_t temp ; for ( int i = 0; i < word. size ()/2; i ++) { temp = word [i]; word [i] = word [ word. size () - i - 1]; word [ word. size () - i - 1] = temp ; 1

// eine effizientere Funktion zum Test eines Palindroms // wir iterieren bis zur Mitte des Wortes und vergleichen // die i- ten Zeichen von vorne mit den i- Zeichen von hinten // wenn wir bis zur Mitte ohne Fehlschlag kommen, wird true zur ü ckgegeben bool ispalindrome ( std :: wstring & word ) { for ( int i = 0; i < word. length ()/2; i ++) { if ( word [i]!= word [ word. length () - i - 1]) { Aufgabe 7.4 bool splice ( std :: wstring word1, std :: wstring & word2, std :: wstring & erg ); std :: wifstream input ; std :: wstring line, word, substring, rest ; std :: wcin. imbue ( utf8 ); std :: wcout << L" Dateiname : "; input. open ( filename ); std :: cerr << " Datei existiert nicht!" << std :: endl ; std :: wcout << L" Bitte einen Substring eingeben >> "; std :: wcin >> substring ; if ( splice ( word, substring, rest )) { std :: wcout << word << L" - " << substring << L" = " << rest << std :: endl ; bool splice ( std :: wstring word1, std :: wstring & word2, std :: wstring & erg ) { int index = word1. find ( word2 ); // somit finden wir die Position, // wo das gesuchte Wort anf ä ngt if ( index!= std :: wstring :: npos ) { // std :: wstring :: npos -1 erg = word1. erase ( index, word2. size ()); // entfernen das word2 aus dem word1 // true, wenn das Word gefunden wird else { 2

Aufgabe 7.5 int split ( std :: wstring array [], std :: wstring & line ); std :: wifstream input (" idiot. txt "); std :: cerr << " Die Datei existiert nicht!" << std :: endl ; std :: wstring line ; std :: wstring array [20]; // ein Array der Lä nge 20 wird erstellt std :: wcout << split ( array, line ) << L" :: "; for ( auto x: array ) { // es wird durch ganzes Array iteriert if (! x. empty ()) { // x ist ein Element vom Array ( hier : String ) std :: wcout << x << L ; int split ( std :: wstring array [], std :: wstring & line ) { int i = 0; std :: wstring word ; while ( my_ stream >> word ){ // wir extrahieren die Wö rter aus der Zeile array [ i] = word ; // und speichern in einem Array i ++; return i; Aufgabe 7.6 bool first ( std :: wstring * array, int & count_words, std :: wstring & first_ word ); std :: wstring line, word, first_ word ; 3

std :: wcout << L" Dateiname >> "; std :: wifstream input ( filename ); std :: cerr << " Keine Datei gefunden!" << std :: endl ; std :: wcout << line << std :: endl ; int count_ words = 0; std :: wstring array [17] = {; // ein Array mit der Lä nge 17 ( leere Strings ) array [ count_words ] = word ; count_ words ++; bool not_ empty = first ( array, count_words, first_ word ); if( not_empty ){ std :: wcout << L" Anzahl der Wö rter im Array : " << count_ words << std :: endl ; std :: wcout << L" Das erste Wort : " << first_ word << std :: endl ; else { std :: wcout << L" >>>>>>>>> LISTE IST LEER!!! <<<<<<<<<" << std :: endl ; bool first ( std :: wstring * array, int & count_words, std :: wstring & first_ word ) { if ( count_ words == 0) { else { first_ word = array [0]; Aufgabe 7.7 bool last ( std :: wstring array [], int & count_ words ); std :: wstring line, word ; std :: wcout << L" Dateiname >> "; std :: wifstream input ( filename ); std :: cerr << " Keine Datei gefunden!" << std :: endl ; 4

std :: wcout << line << std :: endl ; int count_ words = 0; std :: wstring array [16] = {; array [ count_words ] = word ; count_ words ++; bool not_ empty = last ( array, count_ words ); if( not_empty ){ std :: wcout << L" Anzahl der Wö rter im Array : " << count_ words << std :: endl ; for ( auto x: array ) { std :: wcout << x << L ; if (x. empty ()){ std :: wcout << L" LEER "; else { std :: wcout << L" >>>> LISTE IST LEER!!! <<<<" << std :: endl ; bool last ( std :: wstring array [], int & count_ words ) { if ( count_ words == 0) { else { array [ count_ words - 1]. clear (); //. clear () setzt das letzte // Element vom Array auf Leer count_ words -= 1; Aufgabe 7.8 # include <array > bool member ( std :: wstring word, std :: wstring * array, int pos ); std :: wifstream input (" rassen. txt "); std :: cerr << " Die Datei existiert nicht!" << std :: endl ; std :: wstring line ; std :: wstring * array ; // Arrayzuweisung mit Pointer // damit wir zum sp ä teren Zeitpunkt // ein Array erstellen kö nnen und // gegebenenfalls lö schen. array = new std :: wstring [158]; // In der Datei " rassen. txt " sind 158 Zeilen, // deswegen erstellen wir ein 158 - Array. 5

for ( int i = 0; i < 158; i ++) { getline ( input, line ); array [i] = line ; std :: wstring word ; std :: wcout << L" Hund entlaufen!? Welche Rasse? "; getline ( std :: wcin, word ); int pos = 0; // setzen Position auf 0 bool ismember = member ( word, array, pos ); if ( ismember ) { std :: wcout << L" Suche " << word << L"... Gefunden!" << std :: endl ; else { std :: wcout << L" Suche " << word << L"... Nicht gefunden!" << std :: endl ; delete [] array ; // hier wird das Array gel ö scht bool member ( std :: wstring word, std :: wstring * array, int pos ) { if ( pos > 158) { else if ( word == array [ pos ]) { else { return member ( word, array, pos + 1); // wird jedes Mal die Funktion // aufgerufen bis wir entweder // das Wort finden oder in die // Au ß enposition gelangen. // Position wir um 1 verschoben. 6