Übungen / Aufgaben zu C#

6 Lösungen Lösungen öffentlich
Fibonacci-Zahlen bis 100 ausgeben
Anfänger - C# von Y0uLyric - 14.12.2016 um 21:42 Uhr
Schreibe Code, der die Fibonacci-Zahlen bis 100 ausgibt. Die Fibonacci-Zahlen kommen dadurch zustande, dass 2 aufeinanderfolgende Zahlen addiert werden, zb.: 0 + 1 = 2 --> 1 + 2 = 3 --> 2 + 3 = 5 --> 3 + 5 = 8.....

Viel Erfolg!!!
0 Lösungen
Bearbeiten & Speichern von CSV Dateien
Fortgeschrittener - C# von ZRX88 - 11.12.2016 um 21:29 Uhr
Das Ziel ist die automatische Verarbeitung von CSV Dateien.

Eine typische Anwendung ist die Anbindung an eine externe API, die eine CSV bei jeden Aufruf zurückgibt. Diese CSV wird in der Regel noch verarbeitet bevor sie in eine Datenbank geladen wird.

The programm should have following functions:
* generate a random csv with a given lenght ( number of rows and columns)
* read and write csv files from a directory
* remove columns
* add the new column "hash" which should be the MD5 hash of all given columns. Note the column is different for all rows.
* add the new column "request_tstamp" which should be the current time, the value should be the same for all rows.
* transform all values of given column in the way that '.' is replaced by ',' or '€' by an empty string
0 Lösungen
Regelmäßiges Runterladen und Abspeichern von Dateien
Anfänger - C# von ZRX88 - 04.12.2016 um 12:06 Uhr
Eine Firma X stellt euch einen FTP Zugang (ggf. mit Zugang + PW ) zur Verfügung, wo sie jeden Tag eine Datei xyz.txt updaten und mit den aktuellsten Datensätzen befüllen.

Im ersten Schritt sollen diese Dateien heruntergeladen werden und dann auch in einem Ordner auf der Festplatte abgelegt werden.
Zum Wiedererkennen soll sowohl die Quelle als auch der Zeitpunkt des Downloads abgespeichert werden:
mögliche Beispiele:
* Zielorder > File 'FTP_x_xzy_2016_12_24.txt'
* Zielorder > Ordername '2016-12-24' > File 'xyz.txt'

Wichtig: Die Ablage muss sauber strukturiert sein.

Anmerkung: Da ich euch keinen FTP zur Verfügung stelle und wenn ihr keinen eigenen zum Testen habt:
Stattdessen ladet doch einfach den Inhalt von https://trainyourprogrammer.de/python herunter.

Optional:
* Erweitert das Programm so, dass es alle Dateien auf dem FTP herunterlädt.
* Alternativ: Speichert den Inhalt von alle verfügbaren Python Aufgaben Seiten herunter?


3 Lösungen Lösungen öffentlich
Mehrdimensionale Arrays
Anfänger - C# von zefcat - 27.11.2016 um 10:46 Uhr
Sie sollen ein C Programm schreiben, welches eine 4x4 Matrix um 90° nach rechts dreht. Eine Drehung soll somit folgendermaßen aussehen:

a11 a12 a13 a14
a21 a22 a23 a24
a31 a32 a33 a34
a41 a42 a43 a44

wird zu

a41 a31 a21 a11
a42 a32 a22 a12
a43 a33 a23 a13
a44 a34 a24 a14

Folgende Matrizen sollen Sie insgesamt 4 mal drehen:


- - - - - - - - - - - - - - o -
- o - - - o o - - o - - - - o -
o o o - o o - - - o - - - - o -
- - - - - - - - - o o - - - o -


Die Matrizen sollen insgesamt 5 mal ausgegeben werden, einmal bevor eine Drehung durchgeführt wurde und anschließend nach jeder Drehung (die letzte Ausgabe entspricht also der ersten Ausgabe).

Als Trennzeichen dienen ein Leerzeichen zwischen den einzelnen Symbolen innerhalb einer Matrix, zwei Leerzeichen zwischen zwei horizontal angeordnete Matrizen und eine Leerzeile zwischen den einzelnen Versionen. Beachten Sie das Fehlen von abschließenden Leerzeichen nach der letzten Matrize. Siehe dazu auch die Beispielausgabe.
2 Lösungen Lösungen noch nicht öffentlich
GUI-Anwendung für Feiertags- und Arbeitstageausgabe
Anfänger - C# von hollst - 11.11.2016 um 10:23 Uhr
Schreibe eine GUI-Anwendung, die ausgehend von einem Startdatum bis zu einem (exklusiven) Enddatum alle dazwischen liegenden Feiertage in Deutschland ausgibt sowie die Anzahl der Arbeitstage, d. h. Anzahl der Tage abzüglich Sa. + So. und Feiertage, die nicht auf Sa. oder So. fallen. Das Ergebnis soll bundeslandbezogen sein (also bitte Auswahlmöglichkeit einbauen).

