Programmieren in C/C++: Klausur 2 ( )

Ähnliche Dokumente
Aufgabe (Schreibtischtest, lexikographische Ordnung)

GI Vektoren

int i=1; //Integerzahl i anlegen und mit 1 initialisieren float wert; //Floatzahl deklarieren scanf( %f,&wert); //Wert über Tastatur eingeben

Aufgabe (Schreibtischtest, Algorithmenanalyse)

Schleifen in C/C++/Java

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3

Sortieren II / HeapSort Heaps

Sortieren durch Einfügen. Prof. Dr. W. Kowalk Sortieren durch Einfügen 1

Tag 4 Repetitorium Informatik (Java)

BUBBLE SORT. Können wir die gefundenen Algorithmen auch auf Listen mit mehr als drei Elementen ausdehnen?

Tutoraufgabe 1 (Hoare-Kalkül):

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

Programmierkurs Java

Sortieralgorithmen. Selection Sort

Humboldt-Universität zu Berlin Berlin, den Institut für Informatik

Programmieren in C/C++ und MATLAB

Klausur in Programmieren

Felder, Zeiger und Adreßrechnung

Die Formel für die Standardabweichung lautet (ohne die Wurzel haben wir die Varianz):

Programmieren I + II Regeln der Code-Formatierung

C# - Einführung in die Programmiersprache Arrays, Enumeration und Collections. Leibniz Universität IT Services Anja Aue

Zeiger. C-Kurs 2012, 2. Vorlesung. Tino Kutschbach 10.

lim log 2n n = > 0 Da es einen Limes gibt, gibt es auch einen Limes inferior, der gleich diesem Limes ist.

Grundlagen von C# - 2

Schleifen in C/C++/Java

Algorithmen und Datenstrukturen

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5

Programmieren I. Kapitel 5. Kontrollfluss

Tag 4 Repetitorium Informatik (Java)

In diesr Schachtel befindet sich ein Zettel, auf dem ein Wert oder eine Zeichenfolge stehen kann, z.b. 5.

9. Vektoren. (auch Felder/array)

Algorithmen und Datenstrukturen

3. Übungsblatt zu Algorithmen I im SoSe 2017

Sortieren durch Einfügen

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

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

Programmierung und Angewandte Mathematik

+ C - Array (Vektoren, Felder)

Kapitel 3: Sortierverfahren Gliederung

Objekttypen. Referenzen, Objekte, Gleichheit, Wrapper, Arrays, mehr-dimensionale Arrays, Bildbearbeitung, krumme Arrays

Tutoraufgabe 1 (Sortieren): Lösung: Datenstrukturen und Algorithmen SS14 Lösung - Übung 4

3.8 Objekttypen und Arrays. Wir werden uns in diesem Kapitel näher mit den Objekttypen in Java beschäftigen.

Übung Algorithmen und Datenstrukturen

C-Grundlagen. zur Programmierung des MicroControllersystems MiCoWi

Programmieren I. Kapitel 7. Sortieren und Suchen

Abschnitt: Algorithmendesign und Laufzeitanalyse

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Vorbereitende Aufgaben

Sortierverfahren. Sortierverfahren für eindimensionale Arrays

C++ - Einführung in die Programmiersprache Schleifen

Arrays. Arrays werden verwendet, wenn viele Variablen benötigt werden. Der Vorteil in Arrays liegt darin, dass man nur eine Variable deklarieren muss

Datenstrukturen und Algorithmen 2. Klausur SS 2001

Assoziative Container in C++ Christian Poulter

QuickSort ist ein Sortieralgorithmus, der auf der Idee des Teile & Beherrsche beruht, und das gegebene Array an Ort und Stelle (in place) sortiert

Informatik B Sommersemester Musterlösung zur Klausur vom

Aufgabe 8. 1 Arbeitsweise illustrieren. 2 Korrektheitsbeweis führen. 3 Laufzeitanalyse durchführen.

Programmieren I + II Regeln der Code-Formatierung

5.1 Mehr Basistypen. (Wie viele Werte kann man mit n Bit darstellen?)

Arrays und Schleifen

Teil III: Evaluationstest

Die for -Schleife HEUTE. Schleifen. Arrays. Schleifen in JAVA. while, do reichen aus, um alle iterativen Algorithmen zu beschreiben

2. Grundlagen. Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten.

Informatik II, SS 2014

8. Referenzen und Zeiger

Arrays und Schleifen

float: Fließkommazahl nach IEEE 754 Standard mit 32 bit

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Algorithmen und Datenstrukturen

Inf 12 Aufgaben

