diff --git a/prog 3a.iml b/prog 3a.iml index c90834f..5dfd50f 100644 --- a/prog 3a.iml +++ b/prog 3a.iml @@ -4,8 +4,10 @@ + + \ No newline at end of file diff --git a/src/praktikum01/Zahlenfilter.java b/src/praktikum01/Zahlenfilter.java index 7307f07..d04086f 100644 --- a/src/praktikum01/Zahlenfilter.java +++ b/src/praktikum01/Zahlenfilter.java @@ -9,33 +9,41 @@ public class Zahlenfilter { public void filterZahlen(int start, int end) { for (int i = start; i <= end; i++) { - if (istDurchFuenfTeilbar(i)) { + if (checkDivisibleBy5(i)) { System.out.println(i + " ist durch 5 teilbar!"); } - if (endetAufNeun(i)) { + if (checkEndsWith9(i)) { System.out.println(i + " endet auf 9!"); } - if (ergibtMitVorgaengerDurchDreiTeilbareSumme(i)) { + if (checkSumDivisibleBy3(i, i - 1)) { int vorgaenger = i - 1; int summe = i + vorgaenger; System.out.println(i + " und " + vorgaenger + " addiert ergeben " + summe + " und " + summe + " ist durch 3 teilbar."); } + + if (filter(i, i - 1)) { + System.out.println(i + " erfüllt keine der Filterkriterien."); + } } } - private boolean istDurchFuenfTeilbar(int zahl) { - return zahl % 5 == 0; + public static boolean checkDivisibleBy5(int number) { + return number % 5 == 0; } - private boolean endetAufNeun(int zahl) { - return zahl % 10 == 9; + public static boolean checkEndsWith9(int number) { + return number % 10 == 9; } - private boolean ergibtMitVorgaengerDurchDreiTeilbareSumme(int zahl) { - int vorgaenger = zahl - 1; - int summe = zahl + vorgaenger; - return summe % 3 == 0; + public static boolean checkSumDivisibleBy3(int number, int previousNumber) { + return (number + previousNumber) % 3 == 0; + } + + public static boolean filter(int number, int previousNumber) { + return !checkDivisibleBy5(number) && + !checkEndsWith9(number) && + !checkSumDivisibleBy3(number, previousNumber); } } \ No newline at end of file diff --git a/src/praktikum02/TriangleChecker.java b/src/praktikum02/TriangleChecker.java new file mode 100644 index 0000000..ec33dee --- /dev/null +++ b/src/praktikum02/TriangleChecker.java @@ -0,0 +1,72 @@ +package praktikum02; + +import java.util.Scanner; + +public class TriangleChecker { + + public enum TriangleType { + NONE, + NORMAL, + ISOSCELES, // Gleichschenklig + EQUILATERAL // Gleichseitig + } + + + public static void main(String[] args) { + Scanner s = new Scanner(System.in); + System.out.println("Geben Sie die Seitenlängen ein."); + float a = enterFloat(s, "a: "); + float b = enterFloat(s, "b: "); + float c = enterFloat(s, "c: "); + s.close(); + printAnalysis(a, b, c); + } + + // Eingabe einer Seitenlänge + private static float enterFloat(Scanner s, String prompt) { + System.out.print(prompt); + return s.nextFloat(); + } + + // Ausgabe der ermittelten Dreiecksart + private static void printAnalysis(float a, float b, float c) { + TriangleType type = checkTriangle(a, b, c); + switch (type) { + case NONE: + System.out.println("Kein Dreieck"); + break; + case NORMAL: + System.out.println("Dreieck"); + break; + case ISOSCELES: + System.out.println("Gleichschenkliges Dreieck"); + break; + case EQUILATERAL: + System.out.println("Gleichseitiges Dreieck"); + break; + } + } + + // Analyse der Dreiecksart + public static TriangleType checkTriangle(float a, float b, float c) { + // Überprüfen auf ungültige Seitenlängen + if (a <= 0 || b <= 0 || c <= 0 || a + b <= c || a + c <= b || b + c <= a) { + return TriangleType.NONE; + } + + // Gleichseitiges Dreieck + if (a == b && b == c) { + return TriangleType.EQUILATERAL; + } + + // Gleichschenkliges Dreieck + if (a == b || b == c || a == c) { + return TriangleType.ISOSCELES; + } + + // Normales Dreieck + return TriangleType.NORMAL; + } + + +} \ No newline at end of file diff --git a/test/praktikum02/TriangleCheckerTest.java b/test/praktikum02/TriangleCheckerTest.java new file mode 100644 index 0000000..1d84499 --- /dev/null +++ b/test/praktikum02/TriangleCheckerTest.java @@ -0,0 +1,53 @@ +package praktikum02; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; + +public class TriangleCheckerTest { + @Test + public void testNormalTriangle() { + assertEquals(TriangleChecker.TriangleType.NORMAL, TriangleChecker.checkTriangle(3, 4, 5)); + } + + @Test + public void testEquilateralTriangle() { + assertEquals(TriangleChecker.TriangleType.EQUILATERAL, TriangleChecker.checkTriangle(3, 3, 3)); + } + + // Testfall: Eine Seite ist zu lang + @Test + public void testNoTriangle_OneSideTooLong() { + assertEquals(TriangleChecker.TriangleType.NONE, TriangleChecker.checkTriangle(1, 2, 10)); + } + + // Testfall: Eine andere Seite ist zu lang + @Test + public void testNoTriangle_SecondSideTooLong() { + assertEquals(TriangleChecker.TriangleType.NONE, TriangleChecker.checkTriangle(10, 1, 2)); + } + + // Testfall: Eine dritte Seite ist zu lang + @Test + public void testNoTriangle_ThirdSideTooLong() { + assertEquals(TriangleChecker.TriangleType.NONE, TriangleChecker.checkTriangle(2, 10, 1)); + } + + // Testfall: Eine Seite ist negativ + @Test + public void testNoTriangle_NegativeSide() { + assertEquals(TriangleChecker.TriangleType.NONE, TriangleChecker.checkTriangle(-3, 4, 5)); + } + + // Testfall: Zwei Seiten sind negativ + @Test + public void testNoTriangle_TwoSidesNegative() { + assertEquals(TriangleChecker.TriangleType.NONE, TriangleChecker.checkTriangle(-3, -4, 5)); + } + + // Testfall: Alle Seiten sind negativ + @Test + public void testNoTriangle_AllSidesNegative() { + assertEquals(TriangleChecker.TriangleType.NONE, TriangleChecker.checkTriangle(-3, -4, -5)); + } + +} \ No newline at end of file