1. Homepage
  2. Programming
  3. [2022] Programmieren 2 - Assignment 1: Mergesort

[2022] Programmieren 2 - Assignment 1: Mergesort

Engage in a Conversation
Programmieren 2Assignment 1MergesortLeibnizJava

Programmieren 2 SoSe 2022 CourseNana.COM


CourseNana.COM


CourseNana.COM

Assignment 1 CourseNana.COM

Ihre Abgabe muss aus einer einzelnen zip-Datei bestehen, die den Quellcode und ggf. ein PDF-Dokument bei Freitextaufgaben enthält. Beachten Sie, dass Dateien mit Umlauten im Dateinamen nicht hochgeladen werden können. Entfernen Sie die daher vor der Abgabe die Umlaute aus dem Dateinamen. Überprüfen Sie nach Ihrer Abgabe, ob der Upload erfolgreich war. Bei technischen Problemen, wenden Sie sich an Patric Plattner oder Dennis Stanke. Es wird eine Plagiatsüberprüfung durchgeführt. Gefundene Plagiate führen zum Ausschluss von der Veranstaltung. In dieser Veranstaltung wird ausschließlich die Java/JavaFX Version 17 verwendet. Code und Kompilate anderer Versionen sind nicht zulässig. Ihre Abgaben sollen die vorgegebenen Dateinamen verwenden. Wiederholter Verstoß gegen diese Regel kann zu Punktabzügen führen. CourseNana.COM

Aufgabe 1: Mergesort (1 Punkt) CourseNana.COM

In dieser Aufgabe sollen Sie den Sortieralgorithmus Mergesort in Java implementieren. Schreiben Sie Ihren Code in eine Datei namens Mergesort.java in der entsprechenden Mergesort Klasse. Nutzen Sie hier keine Funktionen aus der Standardbibliothek außer die Methoden System.out.print() und System.out.println(). Beispielsweise sollen Sie keine Methoden aus java.util.Arrays benutzen. CourseNana.COM

a) Erstellen Sie eine public static void main(String[] args) Methode.
Erstellen Sie anschließend eine Methode
static String arrayToString(int[] arr), welche den Inhalt eines be- CourseNana.COM

liebigen Integer Arrays als String zurückgibt: CourseNana.COM

Beispiel: CourseNana.COM

1       int[] bsp = {1,2,3,4,5}; CourseNana.COM

2      System.out.println(arrayToString(bsp)); CourseNana.COM

Ausgabe: CourseNana.COM

1      [1,2,3,4,5] CourseNana.COM

b) Implementieren Sie die Methode public static int[] merge(int[] leftArray, int[] rightArray). Methode soll zwei Integer Arrays entgegennehmen und diese aufsteigend sortiert zusammenfügen. Die Eingabear- rays werden immer bereits aufsteigend sortiert sein. Die Eingabearrays sollen nicht verändert werden. Sollten Sie Probleme haben einen guten Algorithmus dafür zu finden, schauen Sie in die Lösungshinweise am Ende der Aufgabe. CourseNana.COM

Beispiel: CourseNana.COM

1      int[] leftList = {1,3,5,7}; CourseNana.COM

2      int[] rightList = {2,4,6,7}; CourseNana.COM

3      int[] result = merge(leftList, rightList); CourseNana.COM

4      System.out.println(arrayToString(result)); CourseNana.COM

Diese CourseNana.COM

  CourseNana.COM

  CourseNana.COM

Ausgabe: CourseNana.COM

1       [1,2,3,4,5,6,7,7] CourseNana.COM

c) Implementieren Sie die Methode public static int[] mergeSort(int[] array). Diese Methode soll mithilfe des Mergesort Algorithmus eine Liste aufsteigend sortieren. Das Eingabearray darf nicht verändert werden. Nutzen Sie dabei die merge Methode aus der vorherigen Teilaufgabe. Der Mergesort Algorithmus funktioniert wiefolgt: CourseNana.COM

1. Hat das Eingabearray weniger als zwei Elemente, geben Sie das Eingabearray zurück, Ende der Methode. CourseNana.COM

2. Sonst: Teilen Sie das Eingabearray in der Mitte in zwei Arrays auf, die wir hier left und right nennen. CourseNana.COM

3. Rufen Sie Mergesort rekursiv auf left und right auf. Wir nennen die Ergebnisse leftSorted und rightSorted CourseNana.COM

4. Nutzen Sie merge um leftSorted und rightSorted zusammenzufügen. Geben Sie das Ergebnis davon zurück. CourseNana.COM

Erstellen Sie drei unsortierte Arrays in der main Methode und sortieren Sie diese mit Ihrer mergeSort Imple- mentierung. CourseNana.COM

Lösungshinweise Hier finden Sie eine Erklärung für den Mergesort Algorithmus: https://en.wikipedia.org/ wiki/Merge_sort CourseNana.COM