Suchen und Sortieren Sortieren. Heaps

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen

ContainerDatenstrukturen. Große Übung 4

ALP II Dynamische Datenmengen Datenabstraktion

Informatik Repetitorium SS Volker Jaedicke

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010

Praxis der Programmierung

Martin Unold INFORMATIK. Geoinformatik und Vermessung

3. Suchen. Das Suchproblem. Suche in Array. Lineare Suche. 1 n. i = n Gegeben Menge von Datensätzen.

Vorlesung Programmieren

Elementare Sortierverfahren

Ordnen Sie die folgenden Funktionen nach ihrer asymptotischer Komplexität in aufsteigender Reihenfolge: i=1 4i + n = 4 n. i=1 i + 3n = 4 ( n(n+1)

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit

Informatik II Musterlösung

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Ausgabe:

Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing

Übung Informatik I - Programmierung - Blatt 8

Grundlagen und Konzepte von C Datenstrukturen

Algorithmen & Datenstrukturen 1. Klausur

Transkript:

Programmieren in C/C++: Klausur 2 (12.12.2007) Schreiben Sie jeweils ein Codefragment (ohne Eingabe oder Ausgabe), das die gewünschten Aufgabenstellungen bearbeitet. Bei den Variablen, deren Namen unterstrichen sind, gehen Sie bitte davon aus, dass sie im Programm bereits mit sinnvollen Werten belegt wurden. Sie dürfen weitere (Hilfs-) Variablen einführen, falls dies unbedingt erforderlich sein sollte. Generell sollen Sie die angegebenen Variablennamen verwenden, unnötige Operationen vermeiden, unnötige Hilfsvariablen vermeiden, den Inhalt von Schleifen und Verzweigungen einrücken. Bei Nichtbeachtung folgen empfindliche Punktabzüge! Beispielaufgabe: Deklariert sind bisher: int a[n], b[n]; Geben Sie ein Codefragment an, das den Inhalt von b[] nach a[] kopiert Lösungsvorschlag: for(i=0; i<n; i++) =b[i]; Und jetzt geht es los... viel Erfolg! Aufgabe 1: Initialisierung eines Arrays mit einem konstanten Wert Deklariert ist bisher: int a[n]; Geben Sie ein Codefragment an, das alle Elemente von a[] mit dem Wert 0 initialisiert. Aufgabe 2: Initialisierung eines Arrays mit alternierenden Werten Deklariert ist bisher: int a[n]; a) Geben Sie ein Codefragment an, das alle Elemente von a[] alternierend mit den Werten 0, 1, 0, 1, 0,... initialisiert. b) Geben Sie ein Codefragment an, das alle Elemente von a[] alternierend mit den Werten 1, 0, 1, 0, 1,... initialisiert. Aufgabe 3: Suche des größten Elements eines Arrays Deklariert sind bisher: int a[n], maxvalue=int_min; (Hinweis: INT_MIN ist eine symbolische Konstante, die für den kleinstmöglichen int- Wert steht und in limits.h deklariert ist.) Geben Sie ein Codefragment an, das den größten Eintrag von a[] findet und in der Variablen maxvalue speichert.

Aufgabe 4: Suche des kleinsten Elements eines Arrays Deklariert sind bisher: int a[n], minvalue=int_max; (Hinweis: INT_MAX ist eine symbolische Konstante, die für den größtmöglichen int-wert steht und in limits.h deklariert ist.) Geben Sie ein Codefragment an, das den kleinsten Eintrag von a[] findet und in der Variablen minvalue speichert. Aufgabe 5: Prüfung zweier Arrays auf Gleichheit, Variante 1 Deklariert sind bisher: int a[n], b[n], abequal; Geben Sie ein Codefragment an, das prüft, ob alle Elemente von a[] und b[] paarweise gleich sind, ob also a i = bi für alle i = 0,..., N 1 erfüllt ist. Die Variable abequal soll mit dem Wert 1 belegt werden, falls alle Elemente paarweise gleich sind, andernfalls mit dem Wert 0. Aufgabe 6: Prüfung zweier Arrays auf Gleichheit, Variante 2 Deklariert sind bisher: int a[n], b[n], pos; Geben Sie ein Codefragment an, das prüft, ob alle Elemente von a[] und b[] paarweise gleich sind, ob also a i = bi erfüllt ist. In der Variablen pos soll die Position des ersten voneinander abweichenden Paares gespeichert werden. Ist a i = bi erfüllt für alle i = 0,..., N 1, so soll pos mit dem Wert 1 belegt werden. Beispiele a) b) b[i] b[i] 4 5-3 6 7 11 18 1 Für diese Situation soll pos den Wert 1 Für diese Situation soll pos den Wert 5

