0 votes

Gibt es Verbesserungspotenzial für die Nachfolgenden Lösungen. 

Fraglich ist, was erwartet wird um die volle Punktzahl (unten Angegebn) zu erreichen.

Wie viele Punkte gäbe es für die vorgezeigten Antworten?

1) Aufgabenstellung

Schreiben Sie eine Prozedur reduceAbs, welche ein Array nimmt und alle echt positiven Zahlen im Array um 2 verringert und alle echt negativen um 2 erhöht. Nullen sollen nicht verändert werden.

Bewertung mit 3P -> Lösungsvorschlag:
void reduceAbs(int[] ar){
  for(int i=0; i<ar.length; i++){
   if(ar[i] > 0){
     ar[i] = ar[i] - 2;
   }else if(ar[i] < 0){
      ar[i] = ar[i] + 2;
   }
 }
/* Muss die Behandlung eines Null-Referenz-Arrays/Leeres Array für Aufgabenteil 1) ausgeschlossen werden (siehe 2))?
*/
}
2) Aufgabenstellung:

Schreiben Sie eine Prozedur swapMinMax, welche ein Array nimmt und darin die größte Zahl mit der kleinsten ver- tauscht. Falls Zahlen mehrmals vorkommen, soll das erste Vorkommen der kleinsten Zahl mit dem letzten Vorkommen der größten Zahl vertauscht werden.

Bewertung mit 4P -> Lösungsvorschlag:

public class Swap {
  
   public void swapMinMax(int[] ar){
      int minIndex = 0;
      int isMin = ar[0];
      int maxIndex = ar.length-1;
      int isMax = ar[ar.length-1];
     
      if(!(ar == null || ar.length == 0)){
      
         for(int i=0; i<ar.length-1; i++){
            if(ar[i+1]<isMin){
             isMin = ar[i+1]; 
             minIndex = i+1; 
            }
         }
        
         for(int i=ar.length-1; i>0; i--){
            if(ar[i-1]>isMax){
             isMax = ar[i-1];
             maxIndex = i-1;
            }
         }
        
      }
      ar[minIndex]= isMax;
      ar[maxIndex]= isMin;     
     
   }
   public static void main(String[] args) {
      int[] testArray = {2,1,3,6,5,4};
      Swap swapObject = new Swap();
      swapObject.swapMinMax(testArray);
     
   }
}

3) Aufgabenstellung:

Schreiben Sie eine Prozedur int[] lookup(String[] keys, int[] values, String[] q). Die Prozedur nimmt zwei Arrays keys und values, welche die gleiche Länge haben. Für alle i zwischen 0 und keys.length-1 ist values[i] immer der Wert zum Schlüssel keys[i]. Das Array keys enthält keinen Schlüssel mehrmals und die Schlüssel sind nicht null. Die Prozedur erhält außerdem ein Abfrage-Array q, welches die Schlüssel enthält, zu denen die Werte gefunden werden sollen. Rückgabewert der Prozedur lookup ist ein Array mit den Werten zu den gesuch- ten Schlüsseln. Falls ein Schlüssel nicht gefunden wurde, soll dieser ignoriert werden. Die Länge des Ergebnis-Arrays entspricht also der Anzahl der gefundenen Schlüssel.

Bewertung mit 5P -> Lösungsvorschlag:
public class Lookup {
  
   public int[] lookup(String[] keys, int[] values, String[] q){
      int count = 0;
      String BuchstaInQ;
      int[] res = new int[values.length];
     
      for(int i=0; i< q.length ;i++){
         BuchstaInQ = q[i];
        
         for(int j=0; j<keys.length  ;j++){
            if(BuchstaInQ == keys[j]){
             res[count] = values[j];
             count ++;
            }
         }
      }
      int[] finalRes = new int[count];
      for(int i=0; i<finalRes.length; i++){
        finalRes[i] = res[i];
      }
     return finalRes;
     
     
   }
   public static void main(String[] args) {
      String[]      kk = {"a","b","c","d","e","f"};
      int[]         vv = {1,2,3,4,5,6};
      String[]      qq = {"a",        "d",    "f"};
      Lookup lookUpObjekt = new Lookup();
      lookUpObjekt.lookup(kk,vv,qq);
   }
}
Viele Grüße
euer LerntNieAus

in # Mandatory Modules Bachelor by (200 points)

1 Answer

+1 vote
1) Die Lösung ist korrekt

Der Fall, dass null als Parameter übergeben wird muss nicht behandelt werden, das Leere Array aber schon.

2)

Ein Fehler: Hier sollte die Bedingung ar.length == 0 geprüft werden, bevor auf das Array zugegriffen wird, weil es sonst zu einer ArrayIndexOutOfBounds Exception kommen kann.

3)

2 Fehler:

- Die Länge von res sollte zu Beginn der Länge von q entsprechen. Die Aufgabe schließt nicht aus, dass in q Einträge mehrmals vorkommen, d.h. das Array könnte mit values.length zu klein sein.

- Um Strings zu vergleichen sollte die equals-Methode verwendet werden. Der Vergleich mit == vergleicht in Java nicht den Inhalt der Strings sondern nur, ob es sich um das gleiche String-Objekt handelt.
 

Bezüglich Bepunktung: Vermutlich gäbe es für die 3 Fehler auch 3 Punkte Abzug von der maximalen Punktzahl.
by (930 points)
Verbesserung

Related questions

0 votes
1 answer
asked Sep 11, 2018 in # Mandatory Modules Bachelor by LerntNieAus (200 points)
0 votes
1 answer
asked Sep 10, 2018 in # Mandatory Modules Bachelor by LerntNieAus (200 points)
0 votes
1 answer
asked Sep 17, 2018 in * TF "Softw.-Eng." by davidschulz (410 points)
+2 votes
1 answer
0 votes
1 answer
asked Sep 16, 2018 in * TF "Softw.-Eng." by davidschulz (410 points)
Imprint | Privacy Policy
...