From 23f9e2cdf23418ab6e724c1d25bdee08b5d0deab Mon Sep 17 00:00:00 2001 From: Hevin Coskun <3003241@stud.hs-mannheim.de> Date: Mon, 16 Dec 2024 22:25:21 +0100 Subject: [PATCH] .. --- live/.DS_Store | Bin 0 -> 6148 bytes live/lösungen/datentypen/TreppenSteigen.nim | 37 ++++++++++++ live/lösungen/oop/Tier.nim | 62 ++++++++++++++++++++ live/lösungen/prozeduren/Fibonacci.nim | 14 +++++ live/lösungen/prozeduren/Minimum.nim | 10 ++++ live/lösungen/prozeduren/Palindrom.nim | 32 ++++++++++ skript/.DS_Store | Bin 0 -> 6148 bytes 7 files changed, 155 insertions(+) create mode 100644 live/.DS_Store create mode 100644 live/lösungen/datentypen/TreppenSteigen.nim create mode 100644 live/lösungen/oop/Tier.nim create mode 100644 live/lösungen/prozeduren/Fibonacci.nim create mode 100644 live/lösungen/prozeduren/Minimum.nim create mode 100644 live/lösungen/prozeduren/Palindrom.nim create mode 100644 skript/.DS_Store diff --git a/live/.DS_Store b/live/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..95248b6b01653ded4b608efe159c633e97bf3d1c GIT binary patch literal 6148 zcmeHK%}N6?5T3C;tn|{O$Gk${AeQwBdKARgNTZ886x84al0Uz6H$XE$f8t4rmLnabDjdZI^so&VV!E z4E&e@+}R?{OwoI1z!`7`z8H}6A)pCH!>m}24s@ji0LnAE2z03>BqkU}!>kAkgf$eX zp=>1vYdGeE`9;I5sNuv`e6X#2E?&5-j{Kpx6GuhwodIWH%)ms4bGiTT@XJ(-{Bekn zoB?OxpE1DGcGWKNQFgape4gC30qqe@MEtTS5a^>v00wf7+!UkQgXr*!hFMXv$b1P0 P`a_@);+-?_3k-Y$2S_g! literal 0 HcmV?d00001 diff --git a/live/lösungen/datentypen/TreppenSteigen.nim b/live/lösungen/datentypen/TreppenSteigen.nim new file mode 100644 index 0000000..ecc550c --- /dev/null +++ b/live/lösungen/datentypen/TreppenSteigen.nim @@ -0,0 +1,37 @@ +import random +import sequtils + +randomize() # initialisiert den Zufallsgenerator +var aktuelleStufe = 0 +var wuerfe = 0 + +type + Wuerfel = enum + EINS = 1, ZWEI = 2, DREI = 3, VIER = 4, FUENF = 5, SECHS = 6 + +var wurfErgebnisse: seq[Wuerfel] + +echo "Starte das Treppensteigen" + +while aktuelleStufe < 50: + let wuerfel = Wuerfel(rand(1..6)) # Simuliere einen Würfelwurf (Zahlen von 1 bis 6) + wurfErgebnisse.add(wuerfel) + inc wuerfe # Ein Wurf wurde gemacht, equivalent zu wuerfe += 1 + + + # Spielregeln: Bei 1 oder 6 eine Treppe runter + case wuerfel: + of EINS, SECHS: + if aktuelleStufe > 0: + dec aktuelleStufe # equivalent zu akutelleStufe -= 1 + echo "eine Treppe runter" + else: + aktuelleStufe = 0 + echo "schon ganz unten" + of ZWEI .. FUENF: + inc aktuelleStufe #equivalent zu akutelleStufe -= 1 + echo "eine Treppe hoch" + +echo "Herzlichen Glückwunsch! Du hast das Haus erklommen!." +echo "Anzahl der Würfe: ", wuerfe +echo "Zwischenergebnisse:\n", wurfErgebnisse.map(proc(x: Wuerfel): int = ord (x)) \ No newline at end of file diff --git a/live/lösungen/oop/Tier.nim b/live/lösungen/oop/Tier.nim new file mode 100644 index 0000000..e273261 --- /dev/null +++ b/live/lösungen/oop/Tier.nim @@ -0,0 +1,62 @@ +# Basisklasse Tier +type + Tier* = ref object of RootObj + name*: string # Öffentlich zugänglicher Name des Tieres + alter: int # Privates Feld für das Alter des Tieres + +# Getter für das Alter +proc getAlter*(t: Tier): int = + t.alter + +# Setter für das Alter mit Apostroph-Syntax +proc `alter=`*(t: var Tier, value: int) = + if value >= 0: + t.alter = value + else: + echo "Alter kann nicht negativ sein." + +# Methode gibLaut für die Basisklasse +proc gibLaut*(t: Tier): string = + result = "..." + +# Abgeleitete Klasse Hund +type + Hund* = ref object of Tier + +# Überschreibe die Methode gibLaut für Hund +proc gibLaut*(h: Hund): string = + result = "Wuff" + +# Abgeleitete Klasse Katze +type + Katze* = ref object of Tier + +# Überschreibe die Methode gibLaut für Katze +proc gibLaut*(k: Katze): string = + result = "Miau" + +# Hauptprogramm zum Testen +var + hund: Hund = Hund(name: "Rocky") + katze: Katze = Katze(name: "Garfield") + +# Setze Alter für Hund und Katze mit Apostroph-Syntax +hund.alter = 3 +katze.alter = 2 + +# Ausgabe der Details +echo "Name des Hundes: ", hund.name +echo "Alter des Hundes: ", hund.getAlter() +echo hund.name, " sagt: ", hund.gibLaut() + +echo "\nName der Katze: ", katze.name +echo "Alter der Katze: ", katze.getAlter() +echo katze.name, " sagt: ", katze.gibLaut() + +# Ändere Alter für beide Tiere mit Apostroph-Syntax +hund.alter = 4 +katze.alter = 3 + +# Ausgabe des neuen Alters +echo "\n", hund.name, "'s neues Alter: ", hund.getAlter() +echo katze.name, "'s neues Alter: ", katze.getAlter() diff --git a/live/lösungen/prozeduren/Fibonacci.nim b/live/lösungen/prozeduren/Fibonacci.nim new file mode 100644 index 0000000..67bd73a --- /dev/null +++ b/live/lösungen/prozeduren/Fibonacci.nim @@ -0,0 +1,14 @@ + +proc fibonacci(n: int): int = + if n < 0: + raise newException(ValueError, "n muss eine nicht-negative Ganzzahl sein.") + elif n == 0: + return 0 + elif n == 1: + return 1 + else: + return fibonacci(n - 1) + fibonacci(n - 2) + + +let stelle = 10 +echo "Die Fibonacci-Zahl an der Stelle ", stelle, " ist ", fibonacci(stelle), "." diff --git a/live/lösungen/prozeduren/Minimum.nim b/live/lösungen/prozeduren/Minimum.nim new file mode 100644 index 0000000..c5bec1f --- /dev/null +++ b/live/lösungen/prozeduren/Minimum.nim @@ -0,0 +1,10 @@ +proc findeMin(numbers: seq[int]): int = + var min = numbers[0] + for num in numbers: + if min > num: + min = num + return min + +let numbers = @[5, 40, 1, -3, 9, 30, -5] + +echo "Die kleinste Zahl in der Sequenz ", numbers, " ist: ", findeMin(numbers) \ No newline at end of file diff --git a/live/lösungen/prozeduren/Palindrom.nim b/live/lösungen/prozeduren/Palindrom.nim new file mode 100644 index 0000000..66cd7a1 --- /dev/null +++ b/live/lösungen/prozeduren/Palindrom.nim @@ -0,0 +1,32 @@ +import std/unicode + +proc isPalindrome(s: string): bool = + return s == s.reversed() + + +let testString = "hallo" # Beispiel: Palindrom +if isPalindrome(testString): + echo testString, " ist ein Palindrom." +else: + echo testString, " ist kein Palindrom." + + + + + +# alternativ +proc reverseString(str: string): string = + var reversedStr = "" + for i in countdown(str.len - 1, 0): # Iteriere über den String rückwärts + reversedStr.add(str[i]) # Füge jedes Zeichen in umgekehrter Reihenfolge hinzu + return reversedStr + +proc isPalindromeManuell(s: string): bool = + return s == s.reverseString() + + +let testString2 = "madam" # Beispiel: Palindrom +if isPalindrome(testString2): + echo testString2, " ist ein Palindrom." +else: + echo testString2, " ist kein Palindrom." \ No newline at end of file diff --git a/skript/.DS_Store b/skript/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0