Übungen / Aufgaben zu C#
3 Lösungen
Goldbachsche Vermutung (binär)
Die Goldbachsche Vermutung besagt, dass jede gerade Zahl größer 2 die Summe zweier Primzahlen ist.
1. Schreibe eine Funktion/Methode, die jeweils ein mögliches Primzahlenpaar bis zur Zahl 1000 ausgibt.
Beispiele:
4 = 2 + 2 -> (2, 2)
6 = 3 + 3 -> (3, 3)
8 = 3 + 5 -> (3, 5)
Duplikate durch Vertauschung wie z.B. (3, 5) -> (5, 3) sollen verhindert werden.
2. Schreibe eine Funktion/Methode, die alle mögliche Primzahlenpaare bis zur Zahl 1000 ausgibt.
Beispiele:
10 = 3 + 7 = 5 + 5 -> [ (3, 7), (5, 3) ]
14 = 3 + 11 = 7 + 7 -> [ (3, 11), (7, 7) ]
Viel Spaß
1. Schreibe eine Funktion/Methode, die jeweils ein mögliches Primzahlenpaar bis zur Zahl 1000 ausgibt.
Beispiele:
4 = 2 + 2 -> (2, 2)
6 = 3 + 3 -> (3, 3)
8 = 3 + 5 -> (3, 5)
Duplikate durch Vertauschung wie z.B. (3, 5) -> (5, 3) sollen verhindert werden.
2. Schreibe eine Funktion/Methode, die alle mögliche Primzahlenpaare bis zur Zahl 1000 ausgibt.
Beispiele:
10 = 3 + 7 = 5 + 5 -> [ (3, 7), (5, 3) ]
14 = 3 + 11 = 7 + 7 -> [ (3, 11), (7, 7) ]
Viel Spaß
2 Lösungen
Ranking von Punktzahlen
Bei einer Sportveranstaltung wurden die erreichten Punkte in eine Punkteliste überführt.
Jetzt gilt es herauszufinden, wer die meisten und wer die wenigsten Punkte in der Liste hat, um daraus ein sogenanntes Ranking zu erstellen.
Punkteliste = [14, 11, 19, 7, 14, 8, 5]
Ranking1 = [2, 3, 1, 5, 2, 4, 6]
Da es bei Sportveranstaltungen bei Vergabe von zwei 2. Plätzen oft keinen 3. Platz gibt, sähe so ein Ranking folgendermaßen aus:
Ranking2 = [2, 4, 1, 6, 2, 5, 7]
Schreibe eine Methode/Funktion, die sowohl das 1. als auch das 2. Ranking ausgibt.
Viel Spaß
Jetzt gilt es herauszufinden, wer die meisten und wer die wenigsten Punkte in der Liste hat, um daraus ein sogenanntes Ranking zu erstellen.
Punkteliste = [14, 11, 19, 7, 14, 8, 5]
Ranking1 = [2, 3, 1, 5, 2, 4, 6]
Da es bei Sportveranstaltungen bei Vergabe von zwei 2. Plätzen oft keinen 3. Platz gibt, sähe so ein Ranking folgendermaßen aus:
Ranking2 = [2, 4, 1, 6, 2, 5, 7]
Schreibe eine Methode/Funktion, die sowohl das 1. als auch das 2. Ranking ausgibt.
Viel Spaß
8 Lösungen
Spannung, Stromstärke, Widerstand
Schreibe eine Methode/Funktion, die je nach Eingabe von 2 Werten den fehlenden Wert ermittelt.
Die möglichen einzugebenden Werte sind Spannung (U [Volt]), Widerstand (R [Ohm]) bzw. Stromstärke (I [Ampere]).
Der fehlende Wert kann null/nothing oder jedes andere beliebige Zeichen sein.
Die Formel zur Berechnung lautet: U = R * I
Beispiel:
U := 270.0
R := null
I := 3.0
R = I / U = 270 / 3 = 90.0 Ohm
Viel Spaß
Die möglichen einzugebenden Werte sind Spannung (U [Volt]), Widerstand (R [Ohm]) bzw. Stromstärke (I [Ampere]).
Der fehlende Wert kann null/nothing oder jedes andere beliebige Zeichen sein.
Die Formel zur Berechnung lautet: U = R * I
Beispiel:
U := 270.0
R := null
I := 3.0
R = I / U = 270 / 3 = 90.0 Ohm
Viel Spaß
3 Lösungen
Differenz(en) von Eingabewerten
Schreibe eine Methode/Funktion, die die maximale bzw. minimale Differenz von Eingabewerten ermittelt.
z.B. f(3, -2, 18, -1, 50)
Min: 1, da Absolut(-2 - -1) = 1
Max: 52, da Absolut(50 - -2) = 52
Viel Spaß
z.B. f(3, -2, 18, -1, 50)
Min: 1, da Absolut(-2 - -1) = 1
Max: 52, da Absolut(50 - -2) = 52
Viel Spaß
4 Lösungen
Hitzeindex (gefühlte Temperatur)
Die auf dem Thermometer, vor allem im Sommer, angezeigt Temperatur stimmt häufig nicht mit der gefühlten Temperatur überein. Denn je feuchter die Luft, desto wärmer nehmen wir die Temperatur wahr. Deshalb wurde der Hitzeindex (HI) eingeführt, der generell für Temperaturen ab 27°C und einer relativen Luftfeuchte von mehr als 40% angewendet wird.
Schreibe eine Methode/Funktion, die Temperatur (t) und Luftfeuchte (h) entgegennimmt und den Hitzeindex (hi) ausgibt.
hi = c1 + c2*t + c3*h +
c4*t*h + c5*t*t + c6*h*h +
c7*t*t*h + c8*t*h*h +
c9*t*t*h*h
c1 = -8.784695,
c2 = 1.61139411,
c3 = 2.338549,
c4 = -0.14611605,
c5 = -1.2308094e-2,
c6 = -1.6424828e-2,
c7 = 2.211732e-3,
c8 = 7.2546e-4,
c9 = -3.582e-6
Viel Spaß
Schreibe eine Methode/Funktion, die Temperatur (t) und Luftfeuchte (h) entgegennimmt und den Hitzeindex (hi) ausgibt.
hi = c1 + c2*t + c3*h +
c4*t*h + c5*t*t + c6*h*h +
c7*t*t*h + c8*t*h*h +
c9*t*t*h*h
c1 = -8.784695,
c2 = 1.61139411,
c3 = 2.338549,
c4 = -0.14611605,
c5 = -1.2308094e-2,
c6 = -1.6424828e-2,
c7 = 2.211732e-3,
c8 = 7.2546e-4,
c9 = -3.582e-6
Viel Spaß
3 Lösungen
Teilersumme natürlicher Zahlen
Schreibe eine Methode/Funktion, mit der es möglich ist zu prüfen, ob es sich bei einer natürlichen Zahl um eine defiziente,
vollkommende oder abundante Zahl handelt.
Betrachtet wird die Summe aller Teiler ohne die Zahl selbst.
Beispiel Zahl 80:
1 + 2 + 4 + 5 + 8 + 10 + 20 + 40 = 106 --> abundant, da
Summe kleiner als Zahl --> defizient
Summe gleich Zahl --> vollkommen
Summe größer als Zahl --> abundant
Viel Spaß
vollkommende oder abundante Zahl handelt.
Betrachtet wird die Summe aller Teiler ohne die Zahl selbst.
Beispiel Zahl 80:
1 + 2 + 4 + 5 + 8 + 10 + 20 + 40 = 106 --> abundant, da
Summe kleiner als Zahl --> defizient
Summe gleich Zahl --> vollkommen
Summe größer als Zahl --> abundant
Viel Spaß
4 Lösungen
Die n-te Zahl ermitteln
Man nehme eine Zahl, die beispielsweise mit den Ziffern 245 beginnt.
Nun ist die Frage, welche ist z.B. die 12. Zahl, die ebenfalls mit 245 beginnt?
Lösung: 24500, denn
01. 245
02. 2450
03. 2451
…
11. 2459
12. 24500
Welche ist die 100. Zahl die mit 245 beginnt?
Variante 1: durch Probieren mittels einer Schleife (leicht)
Versucht man jetzt aber durch Probieren die 13000. Zahl zu ermitteln, kann das schon eine Weile dauern. Vielleicht lässt sich eine logische Folge ableiten?!
Variante 2: Berechnung der Zahl (schwieriger)
Viel Spaß
Nun ist die Frage, welche ist z.B. die 12. Zahl, die ebenfalls mit 245 beginnt?
Lösung: 24500, denn
01. 245
02. 2450
03. 2451
…
11. 2459
12. 24500
Welche ist die 100. Zahl die mit 245 beginnt?
Variante 1: durch Probieren mittels einer Schleife (leicht)
Versucht man jetzt aber durch Probieren die 13000. Zahl zu ermitteln, kann das schon eine Weile dauern. Vielleicht lässt sich eine logische Folge ableiten?!
Variante 2: Berechnung der Zahl (schwieriger)
Viel Spaß
2 Lösungen
Berechnung von Widerständen
Schreibe eine Methode bzw. Funktion, mit der man den Gesamtwiderstand von Parallel- bzw. Reihenschaltungen berechnen kann.
Dabei sollen sowohl die Werte der Einzelwiderstände als auch die Art der Schaltung vom Benutzer erfragt werden.
Variante 1: 2 separate Funktionen: f(float a, float b, … float n)
Variante 2: 1 kombinierte Funktion: f(artDerSchaltung, float a, float b, … float n)
Viel Spaß
Dabei sollen sowohl die Werte der Einzelwiderstände als auch die Art der Schaltung vom Benutzer erfragt werden.
Variante 1: 2 separate Funktionen: f(float a, float b, … float n)
Variante 2: 1 kombinierte Funktion: f(artDerSchaltung, float a, float b, … float n)
Viel Spaß
2 Lösungen
Zoo mittels einer Factory-Methode
Hallo zusammen,
heute erzeugen wir einen Zoo!
Erzeugt hierfür eine Basisklasse (oder Interface) "Animal" und einige Klassen die davon erben (z.B. "Lion", "Penguin", "Crocodile", "Snake").
Als nächsten Schritt wollen wir nun eine Factory-Klasse erzeugen, die sich am "Factory-Method-Pattern" orientiert.
In dieser Klasse soll eine Methode "createAnimal" existieren, die ein "Animal" zurückgibt.
Welches "Animal" zurückgegeben wird überlassen wir vorerst dem reinen Zufall ;)
Daher kann diese Klasse auch "RandomAnimalFactory" genannt werden.
Lasst nun 200 "Animals" in den Zoo einziehen.
Wie ist die Verteilung der "Animals" einer jeden Spezies in unserem Zoo?
Es kann mit der zufälligen Erzeugung zu einem gewissen Ungleichgewicht kommen.
So fühlt sich ein einzelner Pinguin gegen 199 Löwen sicher etwas in der Unterzahl ...
Erstellt nun eine zweite Factory-Klasse "BalancedAnimalFactory".
Diese soll ebenfalls die Methode "createAnimal" enthalten.
(Macht es nun evtl. Sinn sich auch bei den Factory-Klassen über ein Interface gedanken zu machen?)
Diese Factory soll nicht mehr komplett zufällig Tiere erzeugen sondern etwas ausgeglichener.
Die dort vorhandene "createAnimal" Methode soll wie folgt funktionieren:
Angenommen wir haben vier Tier-Klassen ("Lion", "Penguin", "Crocodile", "Snake").
Wird nun ein "Lion" erzeugt, so wird für die nächsten beiden Erzeugungen kein "Lion" mehr erzeugt.
Lasst nun erneut 200 "Animals" einziehen - vielleicht in einen zweiten "Parkabschnitt" (Array)? :)
Muss sich der Pinguin noch immer Sorgen machen?
Viel Spaß!
heute erzeugen wir einen Zoo!
Erzeugt hierfür eine Basisklasse (oder Interface) "Animal" und einige Klassen die davon erben (z.B. "Lion", "Penguin", "Crocodile", "Snake").
Als nächsten Schritt wollen wir nun eine Factory-Klasse erzeugen, die sich am "Factory-Method-Pattern" orientiert.
In dieser Klasse soll eine Methode "createAnimal" existieren, die ein "Animal" zurückgibt.
Welches "Animal" zurückgegeben wird überlassen wir vorerst dem reinen Zufall ;)
Daher kann diese Klasse auch "RandomAnimalFactory" genannt werden.
Lasst nun 200 "Animals" in den Zoo einziehen.
Wie ist die Verteilung der "Animals" einer jeden Spezies in unserem Zoo?
Es kann mit der zufälligen Erzeugung zu einem gewissen Ungleichgewicht kommen.
So fühlt sich ein einzelner Pinguin gegen 199 Löwen sicher etwas in der Unterzahl ...
Erstellt nun eine zweite Factory-Klasse "BalancedAnimalFactory".
Diese soll ebenfalls die Methode "createAnimal" enthalten.
(Macht es nun evtl. Sinn sich auch bei den Factory-Klassen über ein Interface gedanken zu machen?)
Diese Factory soll nicht mehr komplett zufällig Tiere erzeugen sondern etwas ausgeglichener.
Die dort vorhandene "createAnimal" Methode soll wie folgt funktionieren:
Angenommen wir haben vier Tier-Klassen ("Lion", "Penguin", "Crocodile", "Snake").
Wird nun ein "Lion" erzeugt, so wird für die nächsten beiden Erzeugungen kein "Lion" mehr erzeugt.
Lasst nun erneut 200 "Animals" einziehen - vielleicht in einen zweiten "Parkabschnitt" (Array)? :)
Muss sich der Pinguin noch immer Sorgen machen?
Viel Spaß!
7 Lösungen
Wochentage einlesen und in einem Array ausgeben
Schreiben Sie ein Programm, das die Wochentage in einliest und sie in
einem Array (vom Typ string [ ]) ablegt und danach ausgibt.
einem Array (vom Typ string [ ]) ablegt und danach ausgibt.
7 Lösungen
n Zahlen einlesen und deren Quadrate speichert und ausgibt
Schreiben Sie ein Programm, dass n Zahlen einliest und deren
Quadrate in einem Array speichert und sie danach ausgibt.
(Die Zahl n soll vom Benutzer abgefragt werden.)
Quadrate in einem Array speichert und sie danach ausgibt.
(Die Zahl n soll vom Benutzer abgefragt werden.)
0 Lösungen
Wettervorhersage als Text formulieren
Schreibe ein Programm, das eine Wettervorhersage (erstmal nur Temperaturen) als Text fomuliert.
Als Ausgangsinformationen dienen vier Temperaturangaben für vormittags, nachmittags, abends und nachts.
Das Programm soll die Sätze variantenreich formulieren, z. B. abhängig davon, ob es im Laufe des Tages kälter oder wärmer wird oder ob die Temperaturen sehr kalt, mäßig, warm oder heiß sind. Für gleichartige Sachverhalte kann auch per Zufallsgenerator zwischen verschiedenen gleichwertigen Formulierungen gewählt werden.
Erweiterung 1:
Es wird zusätzlich ein Datum angegeben. Die Formulierungen orientieren sich dann zusätzlich an Temperatur-Druchschnittswerten des jeweiligen Monats.
(Tageshöchsttemperatur Jan-Dez: 2, 3, 8, 12, 18, 21, 23, 23, 19, 14, 7, 4 - Tiefsttemperaturen nachts Jan-Dez: -2, -3, 1, 4, 9, 12, 14, 14, 11, 7, 3, 0)
Erweiterung 2:
Vergleichbares kann man für Angaben zu Sonne/Bewölkung, Niederschlägen (Regen, Schnee) bzw. Niederschlagsmengen und Windstärke/-richtung ergänzen.
(Niederschlagsmengen in mm Jan-Dez: 42, 30, 39, 36, 42, 72, 51, 45, 45, 30, 45, 57)
Erweiterung 3:
Sonderwetterlagen können zusätzlich eingebracht werden, z. B. Gewitter, Nebel, Hagel, Starkregen, Blitzeis.
Quelle Klimadaten für Berlin: https://www.klimatabelle.info/europa/deutschland
Als Ausgangsinformationen dienen vier Temperaturangaben für vormittags, nachmittags, abends und nachts.
Das Programm soll die Sätze variantenreich formulieren, z. B. abhängig davon, ob es im Laufe des Tages kälter oder wärmer wird oder ob die Temperaturen sehr kalt, mäßig, warm oder heiß sind. Für gleichartige Sachverhalte kann auch per Zufallsgenerator zwischen verschiedenen gleichwertigen Formulierungen gewählt werden.
Erweiterung 1:
Es wird zusätzlich ein Datum angegeben. Die Formulierungen orientieren sich dann zusätzlich an Temperatur-Druchschnittswerten des jeweiligen Monats.
(Tageshöchsttemperatur Jan-Dez: 2, 3, 8, 12, 18, 21, 23, 23, 19, 14, 7, 4 - Tiefsttemperaturen nachts Jan-Dez: -2, -3, 1, 4, 9, 12, 14, 14, 11, 7, 3, 0)
Erweiterung 2:
Vergleichbares kann man für Angaben zu Sonne/Bewölkung, Niederschlägen (Regen, Schnee) bzw. Niederschlagsmengen und Windstärke/-richtung ergänzen.
(Niederschlagsmengen in mm Jan-Dez: 42, 30, 39, 36, 42, 72, 51, 45, 45, 30, 45, 57)
Erweiterung 3:
Sonderwetterlagen können zusätzlich eingebracht werden, z. B. Gewitter, Nebel, Hagel, Starkregen, Blitzeis.
Quelle Klimadaten für Berlin: https://www.klimatabelle.info/europa/deutschland