Übungen / Aufgaben zu C#

1 Lösung Lösung noch nicht öffentlich
Brüche und überladene Operatoren
Anfänger - C# von Exception - 09.06.2018 um 09:07 Uhr
- Erstelle eine Klasse "Bruch"

- In dieser Klasse gibt es zwei Attribute: Zähler, Nenner (jeweils Integer)

- In dieser Klasse gibt es zudem noch überladene Opteratoren (+, -, *, /)
Diese Operatoren haben jeweils zwei Parameter, die übergeben werden müssen -> zwei Objekte der Klasse Bruch.
Die Operatoren geben einen neuen Bruch zurück.

In der Hauptmethode (oder sonst wo) soll dann folgendes möglich sein:
Quellcode ausblenden C#-Code
Bruch b1 = new Bruch(1, 2);
Bruch b2 = new Bruch(3, 4);
Bruch b3 = b1 + b2;  // auch -, *, /

- Die Klasse Bruch braucht für das Teilen von Brüchen evtl. noch ein bisschen mehr... #Methoden ;)

- Das Anlegen / Erzeugen von Brüchen soll mit Textboxen realisiert werden, sodass das ganze Programm grafisch etwas her macht.

- Die Rechenopertation (+,-,*,/) soll mit einer Dropdown Liste o.ä. ausgewählt werden.

- Mit einem Button soll die Berechnung starten und das Ergebnis anschließend in zwei weitere Textboxen (read only) geschrieben werden.

- Damit die Brüche nicht zu groß werden (50/100 o.ä.) soll bevor das Ergebnis in die Textbox geschrieben wird geschaut werden, ob sich der neue Bruch kürzen lässt.
0 Lösungen
Die beste Darlehensart berechnen
Anfänger - C# von Exception - 04.06.2018 um 17:06 Uhr
Schreibe ein Programm welches folgende Parameter übergeben bekommt:
- Nominalzins p.a.
- Laufzeit (Jahre)
- Darlehen (€)

Berechne dann anhand dieser Parameter welche der drei folgenden Darlehensarten am besten für den Kreditnehmer ist:
- Fälligkeitsdarlehen
- Ratendarlehen
- Annuitätendarlehen

... und gib die Ergebnisse aus, auch inwiefern sie sich untereinander unterscheiden - jeder Cent zählt! ;)
1 Lösung Lösung noch nicht öffentlich
Babylonisches Wurzelziehen / Heron-Verfahren / Heronsches Näherungsverfahren
Anfänger - C# von Exception - 03.06.2018 um 08:27 Uhr
Die zu schreibende Anwendung soll eine positive Zahl entgegennehmen und durch das Heron-Verfahren näherungsweise die Quadratwurzel berechnen.

Zusatz:
Es werden die einzelnen Schritte ausgegeben, siehe Beispiel.

Beispiel: mit Wurzel aus 12

...
Die Wurzel aus 12 ist zwischen 3.5 und 3.4
...
Die Wurzel aus 12 ist zwischen 3.45 und 3.46
...


~ Viel Spaß :)
0 Lösungen
Konvertieren von JSON <---> XML <---> CSV
Anfänger - C# von Exception - 02.06.2018 um 08:07 Uhr
- Schreibe ein Programm, welches eine Datei einlesen kann.
- Diese Datei soll in einem der folgenden Formate sein: CSV, XML, JSON
- Das Programm erkennt welches Format die eingelesene Datei hat und zeigt dies an (z.B. "Format: JSON")
- Dem Nutzer soll die Möglichkeit gegeben werden im Anschluss die Datei in einem der anderen beiden Formate abzuspeichern

Beispiel:

