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
pruefungen:bachelor:aud:loesungss16 [07.07.2019 11:29] – Verbesserung Aufgabe 5a),d) dompruefungen:bachelor:aud:loesungss16 [25.03.2020 10:18] (aktuell) kat04
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: