diff --git a/Klausuren/Sd1/Tests/MaxThreeValueDiff/Exam/.gitignore b/Klausuren/Sd1/Tests/MaxThreeValueDiff/Exam/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..4e247eee2103b4d4a35eba38166587fee1391f0e --- /dev/null +++ b/Klausuren/Sd1/Tests/MaxThreeValueDiff/Exam/.gitignore @@ -0,0 +1,4 @@ +/.settings +/target +/.classpath +/.project diff --git a/Klausuren/Sd1/Tests/MaxThreeValueDiff/Exam/pom.xml b/Klausuren/Sd1/Tests/MaxThreeValueDiff/Exam/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..f91823dbadcf5bf01e3e75ee1af4a1149f505a39 --- /dev/null +++ b/Klausuren/Sd1/Tests/MaxThreeValueDiff/Exam/pom.xml @@ -0,0 +1,42 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <groupId>de.hdm-stuttgart.de.sd1</groupId> + <artifactId>diff</artifactId> + <version>1.0</version> + <packaging>jar</packaging> + + <name>Diff</name> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <version>3.2</version> + <configuration> + <source>1.8</source> + <target>1.8</target> + </configuration> + </plugin> + + </plugins> + </build> + <dependencies> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.12</version> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>de.hdm_stuttgart.mi.exam</groupId> + <artifactId>unitmarking</artifactId> + <version>0.9</version> + </dependency> + + </dependencies> +</project> diff --git a/Klausuren/Sd1/Tests/MaxThreeValueDiff/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/diff/Diff.java b/Klausuren/Sd1/Tests/MaxThreeValueDiff/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/diff/Diff.java new file mode 100644 index 0000000000000000000000000000000000000000..35248e5f178533e4c1b3f63e7f9a5d67bb95fead --- /dev/null +++ b/Klausuren/Sd1/Tests/MaxThreeValueDiff/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/diff/Diff.java @@ -0,0 +1,28 @@ +package de.hdm_stuttgart.mi.sd1.diff; + +/** + * Additional helper methods + * + */ +public class Diff { + /** + * Compute the absolute value of the biggest difference between + * two of three given numbers a, b, and c + * + * Examples: + * + * a == 1, b == 2, c ==10, the biggest absolute difference is 10 - 1 = 9 + * a == 4, b ==10, c == 1, the biggest absolute difference is 10 - 1 = 9 + * a ==-3, b == 4, c == 3, the biggest absolute difference is 4 - (-3) = 7 + * + * + * @param a The first of three parameters + * @param b The second of three parameters + * @param c The third of three parameters + * @return The absolute value of the biggest difference between any possble pair + * of the three parameters + */ + public static int maxDiff(int a, int b, int c) { + return -17; //TODO Implementiere mich! + } +} diff --git a/Klausuren/Sd1/Tests/MaxThreeValueDiff/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/diff/package-info.java b/Klausuren/Sd1/Tests/MaxThreeValueDiff/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/diff/package-info.java new file mode 100644 index 0000000000000000000000000000000000000000..bc8fbda8699077f79792f2af91704af9380d17d8 --- /dev/null +++ b/Klausuren/Sd1/Tests/MaxThreeValueDiff/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/diff/package-info.java @@ -0,0 +1,5 @@ +/** + * Dealing with difference values + * + */ +package de.hdm_stuttgart.mi.sd1.diff; \ No newline at end of file diff --git a/Klausuren/Sd1/Tests/MaxThreeValueDiff/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/mein_ergebnis/ShowReachedPoints.java b/Klausuren/Sd1/Tests/MaxThreeValueDiff/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/mein_ergebnis/ShowReachedPoints.java new file mode 100644 index 0000000000000000000000000000000000000000..b68079af1db4b2d44743e7dd875164006874b6c5 --- /dev/null +++ b/Klausuren/Sd1/Tests/MaxThreeValueDiff/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/mein_ergebnis/ShowReachedPoints.java @@ -0,0 +1,16 @@ +package de.hdm_stuttgart.sw1.klausur.mein_ergebnis; + +import de.hdm_stuttgart.mi.exam.unitmarking.RunTests; +import de.hdm_stuttgart.sw1.klausur.test.Test_MaxDiff; + +public class ShowReachedPoints { + + /** + * Execution reveals the number of reached points. + * + * @param args Unused + */ + public static void main(String[] args) { + RunTests.exec(Test_MaxDiff.class); + } +} diff --git a/Klausuren/Sd1/Tests/MaxThreeValueDiff/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_MaxDiff.java b/Klausuren/Sd1/Tests/MaxThreeValueDiff/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_MaxDiff.java new file mode 100644 index 0000000000000000000000000000000000000000..7c2d04b9b63bd0aeacf8643e528bc290d1b0957f --- /dev/null +++ b/Klausuren/Sd1/Tests/MaxThreeValueDiff/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_MaxDiff.java @@ -0,0 +1,52 @@ +package de.hdm_stuttgart.sw1.klausur.test; + +import static org.junit.Assert.assertEquals; + +import org.junit.FixMethodOrder; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.DisableOnDebug; +import org.junit.rules.TestRule; +import org.junit.rules.Timeout; +import org.junit.runners.MethodSorters; + +import de.hdm_stuttgart.mi.sd1.diff.Diff; + +@SuppressWarnings({ "javadoc" }) +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class Test_MaxDiff { + + // Kill test if tests last longer than 1000 milliseconds unless in debugging mode + @Rule + public final TestRule timeout = new DisableOnDebug(Timeout.millis(1000)); + + @Test + public void test01Zero() { + assertEquals(0, Diff.maxDiff(0, 0, 0)); + } + @Test + public void test02Equal() { + assertEquals(0, Diff.maxDiff(1, 1, 1)); + } + @Test + public void test03AscendingValues() { + assertEquals(2, Diff.maxDiff(1, 2, 3)); + } + @Test + public void test04DescendingValues() { + assertEquals(7, Diff.maxDiff(7, 5, 0)); + } + @Test + public void test05Middle() { + assertEquals(3, Diff.maxDiff(4, 1, 4)); + } + @Test + public void test06Negative() { + assertEquals(3, Diff.maxDiff(-1, -2, -4)); + } + @Test + public void test07Mixed() { + assertEquals(15, Diff.maxDiff(-5, 10, 0)); + assertEquals(37, Diff.maxDiff(-5, 30, -7)); + } +} \ No newline at end of file diff --git a/Klausuren/Sd1/Tests/MaxThreeValueDiff/Solution/.gitignore b/Klausuren/Sd1/Tests/MaxThreeValueDiff/Solution/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..4e247eee2103b4d4a35eba38166587fee1391f0e --- /dev/null +++ b/Klausuren/Sd1/Tests/MaxThreeValueDiff/Solution/.gitignore @@ -0,0 +1,4 @@ +/.settings +/target +/.classpath +/.project diff --git a/Klausuren/Sd1/Tests/MaxThreeValueDiff/Solution/Doc/a.xhtml b/Klausuren/Sd1/Tests/MaxThreeValueDiff/Solution/Doc/a.xhtml new file mode 100644 index 0000000000000000000000000000000000000000..46c577198d06c87d656d154811e397c9a02d2b2f --- /dev/null +++ b/Klausuren/Sd1/Tests/MaxThreeValueDiff/Solution/Doc/a.xhtml @@ -0,0 +1,68 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html> +<html lang="de" xmlns="http://www.w3.org/1999/xhtml"> + <head> + <title>Helper Methoden</title> + </head> + + <body><h2>Vorbereitung</h2><p>Entpacken Sie das oben sichtbare Archiv + <b>exam.zip</b> und importieren Sie den resultierenden Ordner + <code>Exam</code> als <span lang="en">Maven</span> Projekt in Ihren<span + lang="en"> Workspace</span>.</p><h2>Aufgabe</h2><p>Implementieren Sie die + Method <code>maxdiff(...)</code> in der Klasse + <code>de.hdm_stuttgart.mi.sd1.diff.Diff</code>.</p><h2>Allgemeine + Hinweise</h2><ul> + <li><p>Die Javadoc Kommentare der Methode beschreiben das gewünschte + Verhalten. Wählen Sie im Package Explorer die Projektwurzel und + generieren Sie die HTML Dokumentation über die Menüpunkte <code>Run + -> Run As... -> Maven build</code> mit dem Parameter + <code>javadoc:javadoc</code> im Eingabefeld „Goals:â€. Die generierte + HTML Dokumentation wird im Unterordner <code>target/site/apidocs</code> + Ihres Projekts angelegt und kann durch einen Web Browser Ihrer Wahl + betrachtet werden.</p><p>Lesen Sie diese Dokumentation <b>sehr + genau</b>.</p></li> + + <li><p>Für die Methode stehen Ihnen in der Junit Testklasse + <code>de.hdm_stuttgart.sw1.klausur.test.Test_MaxDiff</code> im + <code>src/test/java</code> Zweig Ihres Projekts korrespondierende Tests + zur Verfügung. Nutzen Sie diese!</p><p>Die von Ihnen erreichte Punktzahl + richtet sich nach der Anzahl positiv bestandener Tests. Sie bekommen + keine Punkte für Tests, bei denen Ihre Implementierung „fast richtig“ + ist. Implementieren Sie daher im Zweifelsfall weniger Methoden, diese + dafür aber vollständig.</p><p>Die Ausführung der Klasse + <code>de.hdm_stuttgart.sw1.klausur.mein_ergebnis.ShowReachedPoints</code> + <b>als Java Programm</b> (nicht als Junit Test!) aus dem + <code>src/test/java</code> Zweig Ihres Projekts liefert Ihnen die Zahl + der insgesamt erreichten und erreichbaren Punkte.</p></li> + + <li><p>Nutzen Sie den Debugger oder logging Statements im Fall + fehlgeschlagener Testfälle, falls Sie das zugrundeliegende Problem nicht + unmittelbar lösen können.</p></li> + </ul><h2 id="upload">Hochladen Ihrer Lösung in das + Klausursystem</h2><p>Exportieren Sie Ihre Implementierung dieser und + weiterer Programmieraufgaben per Rechtsklick im Package Explorer Ihres + Eclipse Projekts. Wählen Sie im Kontextmenü unter + »Export-->General-->Archive File« einen auf <code>.zip</code> endenden + Archivnamen. Exportieren Sie Ihr Projekt in dieses <code>.zip</code> Archiv + und laden Sie es in das Ilias Klausursystem hoch (unteres Seitenende) und + beachten Sie:</p><ul> + <li style="color: red;">Die hochgeladene .zip Datei muss im + Klausursystem sichtbar sein.</li> + + <li style="color: red;">Reservieren Sie ausreichend Zeit vor Klausurende + für den Vorgang des Hochladens. Projekte, welche sich lediglich auf dem + Arbeitsplatzrechner befinden, werden nicht gewertet.</li> + + <li style="color: red;">Laden Sie keine Projekte mit Java Syntaxfehlern + hoch, diese werden nicht bewertet!</li> + + <li style="color: red;">Exportieren Sie Ihr Projekt <b>nicht</b> als + „.tgz“, „.java“, „.tar.gz“ o.ä. Das Klausursystem akzeptiert nur Archive + mit der Endung „.zip“.</li> + </ul><p>Alternativ können Sie auch sofort nachfolgende Aufgaben bearbeiten + und diese gemeinsam mit der Lösung der aktuellen Aufgabe hochladen. + Nachfolgende Programmieraufgaben enthalten keine separate Möglichkeit zum + Hochladen.</p><p>Falls Sie mehrere Archive hochladen, wird nur das zuletzt + hochgeladene Archiv bewertet. Sie können hochgeladene Archive + löschen.</p></body> +</html> diff --git a/Klausuren/Sd1/Tests/MaxThreeValueDiff/Solution/pom.xml b/Klausuren/Sd1/Tests/MaxThreeValueDiff/Solution/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..9d7b0d4d67d3a3d4c693d3d91274707bb60d24a7 --- /dev/null +++ b/Klausuren/Sd1/Tests/MaxThreeValueDiff/Solution/pom.xml @@ -0,0 +1,42 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <groupId>de.hdm-stuttgart.de.sd1</groupId> + <artifactId>diff_solution</artifactId> + <version>1.0</version> + <packaging>jar</packaging> + + <name>Diff_solution</name> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <version>3.2</version> + <configuration> + <source>1.8</source> + <target>1.8</target> + </configuration> + </plugin> + + </plugins> + </build> + <dependencies> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.12</version> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>de.hdm_stuttgart.mi.exam</groupId> + <artifactId>unitmarking</artifactId> + <version>0.9</version> + </dependency> + + </dependencies> +</project> diff --git a/Klausuren/Sd1/Tests/MaxThreeValueDiff/Solution/src/main/java/de/hdm_stuttgart/mi/sd1/diff/Diff.java b/Klausuren/Sd1/Tests/MaxThreeValueDiff/Solution/src/main/java/de/hdm_stuttgart/mi/sd1/diff/Diff.java new file mode 100644 index 0000000000000000000000000000000000000000..73f5ff30fed8cec038a31e940f2a13a54bc919a1 --- /dev/null +++ b/Klausuren/Sd1/Tests/MaxThreeValueDiff/Solution/src/main/java/de/hdm_stuttgart/mi/sd1/diff/Diff.java @@ -0,0 +1,31 @@ +package de.hdm_stuttgart.mi.sd1.diff; + +/** + * Additional helper methods + * + */ +public class Diff { + /** + * Compute the absolute value of the biggest difference between + * two of three given numbers a, b, and c + * + * Examples: + * + * a == 1, b == 2, c ==10, the biggest absolute difference is 10 - 1 = 9 + * a == 4, b ==10, c == 1, the biggest absolute difference is 10 - 1 = 9 + * a ==-3, b == 4, c == 3, the biggest absolute difference is 4 - (-3) = 7 + * + * + * @param a The first of three parameters + * @param b The second of three parameters + * @param c The third of three parameters + * @return The absolute value of the biggest difference between any possble pair + * of the three parameters + */ + public static int maxDiff(int a, int b, int c) { + final int ab = Math.abs(a - b), + ac = Math.abs(a - c), + bc = Math.abs(b - c); + return Math.max(ab, Math.max(ac, bc)); + } +} diff --git a/Klausuren/Sd1/Tests/MaxThreeValueDiff/Solution/src/main/java/de/hdm_stuttgart/mi/sd1/diff/package-info.java b/Klausuren/Sd1/Tests/MaxThreeValueDiff/Solution/src/main/java/de/hdm_stuttgart/mi/sd1/diff/package-info.java new file mode 100644 index 0000000000000000000000000000000000000000..bc8fbda8699077f79792f2af91704af9380d17d8 --- /dev/null +++ b/Klausuren/Sd1/Tests/MaxThreeValueDiff/Solution/src/main/java/de/hdm_stuttgart/mi/sd1/diff/package-info.java @@ -0,0 +1,5 @@ +/** + * Dealing with difference values + * + */ +package de.hdm_stuttgart.mi.sd1.diff; \ No newline at end of file diff --git a/Klausuren/Sd1/Tests/MaxThreeValueDiff/Solution/src/test/java/de/hdm_stuttgart/sw1/klausur/mein_ergebnis/ShowReachedPoints.java b/Klausuren/Sd1/Tests/MaxThreeValueDiff/Solution/src/test/java/de/hdm_stuttgart/sw1/klausur/mein_ergebnis/ShowReachedPoints.java new file mode 100644 index 0000000000000000000000000000000000000000..b68079af1db4b2d44743e7dd875164006874b6c5 --- /dev/null +++ b/Klausuren/Sd1/Tests/MaxThreeValueDiff/Solution/src/test/java/de/hdm_stuttgart/sw1/klausur/mein_ergebnis/ShowReachedPoints.java @@ -0,0 +1,16 @@ +package de.hdm_stuttgart.sw1.klausur.mein_ergebnis; + +import de.hdm_stuttgart.mi.exam.unitmarking.RunTests; +import de.hdm_stuttgart.sw1.klausur.test.Test_MaxDiff; + +public class ShowReachedPoints { + + /** + * Execution reveals the number of reached points. + * + * @param args Unused + */ + public static void main(String[] args) { + RunTests.exec(Test_MaxDiff.class); + } +} diff --git a/Klausuren/Sd1/Tests/MaxThreeValueDiff/Solution/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_MaxDiff.java b/Klausuren/Sd1/Tests/MaxThreeValueDiff/Solution/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_MaxDiff.java new file mode 100644 index 0000000000000000000000000000000000000000..7c2d04b9b63bd0aeacf8643e528bc290d1b0957f --- /dev/null +++ b/Klausuren/Sd1/Tests/MaxThreeValueDiff/Solution/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_MaxDiff.java @@ -0,0 +1,52 @@ +package de.hdm_stuttgart.sw1.klausur.test; + +import static org.junit.Assert.assertEquals; + +import org.junit.FixMethodOrder; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.DisableOnDebug; +import org.junit.rules.TestRule; +import org.junit.rules.Timeout; +import org.junit.runners.MethodSorters; + +import de.hdm_stuttgart.mi.sd1.diff.Diff; + +@SuppressWarnings({ "javadoc" }) +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class Test_MaxDiff { + + // Kill test if tests last longer than 1000 milliseconds unless in debugging mode + @Rule + public final TestRule timeout = new DisableOnDebug(Timeout.millis(1000)); + + @Test + public void test01Zero() { + assertEquals(0, Diff.maxDiff(0, 0, 0)); + } + @Test + public void test02Equal() { + assertEquals(0, Diff.maxDiff(1, 1, 1)); + } + @Test + public void test03AscendingValues() { + assertEquals(2, Diff.maxDiff(1, 2, 3)); + } + @Test + public void test04DescendingValues() { + assertEquals(7, Diff.maxDiff(7, 5, 0)); + } + @Test + public void test05Middle() { + assertEquals(3, Diff.maxDiff(4, 1, 4)); + } + @Test + public void test06Negative() { + assertEquals(3, Diff.maxDiff(-1, -2, -4)); + } + @Test + public void test07Mixed() { + assertEquals(15, Diff.maxDiff(-5, 10, 0)); + assertEquals(37, Diff.maxDiff(-5, 30, -7)); + } +} \ No newline at end of file