JSON wird eingelesen
JSON wird zu CSV umgewandelt
CSV wird als neue Datei abgespeichert
3 Lösungen Lösungen öffentlich
Programmierung eines Anagramm-Generators
Fortgeschrittener - C# von hollst - 31.05.2018 um 14:02 Uhr
Unter einem (vollständigen) Anagramm eines Basiswortes versteht man
sinnvolle Wörter, die aus den gleichen Buchstaben wie
das Basiswort zusammengesetzt sind. Z. B. sind zum Basiswort TOR die Wörter
ROT und ORT Anagramme. Die Folge OTR ist kein Anagramm (kein sinnvolles Wort).

Für den zu programmierenden Anagramm-Generator, der ein Basiswort entgegennehmen
und eine Liste sinnvoller Anagramme ausgeben soll (Bild 1), wird natürlich eine
Liste aller sinnvollen Wörter einer (natürlichen) Sprache benötigt. Mein Vorschlag
ist es, sich den Textfile germany.dic von

https://sourceforge.net/projects/germandict/

herunterzuladen. Er enthält knapp 2.000.000 Einträge "sinnvoller" deutscher Wörter,
darunter auch eines meiner Lieblingswörter:

Rindfleischetikettierungsüberwachungsaufgabenübertragungsgesetz.

Dieses Wort steht in der Tat sogar im Duden, allerdings nur an Stelle zwei der Wurmwörter,
den ersten Platz hat

Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung.

Ja, aber das nur zum Schmunzeln am Rande. Viel Spaß!
4 Lösungen Lösungen öffentlich
Einfacher Namensgenerator
Anfänger - C# von Exception - 30.05.2018 um 15:23 Uhr
Schreibe ein Programm, welches zwei Textdateien (zb Vorname.txt, Nachname.txt) Zeile für Zeile in ein Array lädt.
Gebe dann eine zufällige Kombination aus Vornamen und Nachnamen aus.
0 Lösungen
Code schreiben (Serialisierung)
Fortgeschrittener - C# von A.hann - 28.05.2018 um 18:09 Uhr
Ihr Kunde ist verzweifelt. Er ist im Besitz des Programmcodes einer Klasse Person sowie einer Datei friends.dat. In friends.dat sind serialisierte Bytefolgen verschiedener Person-Objekte enthalten. Ihr Kunde weiß nicht, wie er die Bytefolgen wieder "zum Leben erweckt" (aktiviert). Er möchte von Ihnen wissen, welche Personen in der Datei friends.dat stecken und wie die Freundschaftsbeziehungen zwischen den Personen aussehen. Ihr Kunde weiß, dass die Datei friends.dat ein einziges Objekt vom Typ ArrayList<Person> enthält. Hier der Quelltext der Klasse Person (im anonymen Default-Package)


Sie erhalten die Klasse Person im Quelltext sowie die Datei friends.dat als Anlage zu dieser Aufgabe. Erstellen Sie eine statische Methode decode in der Klasse Decode (im anonymen Default-Package) welche die als Dateinamen-Parameter gegebene Datei deserialisiert und dann die Freundschaftsbeziehungen in der Reihenfolge ausgibt, wie sie in der deserialisierten ArrayList stehen. Das gewünschte Ausgabeformat ist wie folgt (wobei die Datei friends.dat andere als die folgenden Personendaten enthält):
1 Lösung Lösung noch nicht öffentlich
Einfaches Verwaltungstool mit CSV Import / Export
Anfänger - C# von Exception - 18.05.2018 um 14:31 Uhr
Der Personalchef in Firma "Bli Bla Blub & Söhne" hat nicht länger Lust, alles was Mitarbeiter betrifft, auf Zetteln zu führen bzw. zu verwalten.
Er ist sowieso der Ansicht, dass zu viele Bäume Tag für Tag abgeholzt werden...
Nun kommt er mit der Bitte zu dir, ein Programm zu entwickeln, welches ihm das Leben diesbezüglich einfacher machen soll.

Deine Aufgabe: Schreibe in der Programmiersprache deiner Wahl ein grafisches Verwaltungsprogramm.

Anforderungen an das Programm:
1) Möglichkeit Mitarbeiter anzulegen, deren Daten zu editieren bzw. Mitarbeiter zu löschen.
2) Ausgabe der Informationen aller Mitarbeiter in einer Tabelle (zur Übersichtlichkeit, während der Laufzeit).
3) Die Informationen der Tabelle sollen sortiert werden können (z.B. nach Abteilung, Geschlecht, ...) ==> noch mehr Übersichtlichkeit! :)
4) Damit die Daten nachdem das Programm geschlossen wurde nicht verloren gehen soll es zusätzlich eine Import- und Export-Funktion geben, welche alle Daten in eine CSV-Datei speichert.
4.1) Export: Es soll eine CSV-Datei erstellt werden, d.h. alle Informationen eines jeden Mitarbeiters werden via Komma, Tab, o.ä. getrennt in die Datei geschrieben. Ein Zeilenumbruch gibt an, dass nun die Informationen des nächsten Mitarbeiters kommen.
4.2) Import: Die CSV-Datei soll eingelesen werden. Aus allen Informationen eines einzelnen Mitarbeiters soll wieder ein Objekt instanziiert werden. Wenn alle Mitarbeiter importiert wurden, sollen diese wieder in der Tabelle angezeigt werden.

Hinweise:
- Export: Gib der Klasse "Mitarbeiter" vielleicht eine extra Methode, die dir deinen CSV-String bastelt (natürlich nur, wenn du auch eine Klasse "Mitarbeiter" hast ;) )


Beispiel einer kleinen CSV-Datei:
Vorname; Nachname; Geschlecht; Geburtsdatum; Abteilung/Job

Heinz; Bli; männlich; 01.01.1910; Chef
Günther; Bla; männlich; 02.02.1920; Personalchef
Erika; Blub; weiblich; 03.03.1930; Leitering Abteilung Marketing
Mannfred; Bli-Blub; männlich; 04.04.1940; Entwickler


Viel Freude beim entwickeln und basteln :)
1 Lösung Lösung noch nicht öffentlich
Screenshots erstellen und abspeichern
Anfänger - C# von Exception - 17.05.2018 um 15:36 Uhr
Aufgaben:
1) Erstelle ein Windows Forms Programm, welches via Buttonklick einen Screenshot erstellen kann.
2) Zusätzlich soll dieser Screenshot dann in einem beliebigen Ordner abgespeichert werden können, aber nur, falls dies der Nutzer auch möchte.
3) Das Bild kann dann dementsprechend in verschiedenen Formaten abgespeichert werden (png, jpg, …)

Optional:
- Gib dem Nutzer zusätzlich die Möglichkeit nur einen gewissen Bereich des Bildschirms als Screenshot abspeichern zu können (man möchte ja ggf. nur ein Fenster o.ä. aufnehmen)
- Möglichkeit das Bild um x Grad drehen
- Möglichkeit etwas in das Bild zeichnen, z.B. einen roten Rahmen
- Farbverläufe?
- etc. etc. etc.

Was ist ein Screenshot? Klicke hier!
2 Lösungen Lösungen noch nicht öffentlich
Minesweeper, der zündende Klassiker
Fortgeschrittener - C# von Exception - 16.05.2018 um 19:49 Uhr
Dieses Spielchen kennt sicher jeder...
...ein X * Y großes Spielfeld und die ein oder andere explosive Überraschung #boom ... :)

Ihr kennt Minesweeper nicht? Dann klickt hier!

Die Anforderungen:
1) Grafische Umsetzung
2) Das Spielfeld soll eine variable Größe haben (konfigurierbar vor dem Start)
3) Die einzelnen Minen sollen zufällig verteilt werden
4) Felder, die keine Mine enthalten zeigen nachdem sie angeklickt wurden die Anzahl der Minen, die sich im direkten Umkreis befinden.
5) Mit der rechten Maustaste kann der Spieler auf das Feld eine Fahne setzen, über dem er gerade mit dem Mauszeiger hovert und auf dem er eine Mine vermutet. Bei erneutem Rechtsklick wird die gesetzte Fahne wieder entfernt (Aufpassen dass nicht mehr Fahnen platziert werden können als es Minen gibt!)

