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.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
Letzte ÜberarbeitungBeide Seiten, nächste Überarbeitung
pruefungen:bachelor:algoks:loesungws10 [07.02.2014 18:39] Dawodopruefungen:bachelor:algoks:loesungws10 [22.07.2015 12:42] ellyria
Zeile 27: Zeile 27:
  
 <code> <code>
-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     für 1 <= x < 2 
- { 60x - 108 für 2 <= x < 3+        { 60x - 108    für 2 <= x < 3
 </code> </code>
  
Zeile 58: Zeile 58:
  
 <code> <code>
- |1 0 0 0|+    |1 0 0 0|
 L = |2 1 0 0| L = |2 1 0 0|
- |0 3 1 0| +    |0 3 1 0| 
- |0 0 2 1|+    |0 0 2 1|
   
- |2 1 4 1|+    |2 1 4 1|
 U = |0 1 1 1| U = |0 1 1 1|
- |0 0 2 1| +    |0 0 2 1| 
- |0 0 0 3|+    |0 0 0 3|
 </code> </code>
  
Zeile 131: Zeile 131:
  
 <code> <code>
- |1  1  1  1| +        |1  1  1  1| 
--1/4 x |2  2  2  2| +-1/4 x  |2  2  2  2| 
- |2  2  2  2|+        |2  2  2  2|
 </code> </code>
  
 ==== Aufgabe 7 - Programmierung ==== ==== Aufgabe 7 - Programmierung ====
  
-...+**a)** 
 + 
 +<code cpp> 
 +BezierCurve::BezierCurve(const Point* CPs, int numCPs) { 
 + this-numCPs = numCPs; 
 + this->CPs = new Point[numCPs]; 
 +  
 + for(int i = 0; i < numCPs; i++) { 
 + this->CPs[i] = CPs[i]; 
 +
 +
 + 
 +BezierCurve::~BezierCurve() { 
 + delete[] CPs; 
 +
 +</code> 
 + 
 +**b)** 
 + 
 +<code cpp> 
 +void BezierCurve::removeControlPoint(int idx) { 
 + 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; 
 +
 +</code> 
 + 
 +**c)** 
 + 
 +<code cpp> 
 +Point BezierCurve::desCastlejau(float t) const { 
 + 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]; 
 +
 +</code> 
 + 
 +**d)** 
 + 
 +<code cpp> 
 +void BezierCurve::degreeElevation() { 
 + 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++; 
 +
 +</code> 
 + 
 +**e)** 
 + 
 +<code cpp> 
 +void BezierCurve::reflectCurve(const Point& p) { 
 + for(int i = 0; i < numCPs; i++) 
 + CPs[i] = 2 * p - CPs[i]; 
 +
 +</code> 
 + 
 + 
 +**c)**
  
 ==== Aufgabe 8 - Numerische Integration ==== ==== Aufgabe 8 - Numerische Integration ====
Zeile 167: Zeile 254:
 **b)** **b)**
  
-7, 5, 19, 24, 6, 6+7, 5, 19, 24, 6, 6
  
 **c)** **c)**