commit 674247094f5b628daebc0d1592f85d581e3e0a74 Author: Nico Baldauf <3009359.stud-mannheim.de> Date: Thu May 2 12:52:10 2024 +0200 Added new Project to Git diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..c8b8bcc --- /dev/null +++ b/.classpath @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..a690014 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + PflichtUebung2 + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..4824b80 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/bin/.gitignore b/bin/.gitignore new file mode 100644 index 0000000..b5c8492 --- /dev/null +++ b/bin/.gitignore @@ -0,0 +1,4 @@ +/CaesarVerschluesselung.class +/DezimalZuRoemisch.class +/Primzahlen.class +/SiebDesEratosthenes.class diff --git a/src/CaesarVerschluesselung.java b/src/CaesarVerschluesselung.java new file mode 100644 index 0000000..49098e0 --- /dev/null +++ b/src/CaesarVerschluesselung.java @@ -0,0 +1,42 @@ +import java.util.Scanner; + +// Programm zur Verschlüsselung von Zeichenketten mit Caesar-Chiffre + +public class CaesarVerschluesselung { + + public static void main(String[] args) { + // Für die Eingabe von der Tastatur + Scanner in = new Scanner(System.in); + // Anleitung + System.out.println("Eingabe einer Zeichenkette: "); + // Zeichenkette einlesen + String eingabe = in.nextLine(); + // erstellt neue Zeichenkette & initialisiert sie mit einem leeren Wert + String verschluesselt = ""; + // Schleifenbedingung & Variable deklarieren und um 1 hochzählen + for (int zaehler = 0; zaehler < eingabe.length(); zaehler++) { + char aktuellesZeichen = eingabe.charAt(zaehler); + + // Überprüfen, ob das Zeichen ein Buchstabe ist (Groß- oder Kleinbuchstabe) + if ((aktuellesZeichen >= 'A' && aktuellesZeichen <= 'Z') + || (aktuellesZeichen >= 'a' && aktuellesZeichen <= 'z')) { + + char verschluesseltesZeichen; + // Verschlüsselung der Buchstaben + if (aktuellesZeichen >= 'a') { + verschluesseltesZeichen = (char) (((aktuellesZeichen - 'a' + 1) % 26) + 'a'); + } else { + verschluesseltesZeichen = (char) (((aktuellesZeichen - 'A' + 1) % 26) + 'A'); + } + verschluesselt += verschluesseltesZeichen; + } else { + // Nicht-Buchstaben bleiben unverändert + verschluesselt += aktuellesZeichen; + } + } + // Ausgabe der Ergebnisse + System.out.println("Caesar-Chiffre: " + verschluesselt); + + in.close(); + } +} \ No newline at end of file diff --git a/src/DezimalZuRoemisch.java b/src/DezimalZuRoemisch.java new file mode 100644 index 0000000..b7e1eb9 --- /dev/null +++ b/src/DezimalZuRoemisch.java @@ -0,0 +1,40 @@ +import java.util.Scanner; + +// Programm zur Umwandlung von Dezimalzahlen zu römischen Zahlen + +public class DezimalZuRoemisch { + + public static void main(String[] args) { + Scanner in = new Scanner(System.in); + System.out.print("Bitte geben Sie eine Dezimalzahl ein: "); + int dezimal = in.nextInt(); + in.close(); + // Schleifenbedingung, Wertebereich der für das Beenden des Programms sorgt + if (dezimal < 1 || dezimal > 3999) { + System.out.println("Ungültige Eingabe. Die Dezimalzahl muss im Bereich von 1 bis 3999 liegen."); + } else { + + // Speichern der ursprünglichen Dezimalzahl + int originalDezimal = dezimal; + // Textbehälter + String roman = ""; + + int[] dezimalwerte = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 }; + String[] roemischeSymbole = { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" }; + + // Prüfung ob die Schleifenbedingung erfüllt wird + // Umwandlung der Dezimalzahl zur größtmöglichen römischen Zahl + for (int indexWert = 0; indexWert < dezimalwerte.length; indexWert++) { + while (dezimal >= dezimalwerte[indexWert]) { + // Methode, um dem Behälter Werte hinzuzufügen + roman += (roemischeSymbole[indexWert]); + dezimal -= dezimalwerte[indexWert]; + } + } + // Hier wird eine Methode aufgerufen, um den gesamten Inhalt des Textbehälter + // als normaler + // String zurückzugeben + System.out.println("Die Dezimalzahl " + originalDezimal + " in römischer Darstellung lautet: " + roman); + } + } +} \ No newline at end of file diff --git a/src/Primzahlen.java b/src/Primzahlen.java new file mode 100644 index 0000000..8b2af01 --- /dev/null +++ b/src/Primzahlen.java @@ -0,0 +1,39 @@ +import java.util.Scanner; + +// Programm zur Prüfung auf Primzahleneigenschaft + +public class Primzahlen { + + public static void main(String[] args) { + // Für die Eingabe von der Tastatur + Scanner in = new Scanner(System.in); + // Anleitung + System.out.println("Das Programm gibt alle Primzahlen bis zur der eingegebenen Zahl aus."); + System.out.println("Geben Sie eine potenzielle Primzahl ein:"); + // Eingabe und Int-Werte einlesen + int eingabe = in.nextInt(); + // kopfgesteuerte Schleife, Variablen deklarieren, + // Schleifenbedingung, Variable um 1 erhöhen + // Jede Zahl, bis zur eingegebenen Zahl wird auf die Primzahleigenschaft überprüft + for (int potenziellePrimzahl = 2; potenziellePrimzahl <= eingabe; potenziellePrimzahl++) { + int potenziellerTeiler = 2; + // Schleifenbedingung, Berechnung/Prüfung erfolgt mit Quadratwurzel der eingegebenen Zahl + // dadurch verringert sich die Anzahl der Prüfungen erheblich + while (potenziellerTeiler <= Math.sqrt(potenziellePrimzahl) + && potenziellePrimzahl % potenziellerTeiler != 0) { + // Variable um 1 erhöhen + potenziellerTeiler++; + + } + // Prüfung mit Quadratwurzel, ob ein Teiler gefunden wurde der + // kleiner oder gleich der Quadratwurzel ist, wenn nicht, dann Primzahl + if (potenziellerTeiler > Math.sqrt(potenziellePrimzahl)) { + // Ausgabe der Ergebnisse + System.out.println(potenziellePrimzahl + " ist eine Primzahl"); + } + + in.close(); + } + + } +} \ No newline at end of file diff --git a/src/SiebDesEratosthenes.java b/src/SiebDesEratosthenes.java new file mode 100644 index 0000000..99c703d --- /dev/null +++ b/src/SiebDesEratosthenes.java @@ -0,0 +1,46 @@ +import java.util.Scanner; + +// Programm zur Prüfung auf Primzahleigenschaft mithilfe des Sieb des Eratosthenes + +public class SiebDesEratosthenes { + + public static void main(String[] args) { + // Für die Eingabe von der Tastatur + Scanner in = new Scanner(System.in); + // Anleitung + System.out.println("Geben Sie eine maximale Zahl n ein:"); + // Eingabe und Int-Wert einlesen + int maxZahl = in.nextInt(); + // Array wird erstellt + int[] istPrimzahl = new int[maxZahl + 1]; + + // Initialisierung des Arrays, Variablen deklarieren + for (int pruefZahl = 2; pruefZahl <= maxZahl; pruefZahl++) { + istPrimzahl[pruefZahl] = 1; + } + + // Schleifenbedingung, Sieb des Eratosthenes wird verwendet, + // um alle Primzahlen bis zur maxZahl zu identifizieren und zu makieren + // Hochzählen der Prüfzahl um 1 + for (int pruefZahl = 2; pruefZahl <= maxZahl; pruefZahl++) { + if (istPrimzahl[pruefZahl] == 1) { + int multiplikator = pruefZahl + pruefZahl; // Beginne bei pruefZahl + pruefZahl statt bei pruefZahl*2 + //Schleifenbedingung + while (multiplikator <= maxZahl) { + istPrimzahl[multiplikator] = 0; + multiplikator += pruefZahl; // Erhöhe um pruefZahl + } + } + } + + // Ausgabe der Ergebnisse + System.out.println("Die Primzahlen bis zur Zahl " + maxZahl + " sind:"); + // Schleifenbedingung + for (int pruefZahl = 2; pruefZahl <= maxZahl; pruefZahl++) { + if (istPrimzahl[pruefZahl] == 1) { + System.out.print(pruefZahl + " "); + } + } + in.close(); + } +} \ No newline at end of file