Lösungsvorschläge für die C#-Übungen
Für alle Übungen haben wir Lösungsvorschläge erstellt. Unser Tipp: versuchen Sie zunächst selbst, Lösungen für die Übungen zu finden. Selbst wenn Sie letztendlich keine korrekte Lösung finden, verbessern Sie Ihr Verständnis für die Sprache enorm, wenn Sie sich selber daran versuchen und verschiedene Möglichkeiten ausprobieren.
Gerade beim Programmieren lernen gilt: probieren geht über studieren. Probieren Sie Ihre Lösungen oder Lösungsansätze aus und überlegen Sie sich dann, warum Sie noch nicht komplett funktionieren und versuchen Sie danach, den Code zu verbessern. Tasten Sie sich so immer näher an eine korrekte Lösung heran.
Übrigens: Bei der Programmierung gibt es nicht DIE eine richtige Lösung. Jedes Problem lässt sich programmatisch auf viele unterschiedliche Weisen lösen. Die von uns bereitgestellten Lösungen sollen daher auch nicht als „Musterlösungen“ angesehen werden, sondern lediglich als Lösungsvorschläge. Haben Sie eine Übung auf andere Weise lösen können als in unserem Lösungvorschlag vorgestellt, ist das vollkommen ok.
Wir haben unsere Lösungen wiederum in einem Archiv mit C#-Quelltextdateien bereit gestellt. Entpacken Sie das Archiv in einen Ordner. Um den Code in Visual Studio nutzen zu können, wählen Sie Datei → Öffnen → Projekt/Projektmappe und wählen dann die Datei CSharpUebungen.sln
aus.
In einigen Fällen haben wir Kommentare in die Quelldateien eingefügt, um den Lösungsweg zusätzlich zu erläutern.
Download Lösungsvorschläge Übungen
Einige größere Übungen wurden in mehrere Teile aufgeteilt. Sie finden hier für die jeweiligen Übungen die Teillösungen. Wenn Sie eine Teilübung nicht selbständig lösen können, können Sie den Lösungsvorschlag für die Teilübung verwenden um mit den weiteren Teilen der Aufgabe fortzufahren.
4.1:
12 ist die letzte Zahl, für die die Fakultät korrekt berechnet wird: 479001600
Bei 13 als Eingabe gibt unser Programm 1932053504 aus, korrekt wäre aber 6227020800.
6.8:
a) Zeigen
public class Kaffeemaschine { public double wasser { get; private set; } public double bohnen { get; private set; } public double gesamtMengeKaffeProduziert { get; private set; } private static double maxWasser = 2.5; private static double maxBohnen = 2.5; }
b) Zeigen
public class Kaffeemaschine { public double wasser { get; private set; } public double bohnen { get; private set; } public double gesamtMengeKaffeProduziert { get; private set; } private static double maxWasser = 2.5; private static double maxBohnen = 2.5; public Kaffeemaschine() { wasser = 0; bohnen = 0; gesamtMengeKaffeProduziert = 0; } }
c) Zeigen
public class Kaffeemaschine { public double wasser { get; private set; } public double bohnen { get; private set; } public double gesamtMengeKaffeProduziert { get; private set; } private static double maxWasser = 2.5; private static double maxBohnen = 2.5; public Kaffeemaschine() { wasser = 0; bohnen = 0; gesamtMengeKaffeProduziert = 0; } public double wasserAuffuellen(double menge) { if (menge <= 0) return 0; if (wasser + menge <= maxWasser) { wasser += menge; return menge; } double tatsaechlMenge = maxWasser - wasser; wasser = maxWasser; return tatsaechlMenge; } public double bohnenAuffuellen(double menge) { if (menge <= 0) return 0; if (bohnen + menge <= maxBohnen) { bohnen += menge; return menge; } double tatsaechlMenge = maxBohnen - bohnen; bohnen = maxBohnen; return tatsaechlMenge; } }
d) Zeigen
public class Kaffeemaschine { public double wasser { get; private set; } public double bohnen { get; private set; } public double gesamtMengeKaffeProduziert { get; private set; } private static double maxWasser = 2.5; private static double maxBohnen = 2.5; public Kaffeemaschine() { wasser = 0; bohnen = 0; gesamtMengeKaffeProduziert = 0; } public double wasserAuffuellen(double menge) { if (menge <= 0) return 0; if (wasser + menge <= maxWasser) { wasser += menge; return menge; } double tatsaechlMenge = maxWasser - wasser; wasser = maxWasser; return tatsaechlMenge; } public double bohnenAuffuellen(double menge) { if (menge <= 0) return 0; if (bohnen + menge <= maxBohnen) { bohnen += menge; return menge; } double tatsaechlMenge = maxBohnen - bohnen; bohnen = maxBohnen; return tatsaechlMenge; } public bool macheKaffee(double menge, double verhaeltnisWasserBohnen) { if (menge <= 0 || verhaeltnisWasserBohnen <= 0) return false; double bohnenAnteil = menge / (verhaeltnisWasserBohnen + 1); double wasserAnteil = menge - bohnenAnteil; if (bohnenAnteil > bohnen || wasserAnteil > wasser) return false; bohnen -= bohnenAnteil; wasser -= wasserAnteil; gesamtMengeKaffeProduziert += menge; return true; } }
6.9
a) Zeigen
public class KaffeeGeschaeft { private double _preisProKg; public double preisProKg { get { return _preisProKg; } set { if (value >= 5 && value <= 30) _preisProKg = value; } } }
b) Zeigen
public class KaffeeGeschaeft { private double _preisProKg; public double preisProKg { get { return _preisProKg; } set { if (value >= 5 && value <= 30) _preisProKg = value; } } public KaffeeGeschaeft(double preis) { preisProKg = preis; } }
c) Zeigen
public class KaffeeGeschaeft { private double _preisProKg; public double preisProKg { get { return _preisProKg; } set { if (value >= 5 && value <= 30) _preisProKg = value; } } public KaffeeGeschaeft(double preis) { preisProKg = preis; } double kaufeKaffee(Kaffeemaschine maschine, double menge) { double neuerKaffeeMenge = maschine.bohnenAuffuellen(menge); return neuerKaffeeMenge * preisProKg; } }
8.4
a) Zeigen
public abstract class Tier { public double aktuellesGewicht { get; protected set; } public double initialGewicht { get; private set; } public bool isAlive { get; private set; } public Tier(double gewicht) { aktuellesGewicht = gewicht; initialGewicht = gewicht; isAlive = true; } }
b) Zeigen
public abstract class Tier { public double aktuellesGewicht { get; protected set; } public double initialGewicht { get; private set; } public bool isAlive { get; private set; } public Tier(double gewicht) { aktuellesGewicht = gewicht; initialGewicht = gewicht; isAlive = true; } protected abstract bool canEat(Tier anderesTier); public void wirdGetoetet() { isAlive = false; } }
c) Zeigen
public abstract class Tier { public double aktuellesGewicht { get; protected set; } public double initialGewicht { get; private set; } public bool isAlive { get; private set; } public Tier(double gewicht) { aktuellesGewicht = gewicht; initialGewicht = gewicht; isAlive = true; } protected abstract bool canEat(Tier anderesTier); public void wirdGetoetet() { isAlive = false; } public void eat(Tier anderesTier) { if (!canEat(anderesTier)) return; aktuellesGewicht += anderesTier.aktuellesGewicht; anderesTier.wirdGetoetet(); } }
d) Zeigen
public abstract class Tier { public double aktuellesGewicht { get; protected set; } public double initialGewicht { get; private set; } public bool isAlive { get; private set; } public Tier(double gewicht) { aktuellesGewicht = gewicht; initialGewicht = gewicht; isAlive = true; } protected abstract bool canEat(Tier anderesTier); public void wirdGetoetet() { isAlive = false; } public void eat(Tier anderesTier) { if (!canEat(anderesTier)) return; aktuellesGewicht += anderesTier.aktuellesGewicht; anderesTier.wirdGetoetet(); } public void verdauen() { if (aktuellesGewicht <= initialGewicht) return; aktuellesGewicht = initialGewicht + 0.05 * (aktuellesGewicht - initialGewicht); } }
e) Zeigen
public class Eichhoernchen : Tier { public Eichhoernchen(double gewicht) : base(gewicht) { } protected override bool canEat(Tier anderesTier) { return false; } } public class Baummarder : Tier { public Baummarder(double gewicht) : base(gewicht) { } protected override bool canEat(Tier anderesTier) { return isAlive && anderesTier.isAlive && anderesTier is Eichhoernchen; } } public class Uhu : Tier { public Uhu(double gewicht) : base(gewicht) { } protected override bool canEat(Tier anderesTier) { return isAlive && anderesTier.isAlive && (anderesTier is Eichhoernchen || anderesTier is Baummarder); } }
f) Zeigen
public class Uhu : Tier { public Uhu(double gewicht) : base(gewicht) { } protected override bool canEat(Tier anderesTier) { return isAlive && anderesTier.isAlive && (anderesTier is Eichhoernchen || anderesTier is Baummarder); } public void fliegen() { aktuellesGewicht -= 5; if (aktuellesGewicht < initialGewicht) aktuellesGewicht = initialGewicht; } }
Eine ausführliche Liste unserer Buchempfehlungen für C# finden Sie hier.
Unsere Buchempfehlungen
Oder sehen Sie sich die vollständige Liste der Empfehlungen für C# an.Wir haben auch eine Empfehlung für einen C#-Fernkurs parat.