Das Spiel endet...
... wenn ein Minenfeld angeklickt wurde / "explodiert" ist => Verloren
... oder bestenfalls, wenn alle Minen mit Fahnen markiert wurden => Sieg

Nice to have (optional):
- Ein Timer der anzeigt wie lange gebraucht wurde
- Bestenliste
- Anzahl der Minen kann eingestellt werden, sonst muss die Anzahl eben abhängig von der Feldgröße berechnet werden.
- Sound: Beim Feld anklicken, wenn Mine getroffen wurde, ...... #Kreativität
2 Lösungen Lösungen noch nicht öffentlich
Kilometerrechner mit Erstattungsbetrag
Anfänger - C# von syneex - 15.05.2018 um 16:30 Uhr
Guten Tag,

die heutige Aufgabe ist:
einen "Kilometerrechner" zu programmieren, der Die Differenz zwischen Anfangs-, und Endstand eines Tachos ausgeben kann und pro Kilometer dem Fahrer einen gewissen Betrag erstattet.

Design:
Wie im Anhang beigefügt sollen Sie ein Windows Forms Programm erstellen, welches jeweils einem numericupdown Element für den Anfangsstand und den Enstand eines Tachos besitzt. Sie können sich an dem im Screenshot gezeigten Design orientieren.

Funktion:
Im numericupdown1 soll der Anfangsstand und im numericupdown2 der Endstand eingetragen werden. Drückt man auf den Button "Berechnen", bekommt man den Erstattungsbetrag für die gesamte Strecke heraus (fester Satz liegt für diese Aufgabe bei 0.39 Euro pro Kilometer). Drückt man auf "Kilometer anzeigen", werden die gefahrenen Kilometer angezeigt (Die gefahrenen Kilometer zwischen Anfangs-, und Endstand).

Zum Probieren:
Sie könnten versuchen den Erstattungsbetrag pro gefahrenen Kilometer ebenfalls in die Form einzubauen und die Berechnung dann mit diesem eingegebenen Betrag durchführen

Viel Spaß und Viel Erfolg :)

PS: Sorry für die schlechte Qualität meines Screenshots :(
1 Lösung Lösung noch nicht öffentlich
Fibonacci und die Zahl 89
Anfänger - C# von hollst - 14.05.2018 um 13:09 Uhr
Wenn man die Glieder der Fibonacci-Folge

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233 ...

entsprechend nachfolgendem Schema anordnet

0.0
0.01
0.001
0.0002
0.00003
0.000005
0.0000008
0.00000013
0.000000021
0.0000000034
0.00000000055
0.000000000089
0.0000000000144
.
.

und die Glieder aufaddiert, ergibt sich

----------------
0.01123595505...

Diese rationale Zahl beginnt mit den gleichen Nachkommadigits wie 1/89:

1/89 = 0.0112359550561798... (16 Nachkommastellen (Double))
= 0.01123595505617977528089887640449... (Taschenrechner (Abb. 1), 32 Nachkommastellen)

Berücksichtigt man bei obiger Addition quasi alle Summanden, so wird vermutet, dass sich in der Tat 1/89 exakt ergibt, unglaublich, wenn wahr, oder?

Diese Eigenschaft der Fibonacci-Folge wurde erst 1994 entdeckt (von einem Herrn Cody Birsner, damals Student in Oklahoma). Also, auch heute
ist noch genügend Platz für grandiose und phantastische Entdeckungen in der Zahlentheorie.

Man zeige mittels Programmierung, dass die Vermutung (die mittlerweile bewiesen ist) selbst bis zur Taschenrechnergenauigkeit mit 32 Nachkommastellen nicht widerlegt wird.