Übungen / Aufgaben zu C#
2 Lösungen
Anzahl der Möglichkeiten, in N unterscheidbaren Eimern, N nicht unterscheidbare Tennisbälle zu lagern
Man habe N unterscheidbare Eimer, unterscheidbar bspw. durch Nummerierung der Eimer,
und N Tennisbälle, die man nicht voneinanderder unterscheiden kann.
Wie viele Möglichkeiten gibt es, die N Bälle in N Eimern aufzubewahren?
Dies sei für N = 3 ... 10 anhand eines Computerprogramms zu berechnen.
Bei N = 1, gibt es nur eine Möglichkeit. Bei N = 2 gibt es 3 Möglichkeiten: (2,0), (1,1) und (0,2).
Viel Spaß!
und N Tennisbälle, die man nicht voneinanderder unterscheiden kann.
Wie viele Möglichkeiten gibt es, die N Bälle in N Eimern aufzubewahren?
Dies sei für N = 3 ... 10 anhand eines Computerprogramms zu berechnen.
Bei N = 1, gibt es nur eine Möglichkeit. Bei N = 2 gibt es 3 Möglichkeiten: (2,0), (1,1) und (0,2).
Viel Spaß!
8 Lösungen
Preise im Copy-Shop für Kopien
In einem Copy-Shop gilt folgende Preisliste:
01 - 49 Seiten kostet 0,10 Euro pro Seite
50 - 99 Seiten kostet 0,09 Euro pro Seite
100 - 199 Seiten kostet 0,08 Euro pro Seite
ab 200 Seiten kostet 0,06 Euro pro Seite
Erstellen Sie ein Programm, welches nach Eingabe der Anzahl der Kopien den Gesamtpreis ausgibt.
01 - 49 Seiten kostet 0,10 Euro pro Seite
50 - 99 Seiten kostet 0,09 Euro pro Seite
100 - 199 Seiten kostet 0,08 Euro pro Seite
ab 200 Seiten kostet 0,06 Euro pro Seite
Erstellen Sie ein Programm, welches nach Eingabe der Anzahl der Kopien den Gesamtpreis ausgibt.
5 Lösungen
Welche Zahl ist die größte?!
Schreiben Sie, unter Verwendung geschalteter if-Anweisungen, ein Programm, welches die größte von drei eingegebenen Zahlen ausgibt.
Der Fall, dass zwei oder alle drei Zahlen gleich sind, soll nicht betrachtet werden.
Der Fall, dass zwei oder alle drei Zahlen gleich sind, soll nicht betrachtet werden.
3 Lösungen
Information über aktuelle Seitenzahl für Buchdruck
Aus drucktechnischen Gründen sollten Bücher möglichst eine durch 8 teilbare Seitenzahl haben.
Schreiben Sie ein Programm, welches den Autor nach Eingabe der momentanen Seitenzahl darüber informiert, ob diese Forderung erfüllt ist
oder wie viele Seiten er gegebenenfalls weglassen oder hinzufügen sollte.
Schreiben Sie ein Programm, welches den Autor nach Eingabe der momentanen Seitenzahl darüber informiert, ob diese Forderung erfüllt ist
oder wie viele Seiten er gegebenenfalls weglassen oder hinzufügen sollte.
4 Lösungen
Rabatt für Stammkunden
Ein Kassenprogramm verlangt die Eingabe eines Betrags und fragt, ob der Kunde Stammkunde ist. Falls ja, erhält er 5% Rabatt.
Das Programm soll auf die Eingaben "j" und "n", groß und klein geschrieben, reagieren.
Das Programm soll auf die Eingaben "j" und "n", groß und klein geschrieben, reagieren.
1 Lösung
Hysterie bei Atemwegserkrankung Covid-19
Die Covid-19-Hysterie ist zwar sehr nervig, hat mich aber zu folgender Aufgabenstellung inspiriert:
Eine Menge von N Leuten (sagen wir N = 1.000) haben Eintrittskarten für ein bevorstehendes Pop-Konzert gebucht. Die Stornierungsfrist ist noch nicht vorüber. Mit Ausbruch der Hysterie entscheidet sich 1/4 der N Leute, die Buchung zu stornieren, ebenfalls N/4 sind festen Willens, das Konzert trotz Covid-19-Ansteckungsgefahr zu besuchen. Der Rest der N Bucher macht eine Stornierung oder Teilnahme am Konzert von folgenden Bedingungen abhängig: N/4 würde stornieren, wenn die Gesamtzahl der Besucher unterhalb bzw. einschließlich 50 % sinkt (N/2). Sie befürchten, dass sich die Künstler bei weniger als die Hälfte der möglichen Besucher auch nur sehr wenig Mühe geben würden. Die letzten N/4 würden eine in Betracht gezogene Stornierung nicht vornehmen, wenn die Teilnehmerzahl unterhalb bzw. einschließlich 25 % gesunken ist. Ihr Argument: Bei nur N/4 oder weniger Zuschauer wäre genügend Zwischenraumplatzt, um sich quasi nicht zu infizieren.
Die Programmieraufgabe bestehe nun darin abzuschätzen, wieviele Besucher das Pop-Konzert in etwa haben wird.
Oder genauert: Der Konzertveranstalter würde das Konzert absagen, wenn weniger als 37.5 % der N Bucher tatsächlich buchen werden. Mit welcher Wahrscheinlichkeit wird das Konzert nicht abgesagt.
Wir gehen wie folgt vor: jeder der N Leute gehört mit eine Wahrscheinlichkeit von 1/4 zu einer der vier Gruppen (1 - auf jeden Fall stornieren, 2 - auf jeden Fall teilnehmen, 3 - vielleicht stornieren, 4 - vielleicht teilnehmen). Also, 25 % kommen auf jeden Falle, aber maximal 75 %.
Beginnend mit einem Besucher der Gruppe 2 (auf jeden Fall teilnehmen) werden nacheinander alle N - 1 Restinteressenten in zufälliger Reihenfolge nach ihrer Entscheidung befragt. Die Entscheidung ist für den befragten Besucher endgültig, selbst wenn sich im Laufe der Befragung die Bedingungen für die Zuordung zu Gruppe 3 oder 4 ändern sollten.
Viel Spaß!
Eine Menge von N Leuten (sagen wir N = 1.000) haben Eintrittskarten für ein bevorstehendes Pop-Konzert gebucht. Die Stornierungsfrist ist noch nicht vorüber. Mit Ausbruch der Hysterie entscheidet sich 1/4 der N Leute, die Buchung zu stornieren, ebenfalls N/4 sind festen Willens, das Konzert trotz Covid-19-Ansteckungsgefahr zu besuchen. Der Rest der N Bucher macht eine Stornierung oder Teilnahme am Konzert von folgenden Bedingungen abhängig: N/4 würde stornieren, wenn die Gesamtzahl der Besucher unterhalb bzw. einschließlich 50 % sinkt (N/2). Sie befürchten, dass sich die Künstler bei weniger als die Hälfte der möglichen Besucher auch nur sehr wenig Mühe geben würden. Die letzten N/4 würden eine in Betracht gezogene Stornierung nicht vornehmen, wenn die Teilnehmerzahl unterhalb bzw. einschließlich 25 % gesunken ist. Ihr Argument: Bei nur N/4 oder weniger Zuschauer wäre genügend Zwischenraumplatzt, um sich quasi nicht zu infizieren.
Die Programmieraufgabe bestehe nun darin abzuschätzen, wieviele Besucher das Pop-Konzert in etwa haben wird.
Oder genauert: Der Konzertveranstalter würde das Konzert absagen, wenn weniger als 37.5 % der N Bucher tatsächlich buchen werden. Mit welcher Wahrscheinlichkeit wird das Konzert nicht abgesagt.
Wir gehen wie folgt vor: jeder der N Leute gehört mit eine Wahrscheinlichkeit von 1/4 zu einer der vier Gruppen (1 - auf jeden Fall stornieren, 2 - auf jeden Fall teilnehmen, 3 - vielleicht stornieren, 4 - vielleicht teilnehmen). Also, 25 % kommen auf jeden Falle, aber maximal 75 %.
Beginnend mit einem Besucher der Gruppe 2 (auf jeden Fall teilnehmen) werden nacheinander alle N - 1 Restinteressenten in zufälliger Reihenfolge nach ihrer Entscheidung befragt. Die Entscheidung ist für den befragten Besucher endgültig, selbst wenn sich im Laufe der Befragung die Bedingungen für die Zuordung zu Gruppe 3 oder 4 ändern sollten.
Viel Spaß!
5 Lösungen
ÜBUNG ARRAYS- Wie viele Türen stehen am Ende dieses Algorithmus offen?
Ein mittelalterlicher Herrscher nahm bei einem Feldzug 100 Feinde gefangen, die er in 100 Einzelzellen steckte. An seinem Geburtstag sollten einige freigelassen werden, und zwar nach einem sehr speziellen Verfahren. Zunächst werden alle Zellentüren aufgeschlossen. Dann wird in einem zweiten Durchgang jede zweite Türe wieder geschlossen. Im dritten Durchgang wird jede dritte Tür geschlossen, falls sie offen steht, oder geöffnet falls sie geschlossen ist. Und so geht es im nächsten Durchgang weiter, bis zum hundertsten Durchgang. Wieviele Türen stehen am Ende dieses Algorithmus offen?
Verwenden Sie ein Array vom Datentyp bool mit 100 Elementen. True soll eine offene Türe repräsentieren und false eine geschlossene. Erstellen Sie ein Programm um die Anzahl der offenen Türen zu bestimmen und geben Sie das Ergebnis auf der Konsole aus
Verwenden Sie ein Array vom Datentyp bool mit 100 Elementen. True soll eine offene Türe repräsentieren und false eine geschlossene. Erstellen Sie ein Programm um die Anzahl der offenen Türen zu bestimmen und geben Sie das Ergebnis auf der Konsole aus
2 Lösungen
Arrays-zweidimensional Noten Notenberechnung
In einer Klasse werden in einem Schulhalbjahr in 6 Fächern bis zu 5 Klassen arbeiten geschrieben. Es ist ein Programm zu entwickeln, mit dem ein Schüler seine je Fach erzielten Noten eingeben kann. Bei nicht geschriebenen Arbeiten wird als Note die Null gespeichert. Der Rechner soll er mitteln,wie vieleArbeitender Schüler geschriebenhat. Ferner sollder Rechner den Noten durchschnitt proFachberechnen. Nachjeder Eingabe erscheint folgender Bildschirm(im Anhang):
Hinweise zur Realisierung: im Hauptprogramm werden folgende Funktionen aufgerufen: eingabe() unduebersicht() eingabe(): Eingabeeiner Note Übergabeparameter: keine Rückgabe wert: n: zweidimensionales Feld vom Typ Ganzzahl übersicht(): Ausgabeder Notenübersicht Übergabeparameter: n:zweidimensionales Feld vom Typ Ganzzahl Rückgabewert:kein
Achtung! wenninmain:
1) Feld-def.:noten[6,5]
2) Feld an Methode übergeben noten=eingabe(noten)
3) in Methode neues Feld n[3,3] bei return (n) wird in der Aufrufzeile von main das Feld noten bzw.die Referenz auf das Feld überschrieben!!! Referenz auf noten wird durch die Referenz auf das neue Feld n überschrieben!
Hinweise zur Realisierung: im Hauptprogramm werden folgende Funktionen aufgerufen: eingabe() unduebersicht() eingabe(): Eingabeeiner Note Übergabeparameter: keine Rückgabe wert: n: zweidimensionales Feld vom Typ Ganzzahl übersicht(): Ausgabeder Notenübersicht Übergabeparameter: n:zweidimensionales Feld vom Typ Ganzzahl Rückgabewert:kein
Achtung! wenninmain:
1) Feld-def.:noten[6,5]
2) Feld an Methode übergeben noten=eingabe(noten)
3) in Methode neues Feld n[3,3] bei return (n) wird in der Aufrufzeile von main das Feld noten bzw.die Referenz auf das Feld überschrieben!!! Referenz auf noten wird durch die Referenz auf das neue Feld n überschrieben!
0 Lösungen
Holzblock-Schiebe-Spiel: Das gemeine Dutzend
Auch zu dieser Aufgabe gibt es eine kleine Vorgeschichte. Vor gut zwei Jahrzehnten erwarb ich in einem Krämerladen in San Diego (USA) ein Holzblock-Schiebe-Spiel mit der Bezeichnung „The Dirty Dozen“, etwa übersetzbar als „Das gemeine Dutzend“ (auch andere Übersetzungen sind möglich, das Spiel ist meines Wissens nach nie nach DE vertrieben worden, gelegentlich ist es über eBay erhältlich). Das Spiel wurde angeblich von einem Herrn Gary Mac Leod aus San Francisco etwa 1995 erfunden, der es auch über seine Firma „Square Root Games“ in Mexiko produzieren ließ. Der große finanzielle Renner ist es für Gary wohl nicht geworden, denn es ist eine recht harte Angelegenheit, die sehr viel Geduld erfordert (nicht gerade eine Stärke der meisten US-Kids).
Das Spiel besteht neben einem quadratischen Spielfeld mit Begrenzungswänden aus insgesamt 14 Holzblockelementen, u. z. sechs Quadratblöcken (Seitenlänge sei S), drei Rechteckblöcken (S und 2 x S), vier Winkelblöcken (2 x S, 2 x S) und einem flachen, quadratischen Hauptblock (ebenfalls 2 x S, 2 x S). Alle Holzblockelemente sind innerhalb des Spielfeldes frei verschiebbar. Ziel des Spieles ist es, den Hauptblock vor eine schlitzförmige Ausschuböffnung zu manövrieren ohne Heben, Drehen oder Entfernen anderer Blöcke auf dem Spielfeld (siehe BILD 1 und Draufblick BILD 2).
Der Erfinder gibt zwölf mögliche Ausgangsanordnungen (daher wohl das Wort DOZEN in der Spielbezeichnung) für die 14 Holzblockelemente vor mit zunehmendem Schwierigkeitsgrad (BILD 3).
Es ist mir bis heute nicht gelungen, auch für nur eine der Anordnungen die Lösung zu finden. Insbesondere die letzten drei Anordnungen mit über 100 Zügen erscheinen mir sehr problematisch für eine Lösung durch reines Nachdenken zu sein. Andererseits glaube ich auch nicht, dass Gary Mac Leon 1995 einen Computer zur Hand hatte, um die Lösungen via Simulation zu generieren. Trotzdem gibt er vor, bei postalischer Übersendung von 5 USD die Lösungen preiszugeben. Gut, vor einer solchen Ausgabe finde ich es interessanter, die Lösungen selber mit Hilfe eines Computers zu finden. Erst wenn das nicht gelingen sollte, frage ich in San Francisco an (die Firma soll es angeblich immer noch geben).
So, wer sich anschließen möchte, sehr gern und viel Spaß!
Das Spiel besteht neben einem quadratischen Spielfeld mit Begrenzungswänden aus insgesamt 14 Holzblockelementen, u. z. sechs Quadratblöcken (Seitenlänge sei S), drei Rechteckblöcken (S und 2 x S), vier Winkelblöcken (2 x S, 2 x S) und einem flachen, quadratischen Hauptblock (ebenfalls 2 x S, 2 x S). Alle Holzblockelemente sind innerhalb des Spielfeldes frei verschiebbar. Ziel des Spieles ist es, den Hauptblock vor eine schlitzförmige Ausschuböffnung zu manövrieren ohne Heben, Drehen oder Entfernen anderer Blöcke auf dem Spielfeld (siehe BILD 1 und Draufblick BILD 2).
Der Erfinder gibt zwölf mögliche Ausgangsanordnungen (daher wohl das Wort DOZEN in der Spielbezeichnung) für die 14 Holzblockelemente vor mit zunehmendem Schwierigkeitsgrad (BILD 3).
Es ist mir bis heute nicht gelungen, auch für nur eine der Anordnungen die Lösung zu finden. Insbesondere die letzten drei Anordnungen mit über 100 Zügen erscheinen mir sehr problematisch für eine Lösung durch reines Nachdenken zu sein. Andererseits glaube ich auch nicht, dass Gary Mac Leon 1995 einen Computer zur Hand hatte, um die Lösungen via Simulation zu generieren. Trotzdem gibt er vor, bei postalischer Übersendung von 5 USD die Lösungen preiszugeben. Gut, vor einer solchen Ausgabe finde ich es interessanter, die Lösungen selber mit Hilfe eines Computers zu finden. Erst wenn das nicht gelingen sollte, frage ich in San Francisco an (die Firma soll es angeblich immer noch geben).
So, wer sich anschließen möchte, sehr gern und viel Spaß!
2 Lösungen
Ägyptische Bruchrechnung
Gegeben seien zwei positive Ganzzahlen Z (wie Zaehler) und N (wie Nenner) mit N > Z
und Z sei kein Teiler von N.
Der Bruch Z/N ist immer als Summe der Kehrwerte positiver Ganzzahlen (Stammbrüche) darstellbar,
wobei es meist mehrer Möglichkeiten der Darstellung gibt.
Beispiele:
5/6 = 1/2 + 1/3 = 1/2 + 1/4 + 1/12 = 1/2 + 1/4 + 1/13 + 1/156 = ...
17/39 = 1/3 + 1/10 + 1/390 = ...
Man schreibe ein Programm, das Z und N entgegennimmt und die Zahlen der Stammbrüchesumme mit den wenigsten Summanden ausgibt.
Also obere Beispiele:
Input 5 und 6, Output 2 und 3,
Input 17 und 39, Output 3, 10 und 390.
Viel Spaß.
und Z sei kein Teiler von N.
Der Bruch Z/N ist immer als Summe der Kehrwerte positiver Ganzzahlen (Stammbrüche) darstellbar,
wobei es meist mehrer Möglichkeiten der Darstellung gibt.
Beispiele:
5/6 = 1/2 + 1/3 = 1/2 + 1/4 + 1/12 = 1/2 + 1/4 + 1/13 + 1/156 = ...
17/39 = 1/3 + 1/10 + 1/390 = ...
Man schreibe ein Programm, das Z und N entgegennimmt und die Zahlen der Stammbrüchesumme mit den wenigsten Summanden ausgibt.
Also obere Beispiele:
Input 5 und 6, Output 2 und 3,
Input 17 und 39, Output 3, 10 und 390.
Viel Spaß.
3 Lösungen
Das Problemspiel der spagetti-essenden Philosophen
wiki
https://de.wikipedia.org/wiki/Philosophenproblem
Fünf Philosophen sitzen um einen runden Tisch, vor jedem ein Teller voll mit Spagetti und links davon eine Gabel (BILD 1).
Um von dem Teller Spagetti essen zu können, benötigt man allerdings zwei Gabeln. Die zweite Gabel kann man sich von seinem
rechten Nachbarn borgen, sofern dieser nicht gerade selber beim Essen ist. Außerdem sollte man seine eigene Gabel auch nicht gerade
an seinen linken Nachbarn verborgt haben.
Das Spiel beginnt beim ersten Philosophen und geht Schritt für Schritt wie folgt reihum:
Jeder Philosoph kann sich in einem von drei möglichen Zuständen befinden,
u. z. denkend (Zustand 1, zu Beginn alle fünf Philosophen), hungernd (2) oder essend (3).
Ein denkender Philosoph kann per Zufallsentscheidung entweder in diesem Zustand 1 verweilen (dann geht der Zeiger sofort weiter an
seinen rechten Nachbarn) oder sich für "Essenwollen" entscheiden (Übergang von Zustand 1 in Zustand 2). In diesem Fall muss er prüfen,
ob ihm zwei Gabeln zur Verfügung stehen. Wenn Ja geht er von Zusand 2 in den Zustand 3 über und kann (sagen wir) zwei [Variable E wie Essen] Runden lang essen. Nach den zwei [E] Runden wird er zunächst wieder zum denkenden Philosophen (Zustand 1), der geleerte Teller wird sofort wieder aufgefüllt, falls der Philosoph erneut Hunger bekommt.
Hat er allerdings keine zwei Gabeln zur Verfügung, bleibt er die Runde hungrig (er verharrt im Zustand 2). Bekommt ein Philosoph
(sagen wir) zehn [Variable T wie Tod] Runden lang hintereinander nichts zu essen, ist er verhungert und das Gelage auch zu ende.
Die Frage lautet, nach wie vielen Runden (abhängig von E und T) ist im Durchschitt der erste Philosoph verhungert. Viel Spaß!
https://de.wikipedia.org/wiki/Philosophenproblem
Fünf Philosophen sitzen um einen runden Tisch, vor jedem ein Teller voll mit Spagetti und links davon eine Gabel (BILD 1).
Um von dem Teller Spagetti essen zu können, benötigt man allerdings zwei Gabeln. Die zweite Gabel kann man sich von seinem
rechten Nachbarn borgen, sofern dieser nicht gerade selber beim Essen ist. Außerdem sollte man seine eigene Gabel auch nicht gerade
an seinen linken Nachbarn verborgt haben.
Das Spiel beginnt beim ersten Philosophen und geht Schritt für Schritt wie folgt reihum:
Jeder Philosoph kann sich in einem von drei möglichen Zuständen befinden,
u. z. denkend (Zustand 1, zu Beginn alle fünf Philosophen), hungernd (2) oder essend (3).
Ein denkender Philosoph kann per Zufallsentscheidung entweder in diesem Zustand 1 verweilen (dann geht der Zeiger sofort weiter an
seinen rechten Nachbarn) oder sich für "Essenwollen" entscheiden (Übergang von Zustand 1 in Zustand 2). In diesem Fall muss er prüfen,
ob ihm zwei Gabeln zur Verfügung stehen. Wenn Ja geht er von Zusand 2 in den Zustand 3 über und kann (sagen wir) zwei [Variable E wie Essen] Runden lang essen. Nach den zwei [E] Runden wird er zunächst wieder zum denkenden Philosophen (Zustand 1), der geleerte Teller wird sofort wieder aufgefüllt, falls der Philosoph erneut Hunger bekommt.
Hat er allerdings keine zwei Gabeln zur Verfügung, bleibt er die Runde hungrig (er verharrt im Zustand 2). Bekommt ein Philosoph
(sagen wir) zehn [Variable T wie Tod] Runden lang hintereinander nichts zu essen, ist er verhungert und das Gelage auch zu ende.
Die Frage lautet, nach wie vielen Runden (abhängig von E und T) ist im Durchschitt der erste Philosoph verhungert. Viel Spaß!
3 Lösungen
Windows Forms Taschenrechner
Erstelle mit Hilfe von Windows Forms einen Taschenrechner!
- Der Taschenrechner soll zwei Zahlen speichern können.
- Wie bei einem Taschenrechner üblich, sollen alle Zahleneingaben gesammelt werden bis der Operator gewählt wurde.
- Mit jedem Drücken einer Zahlentaste wird der Variable also eine Dezimalstelle hinzugefügt.
- Wenn ein Operator ausgewählt wurde, soll die erste eingegebene Zahl gespeichert werden, ebenso der Operator (in einer separaten Variable).
- Mit Drücken der Ergebnis Taste (=) soll das Ergebnis in der selben Textbox ausgegeben werden, wie die, in der die Zahlen eingegeben wurden.
Im Anhang ein Beispiel wie ich das gelöst habe.
- Der Taschenrechner soll zwei Zahlen speichern können.
- Wie bei einem Taschenrechner üblich, sollen alle Zahleneingaben gesammelt werden bis der Operator gewählt wurde.
- Mit jedem Drücken einer Zahlentaste wird der Variable also eine Dezimalstelle hinzugefügt.
- Wenn ein Operator ausgewählt wurde, soll die erste eingegebene Zahl gespeichert werden, ebenso der Operator (in einer separaten Variable).
- Mit Drücken der Ergebnis Taste (=) soll das Ergebnis in der selben Textbox ausgegeben werden, wie die, in der die Zahlen eingegeben wurden.
Im Anhang ein Beispiel wie ich das gelöst habe.