Aufgabe 7: Vertauschen der Reihenfolge innerhalb eines Arrays Deklariert sind bisher: int a[n]; Geben Sie ein Codefragment an, das die im Array a[] gespeicherten Elemente in der Reihenfolge vertauscht. Beispiel vorher: nachher: 1 18 12 7 6-3 5 4 Aufgabe 8: Prüfung eines Arrays auf Symmetrie Deklariert sind bisher: int a[n], issymm; Geben Sie ein Codefragment an, das prüft, ob die im Array a[] gespeicherten Elemente symmetrisch angeordnet sind, ob also ein Vertauschen der Reihenfolge (vgl. Aufg. 7) zur selben Anordnung der Elemente führt. Ist dies der Fall, so soll die Variable issymm mit dem Wert 1, andernfalls mit 0 belegt werden. Beispiele a) b) 4 5-3 6 6-3 5 4 Für diese Situation soll issymm den Wert 1 Für diese Situation soll issymm den Wert 0 Aufgabe 9: Zählen von Elementen in einem Array Deklariert sind bisher: int a[n], value, nvalue; Geben Sie ein Codefragment an, das zählt, wie häufig der in der Variablen value vorgegebene Wert im Array a[] auftritt. Das Ergebnis der Zählung soll in der Variablen nvalue gespeichert werden. Beispiele (value enthält hier den Wert 6.) a) b) 4 5-3 6 6-3 5 6 Für diese Situation soll nvalue den Wert 3 Für diese Situation soll nvalue den Wert 1

Aufgabe 10: Einfügen eines Elements in ein Array Deklariert sind bisher: int a[n], value, pos; Geben Sie ein Codefragment an, das den in value gegebenen Wert an der Stelle pos in das Array a[] einfügt. Zuvor sollen die Inhalte des Arrays ab dem Index pos um ein Element nach rechts (zu größeren Indizes hin) verschoben werden. Dabei geht der Inhalt des letzten Elements a[n-1] verloren. Beispiele (value enthält hier den Wert 6, pos den Wert 2.) vorher: nachher: 4 5 6-3 6 7 12 18 Aufgabe 11: Entfernen eines Elements aus einem Array Deklariert sind bisher: int a[n], pos; Geben Sie ein Codefragment an, das den an der Stelle pos des Arrays a[] gespeicherten Wert entfernt. Die Inhalte des Arrays sollen dann ab dem Index pos+1 um ein Element nach links (zu kleineren Indizes hin) verschoben werden. Der Inhalt des letzten Elements a[n-1] soll auf 0 gesetzt werden. Beispiele (pos enthält hier den Wert 2.) vorher: nachher: 4 5 6 7 12 18 1 0 Aufgabe 12: Sortieren der Elemente eines Arrays Deklariert sind bisher: int a[n]; Geben Sie ein Codefragment an, das die Elemente eines Arrays in aufsteigender Reihenfolge sortiert. Beispiele (pos enthält hier den Wert 2.) vorher: nachher: 4 1-3 18 7 12 6 5-3 1 4 5 6 7 12 18

Aufgabe 1: Lösungsvorschläge Es handelt sich hier nur um Vorschläge; selbstverständlich können auch andere Lösungen richtig sein. for(i=0; i<n; i++) =0; Aufgabe 2a: if(i%2==0) =0; else =1; Aufgabe 2b: if(i%2==0) =1; else =0; Aufgabe 3: if(maxvalue<) maxvalue=;

Aufgabe 4: if(minvalue>) minvalue=; Aufgabe 5: abequal=1; if(!=b[i]){ abequal=0; break; Aufgabe 6: pos=-1; if(!=b[i]){ pos=i; break;

Aufgabe 7: int i, h; for(i=0; i<n/2; i++){ h=; =a[n-1-i]; a[n-1-i]=h; Aufgabe 8: issymm=1; for(i=0; i<n/2; i++) if(!=a[n-1-i]){ issymm=0; break; Aufgabe 9: nvalue=0; if(value==) nvalue++;

Aufgabe 10: for(i=n-2; i>=pos; i--) a[i+1]=; a[pos]=value; Aufgabe 11: for(i=pos; i<n-1; i++) =a[i+1]; a[n-1]=0; Aufgabe 12: int i, h, ready; do{ ready=1; for(i=0; i<n-1; i++) if(>a[i+1]){ h=; =a[i+1]; a[i+1]=h; ready=0; while(ready!=1);