import java.util.Scanner;

public class Opgaver {

    public static void main(String[] args) {
        Opgave1.opgave1();
        Scanner console = new Scanner(System.in);
        Opgave2.opgave2(console);
        Opgave3.printBogstaver("Julemanden var sej");
        sOpgave4.printFaktorer(24);
        Opgave5.quadratic(console);
    }
}

class Opgave1 {

    public static void opgave1() {
        System.out.println("\n OPGAVE 1: \n");
        for (int i = 0; i <= 13; i++) {
            System.out.println("i = " + i);
            omregnKarakter(i);
        }
    }

    public static void omregnKarakter(int karakter) {
        String nyeKarakter;
        String gamleKarakter = Integer.toString(karakter);
        if (karakter == 11 || karakter == 13) {
            nyeKarakter = "12";
        } else if (karakter == 10) {
            nyeKarakter = "10";
        } else if (karakter == 8 || karakter == 9) {
            nyeKarakter = "7";
        } else if (karakter == 7) {
            nyeKarakter = "4";
        } else if (karakter == 6) {
            nyeKarakter = "02";
        } else if (karakter == 5 || karakter == 03) {
            nyeKarakter = "00";
            gamleKarakter = "03";
        } else if (karakter == 0) {
            nyeKarakter = "-3";
            gamleKarakter = "00";
        } else {
            System.out.println("Ugyldig karakter indtastet");
            return;
        }
        System.out.println(
            "Karakteren " +
                gamleKarakter +
                " i 13-skalaen svarer til " +
                nyeKarakter +
                " i 7-trinsskalaen"
        );
    }
}

class Opgave2 {

    public static void opgave2(Scanner console) {
        System.out.print("How many numbers do you want to enter? ");
        int numbersCount = console.nextInt();
        System.out.print("Number 1: ");
        int smallestNumber = console.nextInt();
        int largestNumber = smallestNumber;
        for (int i = 2; i <= numbersCount; i++) {
            System.out.print("Number " + i + ": ");
            int nextNumber = console.nextInt();
            largestNumber = (nextNumber > largestNumber)
                ? nextNumber
                : largestNumber;
            smallestNumber = (nextNumber < smallestNumber)
                ? nextNumber
                : smallestNumber;
        }
        System.out.println(
            "Smallest: " + smallestNumber + "\nLargest: " + largestNumber
        );
    }
}

class Opgave3 {

    public static void printBogstaver(String inputStreng) {
        if (inputStreng == "") {
            throw new IllegalArgumentException("Fejl: Fået tomt input");
        }
        System.out.print(inputStreng.charAt(0));
        for (int i = 1; i < inputStreng.length(); i++) {
            System.out.print(" _ " + inputStreng.charAt(i));
        }
        System.out.println("");
    }
}

class Opgave4 {

    public static void printFaktorer(int n) {
        if (n <= 0) {
            throw new IllegalArgumentException(
                "Fejl: n skal være et positivt heltal"
            );
        }
        System.out.print(1);
        for (int i = 2; i <= n; i++) {
            if (n % i == 0) {
                System.out.print(" _ " + i);
            }
        }
        System.out.println("");
    }
}

class Opgave5 {

    public static void quadratic(Scanner console) {
        System.out.print("Indtast værdien for a: ");
        double a = console.nextDouble();
        System.out.print("Indtast værdien for b: ");
        double b = console.nextDouble();
        System.out.print("Indtast værdien for c: ");
        double c = console.nextDouble();
        double determinant = (b * b) - (4 * a * c);
        if (a == 0) {
            if (b == 0) {
                throw new IllegalArgumentException("Både a og b er nul");
            }
            System.out.println("Roden er: " + (-c / b));
            return;
        } else if (determinant < 0) {
            throw new IllegalArgumentException(
                "Determinanten kan ikke være negativ"
            );
        }
        double rod1 = (-b - Math.sqrt(determinant)) / (2 * a);
        double rod2 = (-b + Math.sqrt(determinant)) / (2 * a);

        System.out.println(
            (rod1 != rod2)
                ? "Første rod: " + rod1 + "\nAnden rod: " + rod2
                : "Roden: " + rod1
        );
    }
}
