Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Prüfungen im Bachelor-Studium (1. - 5. Semester) » aud » 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:aud:loesungss16 [07.07.2019 11:29] – Verbesserung Aufgabe 5a),d) dompruefungen:bachelor:aud:loesungss16 [25.03.2020 10:17] kat04
Zeile 139: Zeile 139:
 **e)** **e)**
  
-Darstellung als Array: 28,24,13,21,19,3,7+Darstellung als Array: 3,19,7,28,24,11,12,42
  
 **f)** **f)**
Zeile 183: Zeile 183:
 <code java> <code java>
         public E previous() {         public E previous() {
- // TODO Auto-generated method stub 
  if(prev != null){  if(prev != null){
  E vTmp=prev.v;  E vTmp=prev.v;
Zeile 243: Zeile 242:
  
 ==== Aufgabe 5 ADT ==== ==== Aufgabe 5 ADT ====
-**a) ** +
-  getCol(Step(l), x, y) = NOT(getCol(l,x,y) falls x=l.getX && y=l.getY +
-  getCol(Step(l), x, y) = getCol(l, x, y) sonst+
      
- + **a) **
 <code java> <code java>
-// Obige Lösung halte ich für falsch, da man l.getX bzw. l.getY nicht schreiben darf.  
-// Mein Verbesserungsvorschlag, wobei ich glaube, dass man hier in eine Endlosrekursion läuft: 
- 
   getCol(Step(l), x, y) = NOT(getCol(l,x,y), falls x = getX(l) && y = getY(l)   getCol(Step(l), x, y) = NOT(getCol(l,x,y), falls x = getX(l) && y = getY(l)
-  getCol(Step(l), x, y) = getCol(l, x, y) sonst+  getCol(Step(l), x, y) =     getCol(l,x,y)sonst
 </code> </code>
      
  **b) **  **b) **
-  getDir(Step(l)) = (d+3)%4 falls getCol(l,x,y) = false +<code java>   
-  getDir(Step(l)) = (d+1)%4 sonst +  getDir(Step(l)) = (getDir(l) + 3) % 4falls getCol(l, getX(l), getY(l)) == false 
-   +  getDir(Step(l)) = (getDir(l) + 1) % 4sonst 
-  Obige Lösung ist mMn falsch, dem Aufruf werden kein d, kein x und kein y mitgegeben. Meine (womöglich immer noch falsche) Lösung: +</code>
-   +
-  getDir(Step(l)) = (getDir(l)+3)%4 falls getCol(l, getX(l), getY(l)) == false +
-  getDir(Step(l)) = (getDir(l)+1)%4 sonst +
            
  **c) **  **c) **
-  getX(Step(l)) = getX(l) + 1 falls (getDir == 0 & getCol(l,x,y) == false) || (getDir == 2 & getCol(l,x,y) == true) +<code java> 
-  getX(Step(l)) = getX(l) - 1 falls (getDir == 0 & getCol(l,x,y) == true) || (getDir == 2 & getCol(l,x,y) == false) +  getX(Step(l)) = getX(l) + 1, falls getDir(Step(l)) == 1 // und - vertauscht? 1 = Westen, also nach links also -
-  getX(Step(l)) = x sonst +  getX(Step(l)) = getX(l) - 1falls getDir(Step(l)) == 3 //wie oben nur umgekehrt, auch in den Bildern zu sehen 
-   +  getX(Step(l)) = getX(l)sonst  
-  Gleiches wie oben: Was soll x, y sein? Warum wird getDir ohne Parameter aufgerufen? Meine (evtl ebenfalls falsche) Lösung: +</code>  
-  getX(Step(l)) getX(l) + 1 falls getDir(Step(l)) == 1 +
-  getX(Step(l)) = getX(l) - 1 falls getDir(Step(l)) == 3 +
-  getX(Step(l)) = getX(l) sonst +
      
  ** d) **  ** d) **
 +<code>
 +Beachte: Das Koordinatensystem ist nach unten geklappt, d.h. die y-Werte drehen sich bei den Blickrichtungen Norden/Sueden um. 
 +Wo steht das? Reine Interpretationssache. Das Raster im Bild ist nach oben auch positiv...
 +
 +---------> x
 +|
 +|
 +|
 +y
 +</code>
 <code java> <code java>
           public class LangtonAntJava{           public class LangtonAntJava{
Zeile 289: Zeile 286:
                    raster[x][y] = !raster[x][y];                    raster[x][y] = !raster[x][y];
                    if(d == 0){                    if(d == 0){
-                       y -= 1; // müsste y += 1; heißen, da d = 0 Blickrichtung Norden ist.+                       y -= 1; 
                    } else if (d == 1){                    } else if (d == 1){
-                       x += 1; // müsste x -= 1; heißen, da d = 1 Blickrichtung Westen ist.+                       x += 1;    // muesste hier nicht x -= 1 stehen, da Blickrichtung nach Osten? Stimme dem zu. Autor kennt, wie bei c) schon erwähnt, die Himmelsrichtungen nicht.
                    } else if (d == 2){                    } else if (d == 2){
-                       y += 1;  // müsste y -= 1; heißen, da d = 2 Blickrichtung Süden ist.+                       y += 1; 
                    } else if (d == 3){                    } else if (d == 3){
-                       x -= 1;  // müsste x+= 1; heißen, da d = 3 Blickrichtung Osten ist.+                       x -= 1;    // muesste hier nicht x += 1 stehen, da Blickrichtung nach Westen? 
                    }                    }
                }                }
Zeile 351: Zeile 348:
  abDiff-=2*(a.get(p));  abDiff-=2*(a.get(p));
  b.add(a.remove(p));  b.add(a.remove(p));
- helfer(p);+ helfer(p); //sollte hier nicht auch p+1 stehen? sonst mach ich den gleichen Schritt nochmal // Nein, da ja der aktuelle Wert der Stelle P entfernt wird, wenn du jetzt p +1 machen würdest, würdest du einen Wert überspringen 
  
  // Backtracking zur 2. Rekursion:  // Backtracking zur 2. Rekursion: