Übungen / Aufgaben zu C#

0 Lösungen
Ternäre Logik (Dreiwertige Logik)
Fortgeschrittener - C# von JKooP - 02.12.2020 um 17:20 Uhr
Statt der bekannten Wahrheitswerte TRUE (t) und FALSE (f) gibt es noch einen weiteren Wert: DON’T CARE (x).
Dies wird als Dreiwertige Logik bezeichnet.

für x gilt zusätzlich bei Junktoren zur bekannten Aussagenlogik:

Negation:
NOT x => x

Konjunktion:
t AND x => x
f AND x => f
x AND x => x

Disjunktion:
t OR x => t
f OR x => x
x OR x => x

und darüber hinaus:

Inklusion:
A -> B => (NOT A) OR B

Äquivalenz:
(A <-> B) => (A -> B) AND (B -> A)

Es soll ein Programm erstellt werden, mit dem es möglich ist,
die o.a. ternäre Logik - auch innerhalb von Inklusion und Äquivalenz - abzubilden.
Hier bieten sich zur Lösung des Problems sowohl Methoden bzw. Funktionen,
als auch, wenn es die Programmiersprache zulässt, Operatorüberladungen an.

Beispiele:
t OR (NOT x) == t
NOT(x) OR (NOT(t)) == x
x -> t == t
(x OR f) <-> (x -> (f AND (NOT x))) == x

Viel Spaß
0 Lösungen
Zahlenpyramide (Reihenausgabe)
Anfänger - C# von JKooP - 23.11.2020 um 16:23 Uhr
Es soll per Funktion/Methode eine Zahlenpyramide (siehe jpg) mit den Ziffern 0-9 und der Höhe 10 erstellt werden.

Dies soll bewerkstelligt werden durch:

Aufgabe 1: (leicht)
mehrerer ineinander verschachtelter Schleifen,

Aufgabe 2: (schwieriger)
nur eine Schleife.

Viel Spaß
1 Lösung Lösung noch nicht öffentlich
Zahlentreppe (Reihenausgabe)
Anfänger - C# von JKooP - 23.11.2020 um 15:11 Uhr
Es soll per Funktion/Methode eine Zahlentreppe mit den Ziffern 0-9 und der Höhe 10 erstellt werden.

0
01
012
0123
01234
012345
0123456
01234567
012345678
0123456789

Dies soll bewerkstelligt werden durch:

Aufgabe 1: (leicht)
mehrerer ineinander verschachtelter Schleifen,

Aufgabe 2: (schwieriger)
nur eine Schleife.

Viel Spaß
0 Lösungen
Kleinste positive Zahl in einem Array
Fortgeschrittener - C# von JKooP - 21.11.2020 um 11:42 Uhr
Gegeben sei ein (beliebig großes) unsortiertes Integer- Array welches sowohl aus positiven als auch negativen Zahlen besteht.
Ermittelt werden soll die erste fehlende positive Zahl im Array.

Beispiele:
arr = [1, 2, 0] sortiert: [0, 1, 2]
Lösung: 3

arr = [5, 4, -2, -1, 1] sortiert: [-2, -1, 1, 4, 5]
Lösung: 2

arr = [6, 7, 8, 9, 10]
Lösung: 1

arr = [-4, -2, -1]
Lösung: 1

arr = [1, 2, 3, 4, 2147483647, 8]
Lösung: 5

arr = []
Lösung: 1

Viel Spaß
1 Lösung Lösung noch nicht öffentlich
Zielwertsuche in einem sortierten Array
Fortgeschrittener - C# von JKooP - 21.11.2020 um 09:10 Uhr
Aufgabe 1 (leicht)
In einem beliebig großen sortieren Array soll das erste Vorkommen desjenigen Zahlenpaares per Index ausgegeben werden, bei dem die Summe dem gesuchten Zielwert entspricht.
Dabei kommt jede Zahl nur einmal im Array vor.

arr = [3, 4, 15, 22]
target = 7
Index = [0, 1] (3+4)

arr = [1, 3, 4, 6]
target = 8
Index = [0, 0] oder NULL/Nothing (keine Lösung)

Aufgabe 2 (mittel)
Wie Aufgabe 1, jedoch können Zahlen doppelt vorkommen.

arr = [4, 4, 5, 6]
target = 8
Index = [0, 1] (4+4)

Aufagbe 3 (schwer)
In einem beliebig großen sortieren Array sollen alle Vorkommen derjenigen Zahlenpaare per Indizes ausgegeben werden, bei denen die Summen dem gesuchten Zielwert entsprechen. Dabei können alle Zahlen mehrfach vorkommen.

arr = [1, 3, 4, 6]
target = 7
Indizes = [0, 3] (1+6), [1, 2] (3+4)

Noch ein wenig schwieriger:
arr = [4, 4, 4, 5, 6]
target = 8
Indizes = [0, 1] (4+4), [0, 2] (4 + 4), [1, 2] (4 + 4)

Für alle Aufgaben gilt:
Dopplungen wie [1, 3] und [3, 1] gelten als gleichwertig und sollen nicht ausgegeben werden.

Viel Spaß
0 Lösungen
Median zweier zusammengefügter Arrays
Fortgeschrittener - C# von JKooP - 21.11.2020 um 07:46 Uhr
Es soll der Median (Zentralwert) eines sortierten Arrays,
das aus zwei (beliebig großen) zusammengefügten sortierten Arrays besteht, ermittelt werden.

Beispiele:
arr1 = [1, 3] arr2 = [2]
mergeSorted = [1, 2, 3] -> Median = 2

arr1 = [2, 4] arr2 = [1, 3]
mergeSorted = [1, 2, 3, 4] -> Median = 2.5
(wenn kein Zentralwert vorhanden ist, dann wird das arithmetische Mittel der beiden mittleren Zahlen ermittelt)
-> (2+3) / 2 = 2.5

Weitere Beispiele:
[0, 0] [0, 0] -> 0
[] [4] -> 4
[3] [] -> 3
[] [] -> 0
[-4, 4] [-2, 1] -> [-4, -2, 1, 4] -> -0.5

Fortgeschrittene können die Funktion/Methode dahingehend erweitern,
sodass sowohl mindestens 2 Arrays aufgenommen werden,
als auch auch ein Array bzw. eine Liste von Arrays verarbeitet werden kann.


Viel Spaß
0 Lösungen
Landeablage Fallschirmspringer
Fortgeschrittener - C# von JKooP - 16.11.2020 um 12:34 Uhr
Fallschirmspringer versuchen stets ihre vorgegebene Landezone (rot) zu treffen. Dennoch kommt es häufiger vor, dass aufgrund von unvorhergesehenen Einflüssen wie Scher- und Bodenwinde diese auch mal verfehlt wird (blau, orange, grün). Landeablagen, die radial einen Wert größer als 100m haben müssen dokumentiert werden. Dabei werden die Entfernung und die Richtung zum Soll- Ziel ermittelt. Die Koordinate (UTM) der Soll-Landezone ist bekannt.
Der Ist- Landepunkt wird mit einem GPS- Modul als Koordinate im UTM- Verfahren (WGS-84) ermittelt. Die Skizze im Anhang soll dies verdeutlichen.

Beispielkoordinate:

Ost: 374200
3: 100km- Quadrat
74200: Angabe in Meter -> 74200m (für Berechnung wichtig)

Nord: 5500150
55: 100km- Quadrat
00150: Angabe in Meter -> 150m (für Berechnung wichtig)

UTM: 374200 5500150


Beispiel zur Berechnung:

Soll- Koordinate: [Ost: 383000, Nord: 5500010]
Ist- Koordinate: [Ost: 383320, Nord: 5500220]

Wie groß sind die Landeablage in Meter und die Richtungsablage in Grad zu geografisch Nord?
Schreibe ein Programm, mit dem es möglich ist, jegliche Ablage in beliebige Richtung zu bestimmen.
3 Lösungen Lösungen öffentlich
Mobilfunkanbieter (Monatsabrechnung)
Anfänger - C# von JKooP - 07.11.2020 um 09:42 Uhr
Ein Mobilfunkanbieter stellt folgende Pakete zur Verfügung:

Paket-Typ....Basispreis....Freiminuten....Minutenpreis
P_Basis........2,95€..............0...................0,10€
P_100..........3.95€.............100................0,12€
P_300..........7,95€.............300................0,15€
P_600..........12,95€...........600................0,20€
P_Flat..........29,95€...........unbegrenzt.....0,00€

Schreibe eine Funktion/Methode, bei der sowohl der Paket-Typ als auch die telefonierten Minuten übergeben werden.
Als Ergebnis soll der Gesamtpreis inklusive Basispreis für den Monat ausgegeben werden.

Viel Spaß


0 Lösungen
Kniffel (Yahtzee, Pasch)
Fortgeschrittener - C# von JKooP - 06.11.2020 um 15:24 Uhr
Schreibe eine Klasse/Modul mit der/dem es möglich ist das Spiel Kniffel in abgespeckter Form abzubilden.
Zur Vereinfachung soll statt 3 nur 1 Mal gewürfelt werden.
Als Ergebnis sollen alle möglichen Gewinnstufen eines Wurfs sowohl des oberen als auch des unteren Blocks mit der erreichten Punktzahl ausgegeben werden.

Beispielwurf: 2-2-2-4-4

Oberer Block:
Zweier: 2+2+2 = 6 (nur Summe der 2er zählen)
Vierer: 4+4 = 8 (nur Summe der 4er zählen)

Unterer Block:
Dreierpasch: 2+2+2 und 4+6 = 16 (Summe aller Augen)
Full House: Dreierpasch + Zweierpasch -> Sonderwertung = 25
Chance: 2+2+2+4+6 = 16 (Summe aller Augen)

Als Erweiterung kann auch das dreimalige Würfeln implementiert werden.
Da die Interaktion mit der Konsole nicht allzu bedienerfreundlich ist, sollte
man vielleicht auf eine grafischen Benutzeroberfläche ausweichen.

Viel Spaß
1 Lösung Lösung noch nicht öffentlich
Zahlensysteme konvertieren
Anfänger - C# von JKooP - 01.11.2020 um 10:53 Uhr
Schreibe eine Methode/Funktion, mit der man jede als Datentyp „String“ angegeben Zahl eines beliebigen Zahlensystems (binär, ternär, oktal, hexadezimal…) ins Dezimalsystem konvertieren kann.

Beispiele:

("1010", 2) binär --> 10 dezimal
("120", 3) ternär --> 15 dezimal
("15", 8) oktal --> 13 dezimal
("FF", 16) hexadezimal --> 255 dezimal

Viel Spaß
3 Lösungen Lösungen öffentlich
Periodenlänge von Stammbrüchen
Fortgeschrittener - C# von JKooP - 01.11.2020 um 09:50 Uhr
Stammbruch nennt man einen Bruch mit einer 1 im Zähler und einer beliebigen natürlichen Zahl im Nenner.
Schreibe eine Methode/Funktion, mit der man die Periodenlänge eines solchen Bruchs berechnen kann.

Beispiele:

1/4 = 0,25 --> Periodenlänge ist 0, da der Bruch abbricht
1/6 = 0,166666… = 0,16 --> Periodenlänge ist 1, da sich nur die Ziffer 6 wiederholt
1/11 = 0,090909… = 0.09 --> Periodenlänge ist 2, da sich die Ziffern 0 und 9 wiederholen

Viel Spaß
1 Lösung Lösung noch nicht öffentlich
Geburtstags-Paradoxon
Fortgeschrittener - C# von JKooP - 24.10.2020 um 18:45 Uhr
Du feierst eine Geburtstagsparty. Nach und nach kommen immer mehr Gäste.
Während des Wartens stellst du dir die Frage, wie viele der anwesenden Personen ebenfalls heute Geburtstag haben könnten.

Schreibe eine Methode/Funktion, die einen Wert zurückliefert, ab wie vielen Gästen die Wahrscheinlich bei größer 50% liegt, dass mindestens noch ein Gast am gleichen Tag Geburtstag hat.

Bedingungen:
- nur der Tag des Jahres, nicht zusätzlich das Geburtsjahr sollen übereinstimmen
- das Jahr hat konstant 365 Tage
- saisonal bedingte Geburtenraten sollen nicht betrachtet werden