Optional kann man das auf Österreich und/oder die Schweiz erweitern.
2 Lösungen Lösungen noch nicht öffentlich
Cosinus Näherungsverfahren
Anfänger - C# von vk_26 - 09.11.2016 um 12:49 Uhr
- Main Methode, die eine Benutzereingabe (eine
Dezimalzahl) liest.

- Das Programm soll den Cosinus dieser Zahl berechnen. Dazu sollen Sie ein
Näherungsverfahren verwenden und dieses mit der Bibliotheksfunktion Math.cos() vergleichen.
Eine Näherung lautet: cos(x) = 1 - ( x ^ 2 / 2 ! ) + ( x ^ 4 / 4 ! ) - ( x ^ 6 / 6 ! ) + ....

Sie sollen diese Reihe fortsetzen, solange der zu addierende Term betragsmäßig größer als 10-6 ist. Dann geben Sie das Ergebnis, das
Resultat der Bibliotheksfunktion, und die Anzahl von Termen, die sie addieren mussten, aus.

Stellen Sie sicher, dass auch negative Eingaben und 0 korrekt behandelt werden. Beispiel:

Eingabe: 1,5

Ausgabe: 0.07073693411690848 Bibliothek: 0.0707372016677029 Terme: 5

- Was passiert bei der Eingabe von 30, 40 oder 50? Haben Sie eine Idee, wie das Problem lösbar
wäre?
1 Lösung Lösung noch nicht öffentlich
Druckauftrag an lokal installierten Drucker senden - Betriebssystem Windows
Fortgeschrittener - C# von Gustl - 29.10.2016 um 19:03 Uhr
Schreibe ein Programm welches alle lokalen Drucker auflistet und der Benutzer einen Drucker auswählen kann. Es sollen verschiede Daten gedrückt werden können.

- Textdateien
- Bilder
- PDF Dateien
- Byte Array welche zB. Von einem Webservice zurück kommt.

Als Erweiterung sollen noch die jeweiligen Druckeinstellungen wie Druckhelligkeit, etc. eingestellt werden können.

Der letzte ausgewählte Drucker und alle Druckeinstellungen soll das Programm in einer xml json ini oder ähnliches Format abgespeichert und bei Programmstart wieder ausgelesen und gesetzt werden.
1 Lösung Lösung noch nicht öffentlich
Erzeugen einer Text-Spirale
Anfänger - C# von hak - 08.10.2016 um 20:06 Uhr
Schreibe ein Programm das einen beliebigen Text in Spiralform ausgibt!

Für den Input "123456789" sollte das Programm ausgeben:
543
612
789

Beispiel im Anhang: das Alphabet in Spiralform (Python)
4 Lösungen Lösungen öffentlich
Beharrlichkeit natürlicher Zahlen
Anfänger - C# von hollst - 30.09.2016 um 12:20 Uhr
Mathematiker denken sich manchmal ziemlich unsinnige Dinge aus, frei nach dem Motte
"Was interessiert mich der Sinn der Objekte, die ich mir ausgedacht habe,
wichtig (und aufregend) ist für mich lediglich, die Eigenschaften dieser Objekte zu
erkunden".

So verstehen einige Mathematiker unter der "Beharrlichkeit" (englisch persistence)
einer natürlichen Zahl, dargestellt als Folge dezimaler Digits, die "Widerstandskraft"
der Zahl gegenüber einer wiederholenden Verkleinerung durch Multiplikation ihrer Digits.

Beispiele:

pers(38) = 2

(wegen 3 * 8 = 24 und 2 * 4 = 8, d. h. zweifache Wiederholung der Multiplikationen, jeweils
auf das Ergebnis der Vorgängermultiplikationen bezogen)

pers(1236) = 3

(1 * 2 * 3 * 6 = 36; 3 * 6 = 18; 1 * 8 = 8).

Eine Reduzierung der beschriebenen Art bis auf lediglich ein Digit ist bei jeder natürlichen
Zahl möglich. Die Zahlen 0 ... 9 haben es ganz schlecht, denn ihre Beharrlichkeit ist gleich
Null. Schlechte Karten haben auch alle mehrstelligen Zahlen, bei denen irgendein Digit Null
ist, sie reduzieren sich mit nur einem einzigen Multiplikationszyklus auf die
Beharrlichkeit Eins.

Es gibt aber andere Zahlen, die wesentlich beharrlicher sind.

Die Aufgabenstellung besteht nun darin, für alle 2-stelligen, 3-stelligen ... bis hin zu
allen 6-stelligen natürlichen Dezimalzahlen diejenigen zu ermitteln, die innerhalb ihres
Definitionsbereiches (Anzahl der Dezimalstellen) die größte Beharrlichkeit aufweisen.

Erschwerung: Zwei Zahlen, die durch Vertauschung von Digits ineinander überführt werden
können, sind als gleich zu betrachten (z. B. 18 und 81 oder 1317 und 3711) und es ist
lediglich die kleinere (hier die 18 bzw. die 1317) zu berücksichtigen.
4 Lösungen Lösungen öffentlich
Große Potenzen und Fakultäten
Anfänger - C# von hollst - 27.09.2016 um 11:24 Uhr
Man zeige numerisch, dass es (wahrscheinlich) keine natürlichen Zahlenpaare (N, K) mit N >= 1 und K >= 1 gibt,
die folgender Gleichung genügen: (N + K)! = N^N (sprich N hoch N). N und K sollen bei der Simulation jeweils <= 1.000 sein.
3 Lösungen Lösungen öffentlich
Bombenbauen für Informatiker
Fortgeschrittener - C# von eulerscheZhl - 21.09.2016 um 07:43 Uhr
XML Bomben machen sich Ersetzungsregeln in XML Dateien zunutze. Diese Regeln können verwendet werden, um riesige Dateien zu erstellen und den Zielrechner so zum Absturz zu bringen (eine genauere Beschreibung findet sich in der Wikipedia oder bei SemperVideo).

In dieser Aufgabe soll es darum gehen, eine möglichst kleine Bombe zu schreiben, die entpackt eine geforderte Mindestgröße hat.
Die XML Bombe soll dabei dem Format des folgenden Beispiels folgen, Zeilenumbrüche werden als ein Zeichen gezählt.

Beispiel:

Konsolenausgabe:

Größe der Bombe eingeben: 2500000
Bombe mit Größe 2588278 und 285 Zeichen gefunden:
<?xml version="1.0"?>
<!DOCTYPE X [
<!ENTITY a "AAAAAAAAAAAAAAAAAAAAAA">
<!ENTITY b "&a;&a;&a;&a;&a;&a;&a;">
<!ENTITY c "&b;&b;&b;&b;&b;&b;&b;">
<!ENTITY d "&c;&c;&c;&c;&c;&c;&c;">
<!ENTITY e "&d;&d;&d;&d;&d;&d;&d;">
<!ENTITY f "&e;&e;&e;&e;&e;&e;&e;">
]>
<X>&f;&f;&f;&f;&f;&f;&f;</X>
2 Lösungen Lösungen noch nicht öffentlich
Paarungstabellen für Rundenturniere
Anfänger - C# von hollst - 01.09.2016 um 12:34 Uhr
Bei Sportarten nach einem System "Jeder gegen Jeden" (bspw. Hinrunde Fußballbundesliga) mit N Teilnehmern (N sei gerade, falls nicht, wird ein "Dummyakteur" hinzugefügt) werden insgesamt N - 1 Runden a N/2 Spiele ausgetragen. Zur Festlegung der Paarungen einer Runde kann auf verschiedene Art und Weise vorgegangen werden, bspw. mittels Auslosung. Allerdings ist das Losverfahren unfair (u. a. keine Balance der Heim- und Auswärtsspiele) und findet aus diesem Grunde so gut wie keine praktische Anwendung. Besser geeignet und bspw. bei Schachturnieren Basis sind sogenannte Paarungstabellen nach Berger (siehe z. B. www.schachfreunde-markgraeflerland.de/media/pdf/Turniersysteme.pdf), nachfolgend als Beispiel für ein Turnier mit 10 Teilnehmern aufgelistet:

1. Runde 1-10 2-9 3-8 4-7 5-6
2. Runde 10-6 7-5 8-4 9-3 1-2
3. Runde 2-10 3-1 4-9 5-8 6-7
4. Runde 10-7 8-6 9-5 1-4 2-3
5. Runde 3-10 4-2 5-1 6-9 7-8
6. Runde 10-8 9-7 1-6 2-5 3-4
7. Runde 4-10 5-3 6-2 7-1 8-9
8. Runde 10-9 1-8 2-7 3-6 4-5
9. Runde 5-10 6-4 7-3 8-2 9-1

Solche Tabellen wurden bereis vor dem "Computerzeitalter" mühevoll per Hand erstellt (siehe z. B. http://www.schachclub-forchheim.de/pdfs/Paarungstafeln.pdf), wobei i. d. R. bei einer Teilnehmerzahl von weit unter 30 aufgehört wurde.

Aufgabe ist es ein Programm zu schreiben, das solche Paarungstabellen nach Berger automatisch generiert, wobei die Teilnehmerzahl nach oben nicht begrenzt sei.