Aufgabe 2: Primzahlensieb (1 Punkt) CourseNana.COM

In dieser Aufgabe sollen Sie das Sieb des Eratosthenes (https://de.wikipedia.org/wiki/Sieb_des_Eratosthenes) implementieren. Wir wenden dabei einen kleinen Trick an, um eine möglichst simple Lösung für das Problem
zu implementieren. Schreiben Sie Ihren Code in eine Datei namens
Primes.java in der entsprechenden Primes Klasse. Nutzen sie hier keine Funktionen aus der Standardbibliothek ausser die Methoden System.out.print() CourseNana.COM

und System.out.println(). Beispielsweise sollen Sie keine Methoden aus java.util.Arrays benutzen. CourseNana.COM

a) Erstellen sie eine public static void main(String[] args) Methode. CourseNana.COM

Erstellen Sie anschließend die Methoden static String intArrayToString(int[] arr) und static String boolArrayToString(boolean[] arr), welche den Inhalt eines beliebigen Integer bzw. Boolean Arrays als String zurückgibt: CourseNana.COM

Beispiel: CourseNana.COM

1      int[] bspInt = {1,2,3,4,5}; CourseNana.COM

2      boolean[] bspBool = {true, false, true, false, true}; CourseNana.COM

3      System.out.println(intArrayToString(bspInt)); CourseNana.COM

4      System.out.println(boolArrayToString(bspBool)); CourseNana.COM

Ausgabe: CourseNana.COM

1      [1,2,3,4,5] CourseNana.COM

2      [t,f,t,f,t] CourseNana.COM

Sie können eine beliebige sinnvolle Darstellung für Booleans verwenden. CourseNana.COM

b) Erstellen Sie eine Methode public static boolean[] fillArray(int n). Diese Methode soll ein Array der CourseNana.COM

Länge n + 1 zurückgeben, wobei die ersten beiden Elemente false sein sollen und der Rest true. CourseNana.COM

Beispiel: CourseNana.COM

1      boolean[] arr = fillArray(10); CourseNana.COM

2      System.out.println(boolArrayToString(arr)); CourseNana.COM

Ausgabe: CourseNana.COM

1       [f,f,t,t,t,t,t,t,t,t,t] CourseNana.COM

c) Erstellen Sie eine Methode public static void filterArray(boolean[] arr). Diese Methode soll nun den tatsächlichen Algorithmus des Siebs des Eratosthenes anwenden. Dazu behandeln Sie das Eingabearray als die Liste der Zahlen, die wir uns aufgeschrieben haben. Dabei repräsentiert der Index die aufgeschriebene Zahl und der dazugehörige Wert, ob die Zahl durchgestrichen ist, oder nicht. Sie sollen das Eingabearray verändern. Als Beispiel würde das Array {false, false, true, true, false, true, false} folgende Zahlenliste bedeuten: [0,1,2,3,4,5,6] CourseNana.COM

Nutzen Sie den folgenden Algorithmus:
1. Iterieren Sie solange über das Array, bis Sie eine Zahl finden, die nicht durchgestrichen ist (also bis Sie den Wert
true finden). Wir nennen die Zahl (also den Index) p. Wenn Sie kein weiteres Element finden, sind Sie fertig. CourseNana.COM

2. Streichen Sie alle Vielfachen von p (also setzen Sie die Werte an allen Indizes, die vielfache von p sind, auf false). CourseNana.COM

3. Gehen Sie zu Schritt 1 zurück. Beispiel: CourseNana.COM

1      boolean[] arr = fillArray(20); CourseNana.COM

2      filterArray(arr); CourseNana.COM

3      System.out.println(boolArrayToString(arr)); CourseNana.COM

Ausgabe: CourseNana.COM

1      [f,f,t,t,f,t,f,t,f,f,f,t,f,t,f,f,f,t,f,t,f] CourseNana.COM

d) Erstellen Sie eine Metohde public static int[] primes(int n). Diese Methode soll ein Array aller Primzahlen n zurückgeben. Nutzen Sie dazu die Methoden aus den vorherigen Aufgaben. Das Array darf nicht größer als die Anzahl an Primzahlen n sein. Hinweis: Um das Ausgabearray der Methode zu erstellen, zählen Sie die Anzahl der trues von dem Ergebnis von filterArray, erstellen Sie ein Integer Array, das so viele Elemente hat und schreiben Sie die Primzahlen in dieses Array. CourseNana.COM

  CourseNana.COM

Beispiel: CourseNana.COM

1       int[] arr = primes(20); CourseNana.COM

2       System.out.println(intArrayToString(arr)); CourseNana.COM

  CourseNana.COM

Ausgabe: CourseNana.COM

1       [2,3,5,7,11,13,17,19] CourseNana.COM

  CourseNana.COM

