Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Prüfungen im Bachelor-Studium (1. - 5. Semester) » algoks » Forendiskussionen (Übersicht)
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige ÜberarbeitungVorherige ÜberarbeitungNächste Überarbeitung | Vorherige Überarbeitung | ||
pruefungen:bachelor:algoks:loesungws10 [07.02.2014 18:40] – Dawodo | pruefungen:bachelor:algoks:loesungws10 [22.07.2015 12:44] (aktuell) – ellyria | ||
---|---|---|---|
Zeile 27: | Zeile 27: | ||
< | < | ||
- | l(x) = { 0 für 0 <= x < 1 | + | l(x) = { 0 für 0 <= x < 1 |
- | { 12x - 12 für 1 <= x < 2 | + | { 12x - 12 |
- | { 60x - 108 für 2 <= x < 3 | + | { 60x - 108 für 2 <= x < 3 |
</ | </ | ||
Zeile 138: | Zeile 138: | ||
==== Aufgabe 7 - Programmierung ==== | ==== Aufgabe 7 - Programmierung ==== | ||
- | ... | + | **a)** |
+ | |||
+ | <code cpp> | ||
+ | BezierCurve:: | ||
+ | this-numCPs = numCPs; | ||
+ | this-> | ||
+ | |||
+ | for(int i = 0; i < numCPs; i++) { | ||
+ | this-> | ||
+ | } | ||
+ | } | ||
+ | |||
+ | BezierCurve:: | ||
+ | delete[] CPs; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | **b)** | ||
+ | |||
+ | <code cpp> | ||
+ | void BezierCurve:: | ||
+ | Points* newCPs = new Point[numCPs - 1]; | ||
+ | |||
+ | for(int i = 0; i < numCPs; i++) { | ||
+ | if(i < idx) | ||
+ | newCPs[i] = CPs[i]; | ||
+ | |||
+ | if(i > idx) { | ||
+ | newCP[i - 1] = CPs[i]; | ||
+ | } | ||
+ | |||
+ | delete[] CPs; | ||
+ | CPs = newCPs; | ||
+ | |||
+ | this-numCPs = numCPs - 1; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | **c)** | ||
+ | |||
+ | <code cpp> | ||
+ | Point BezierCurve:: | ||
+ | Point tmpCPs[numCPs]; | ||
+ | |||
+ | for(int i = 0; i < numCPs; i++) | ||
+ | tmpCPs[i] = CPs[i]; | ||
+ | |||
+ | for(int c = 1; c < numCPs; c++) { | ||
+ | for(int r = 0; r < numCPs, numCPs - c; r++) { | ||
+ | tmpCPs[r] = (1-t) * tmpCPs[r] + t * tmpCPs[r + 1]; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | return tmpCPs[0]; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | **d)** | ||
+ | |||
+ | <code cpp> | ||
+ | void BezierCurve:: | ||
+ | Point* newCPs = new Point[numCPs + 1]; | ||
+ | newArr[0] = CPs[0]; | ||
+ | newArr[numCPs] = CPs[numCPs - 1]; | ||
+ | |||
+ | for(int i = 1; i < numCPs; i++) { | ||
+ | float t = i / (numCPs + 1); | ||
+ | float z = (numCPs + 1 - i) / (numCPs + 1); | ||
+ | newArr[i] = t * CPs[i - 1] + z * CPs[i]; | ||
+ | } | ||
+ | |||
+ | delete[] CPs; | ||
+ | CPs = newArr; | ||
+ | numCPs++; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | **e)** | ||
+ | |||
+ | <code cpp> | ||
+ | void BezierCurve:: | ||
+ | for(int i = 0; i < numCPs; i++) | ||
+ | CPs[i] = 2 * p - CPs[i]; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | **c)** | ||
==== Aufgabe 8 - Numerische Integration ==== | ==== Aufgabe 8 - Numerische Integration ==== |