Aufgabe 3: Debugging CourseNana.COM

Jedes Assignment wird eine Debugging-Aufgabe enthalten. In diesen Aufgaben werden Sie einen fehlerhaften Java Codeabschnitt bekommen. Diese Fehler können syntaktisch oder semantisch sein. Es kann sich dabei um Compiler- oder Laufzeitfehler handeln. Sie dürfen den Code kompilieren und ausführen um die Fehler zu finden. Arbeiten Sie in den Template-Dateien in der Debug01.zip. Diese finden Sie im Stud.IP. Hier nochmal der zu korrigierende Code: CourseNana.COM

1      ckass Debug { CourseNana.COM

2      // Methode that checks whether a given number is prime CourseNana.COM

3   public static boolean isPrime(int n) {
// Return false if number is one, zero or negative CourseNana.COM

4      if (n <= 2) { CourseNana.COM

5   return false; CourseNana.COM

6   } CourseNana.COM

7      // Check for all factors smaller and equal to n/2 whether it is a prime factor. // If it is a prime factor, return false.
for (int i = 2; i <= n / 2; i--) { CourseNana.COM

8   if (n % i == 0) { CourseNana.COM

9      return true; CourseNana.COM

10 } CourseNana.COM

11   } CourseNana.COM

12   // If no prime factor was found, return true. CourseNana.COM

13 return true; CourseNana.COM

14   } CourseNana.COM

15   // Method that prints all numbers in an array that are prime CourseNana.COM

16 public static void printPrime(int[] arr) { CourseNana.COM

17   for (int i = 0; i <= arr.length; i++) { CourseNana.COM

18 if (isPrime(arr[i])) { CourseNana.COM

19   System.out.println(arr[i]); CourseNana.COM

20 } CourseNana.COM

21    } CourseNana.COM

22   } CourseNana.COM

23 int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; CourseNana.COM

24   printPrime(arr); CourseNana.COM

25   // output should be as follows: // 2
// 3
// 5 CourseNana.COM

26   // 7 CourseNana.COM

27   } CourseNana.COM

  CourseNana.COM

a) Der Codeabschnitt enthält c.a. 4 Fehler. Kompilieren und führen Sie den Code aus. Suchen Sie anhand der Fehlermeldungen des Compilers oder der Laufzeitfehlermeldungen Fehler im Code und korrigieren Sie diese. Kommentieren Sie am Ende der jeweiligen Zeile, was Sie korrigiert haben. CourseNana.COM

Erstellen Sie während der Fehlerkorrektur einen Blockkommentar unter dem Code, in dem Sie die Fehler doku- mentieren. Schreiben Sie die Zeile(n) des Fehlers auf und beschreiben Sie den Fehler. Kopieren sie die Fehler- meldung, sofern es eine gab, anhand welcher Sie den Fehler erkannt haben. Die Dokumentation soll wie in folgendem Beispiel aussehen: CourseNana.COM

1      public class Debug { //K: class falsch geschrieben (ckass) 2
3
...
4 CourseNana.COM

2      /* CourseNana.COM

3      ... CourseNana.COM

4      Zeile 1: class Keyword falsch geschrieben (ckass): CourseNana.COM

5      Fehlermeldung: CourseNana.COM

6      ************** CourseNana.COM

7      Debug.java:1: error: class, interface, or enum expected CourseNana.COM

8      public ckass Debug { CourseNana.COM

9      ************** CourseNana.COM

10   Der Compiler erwartet eines der drei oben angegebenen Keywords, hat aber nur das falsch  geschriebene ckass bekommen. CourseNana.COM

11   */ CourseNana.COM

Im Code vorgegebene Kommentare beschreiben immer das korrekte Verhalten des Programms. CourseNana.COM

Get in Touch with Our Experts

WeChat WeChat
Whatsapp WhatsApp
Programmieren 2代写,Assignment 1代写,Mergesort代写,Leibniz代写,Java代写,Programmieren 2代编,Assignment 1代编,Mergesort代编,Leibniz代编,Java代编,Programmieren 2代考,Assignment 1代考,Mergesort代考,Leibniz代考,Java代考,Programmieren 2help,Assignment 1help,Mergesorthelp,Leibnizhelp,Javahelp,Programmieren 2作业代写,Assignment 1作业代写,Mergesort作业代写,Leibniz作业代写,Java作业代写,Programmieren 2编程代写,Assignment 1编程代写,Mergesort编程代写,Leibniz编程代写,Java编程代写,Programmieren 2programming help,Assignment 1programming help,Mergesortprogramming help,Leibnizprogramming help,Javaprogramming help,Programmieren 2assignment help,Assignment 1assignment help,Mergesortassignment help,Leibnizassignment help,Javaassignment help,Programmieren 2solution,Assignment 1solution,Mergesortsolution,Leibnizsolution,Javasolution,