MMazi Geschrieben 14. September 2020 Teilen Geschrieben 14. September 2020 Hallo Alle zusammen, ich hoffe kann ich hier eine lösung für meine Aufgabe bekommen. d) Implementieren Sie die folgende Methode: public bool macheKaffee(double menge, double verhaeltnisWasserBohnen); Es soll nun ein Kaffee zubereitet werden. Die Gesamtmenge an produziertem Kaffee wird über den Parameter menge (in kg) angegeben. Der Parameter verhaeltnisWasserBohnen gibt an, in welchem Verhältnis Wasser und Bohnen für die Zubereitung des Kaffees verwendet werden: 1 bedeutet, dass gleich viel Wasser und Bohnen verwendet werden 2 bedeutet, dass doppelt soviel Wasser wie Bohnen verwenden werden 0,5 bedeutet, dass halb soviel Wasser wie Bohnen verwendet werden Beispiel: Als Menge wird 0,15 angegeben, als Verhältnis 2. Dann soll der Kaffee aus 0,1 kg Wasser und 0,05 kg Bohnen produziert werden. Prüfen Sie zunächst, ob noch genügend Wasser und Bohnen für die vollständige Zubereitung der gewünschten Menge vorhanden sind. Nur wenn das der Fall ist, passen Sie den Füllstand von Wasser und Bohnen entsprechend an. Zudem soll der Parameter gesamtMengeKaffeProduziert um die produzierte Menge vergrößert werden. Wenn nicht genügend Wasser oder Bohnen für die vollständige Zubereitung vorhanden sind, soll kein Kaffee zubereitet werden, d.h. die Füllstände sollen auch nicht geändert werden. Der Rückgabewert soll angeben, ob der Kaffee zubereitet wurde (true) oder nicht (false). ich würde dankbar sein für eure Lösungvorschläge.. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DefconDev Geschrieben 14. September 2020 Teilen Geschrieben 14. September 2020 Und ich wäre dankbar du zeigst DEINEN Lösungsvorschlag und wir schauen uns gerne an, wo was schief läuft. Eine simple Methode zu implementieren mit ein paar Kontrollstrukturen wird hoffentlich nicht das Problem sein, wenn doch, setzt dich hin und lerne. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MMazi Geschrieben 14. September 2020 Autor Teilen Geschrieben 14. September 2020 (bearbeitet) Ok hier ist meinen Lösungvorschlag: using System; using System.Collections.Generic; using System.Text; namespace Kaffemaschine { class Kaffeemachine { // Eigenschaften von Klasse Kaffemaschine public double Wasser { get; private set; } public double Bohnen { get; private set; } public double GesamtMengeKaffeeProduziert { get; private set; } // statische private Attribute von Klasse Kaffemaschine private static readonly double maxWasser = 2.5; private static readonly double maxBohnen = 2.5; private double verhaeltnisWasserBohnen; // Konstruktor Initialisierung public Kaffeemachine() { Wasser = 0; Bohnen = 0; GesamtMengeKaffeeProduziert = 0; } public Kaffeemachine(double wasser) { Wasser = wasser; Bohnen = 0; } public Kaffeemachine(double wasser, double bohnen) { Wasser = wasser; Bohnen = bohnen; } public string GetBohnenKG() { return Bohnen + " kg"; } public string GetWasserKG() { return Wasser + " kg"; } public double WasserAuffuellen(double menge) { if (menge <= 0) return 0; if (Wasser + menge <= maxWasser) { Wasser += menge;// Wasser = Wasser + menge return menge; } else { double result = menge - ((Wasser + menge) - maxWasser); Wasser = maxWasser; return result; } } public double BohnenAuffuellen(double menge) { if (menge <= 0) return 0; if (Bohnen + menge <= maxBohnen) { Wasser += menge;// Wasser = Wasser + menge return menge; } else { double result = menge - ((Bohnen + menge) - maxBohnen); Bohnen = maxBohnen; return result; } } Public bool machkaffee(double menge, double verhaeltnisWasserBohnen) { if ( menge <=o || verhaeltnisWasserBohnen <=0 ) return false; double bohnenAntei = menge / verhaeltnisWasserBohnen ; double WasserAntei = menge -bohnenAnteil; if (bohnenAnteil > bohnen || WasserAnteil > Wasser ) return false; bohnen -= bohnenAnteil; Wasser -= WasserAnteil; GesamtMengeKaffeeProduzieret += menge; return true; } Bearbeitet 14. September 2020 von MMazi Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MMazi Geschrieben 14. September 2020 Autor Teilen Geschrieben 14. September 2020 die kommentare stimmen nicht ganz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DefconDev Geschrieben 14. September 2020 Teilen Geschrieben 14. September 2020 (bearbeitet) Etwas abseits der Aufgabenstellung, den Unterschied zwischen einer statischen Variable und einer Konstante kennst du? Ich verwende kein C# aber ich würde fast behaupten, dass Bezeichner von Variablen wahrscheinlich auch in C# per Konvention immer klein anfangen. Korrigiert mich wenn dem so nicht ist. Bitte Quellcode immer in die Code-tags setzen, für die Lesbarkeit. Und wo hapert es jetzt? Bearbeitet 14. September 2020 von Def_Con Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
StillAboutIt Geschrieben 14. September 2020 Teilen Geschrieben 14. September 2020 Zitat Ich verwende kein C# aber ich würde fast behaupten, dass Bezeichner von Variablen wahrscheinlich auch in C# per Konvention immer klein anfangen. Korrigiert mich wenn dem so nicht ist. Properties werden in C# laut Konvention groß geschrieben. DefconDev reagierte darauf 1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MMazi Geschrieben 15. September 2020 Autor Teilen Geschrieben 15. September 2020 Danke für die Antworten. die hier habe von anderes Forum : Hallo Objekte, also die Instanzen von einer Klasse, fangen immer mit einer kleinen Wortgruppe an, Bsp: Klasse meineKlasse = new Klasse(); Also im Prinzip auch Kamelschreibweise, nur dass klein angefangen wird. Klassennamen fangen groß an, genau wie Methoden oder Properties. Aber auch hier gilt immer die Kamelschreibweise. Bei Properties macht man das dann so: private string _customerID; public string CustomerID { get { return this._customerID; } get { this._customerID = value; } } Also die geschützten Felder, für die es eine Eigenschaft gibt, sollten immer mit einem Unterstrich anfangen. MfG nun in der Aufgabe gibt es einen teil welche mit If definiert werden könnte : (( d) Implementieren Sie die folgende Methode: public bool macheKaffee(double menge, double verhaeltnisWasserBohnen); Es soll nun ein Kaffee zubereitet werden. Die Gesamtmenge an produziertem Kaffee wird über den Parameter menge (in kg) angegeben. Der Parameter verhaeltnisWasserBohnen gibt an, in welchem Verhältnis Wasser und Bohnen für die Zubereitung des Kaffees verwendet werden: 1 bedeutet, dass gleich viel Wasser und Bohnen verwendet werden 2 bedeutet, dass doppelt soviel Wasser wie Bohnen verwenden werden 0,5 bedeutet, dass halb soviel Wasser wie Bohnen verwendet werden Beispiel: Als Menge wird 0,15 angegeben, als Verhältnis 2. Dann soll der Kaffee aus 0,1 kg Wasser und 0,05 kg Bohnen produziert werden. )) ich würde mit If jede von die Wasser und Kaffee verhältnisse abfragen bzw definieren.. wie würdet Ihr vorgehen ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
JimTheLion Geschrieben 16. September 2020 Teilen Geschrieben 16. September 2020 Moin, beim Bohnen auffüllen ist auch noch ein Fehler drin. public double BohnenAuffuellen(double menge) { if (menge <= 0) return 0; if (Bohnen + menge <= maxBohnen) { Wasser += menge;// Wasser = Wasser + menge return menge; } else { double result = menge - ((Bohnen + menge) - maxBohnen); Bohnen = maxBohnen; return result; } } Wenn du beim Schreiben von Posts im Editor auf den Button "<>" drückst bekommst du ein extra Eingabefeld für deinen Code. Dann lässt sich das ganze besser lesen. vor 22 Stunden schrieb MMazi: wie würdet Ihr vorgehen ? Anhand des Verhältnisses und der Menge berechnen welche Mengen an Bohnen und Wasser benötigt werden. Dann prüfen, ob genug Bohnen und Wasser vorhanden sind. Der Rest läuft dann eigentlich so wie du es schon gemacht hast. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MMazi Geschrieben 16. September 2020 Autor Teilen Geschrieben 16. September 2020 Moin Danke für die schnelle Antwort habe der code mit hilfe meinen Ausbilder korrigiert , so sieht nun aus . using System; using System.Collections.Generic; using System.Reflection.Metadata.Ecma335; using System.Text; namespace Kaffemaschine { public class Kaffeemaschine { // Eigenschaften von Klasse Kaffemaschine public double Wasser { get; private set; } public double Bohnen { get; private set; } public double GesamtMengeKaffeeProduziert { get; private set; } // statische private Attribute von Klasse Kaffemaschine private static readonly double maxWasser = 2.5; private static readonly double maxBohnen = 2.5; private double verhaeltnisWasserBohnen; // Konstruktor Initialisierung public Kaffeemaschine() { Wasser = 0; Bohnen = 0; GesamtMengeKaffeeProduziert = 0; } public Kaffeemaschine(double wasser) { Wasser = wasser; Bohnen = 0; } public Kaffeemaschine(double wasser, double bohnen) { Wasser = wasser; Bohnen = bohnen; } // Konkatenation , Es soll nun ein Kaffee zubereitet werden. Die Gesamtmenge an produziertem Kaffee wird über den Parameter menge (in kg) angegeben. public string GetBohnenKG() { return Bohnen + " kg"; } public string GetWasserKG() { return Wasser + " kg"; } public double WasserAuffuellen(double menge) { // prüfen ob die Behälter leer sind ( return in if statment ) if (menge <= 0) return 0; //Die Methoden sollen jeweils den Wasserfüllstand und die Menge der enthaltenen Kaffeebohnen gemäß des übergebenen Parameters anpassen. if (Wasser + menge <= maxWasser) // (WENN) Wasser(was in Behälter drin ist) menge ( nachgefüllt ) zusammen weniger sind als maxWasser= 2.5 kg { Wasser += menge;// Wasser = Wasser + menge // (DANN) Wasser und Menge sind gesamt Wasser dann wird die menge zurück gegeben return menge; } else { double result = menge - ((Wasser + menge) - maxWasser); Wasser = maxWasser; return result; } //Zurückgegeben werden soll jeweils die tatsächliche Menge, um die das Wasser bzw. die Kaffeebohnen aufgefüllt wurden. //double tatsaechlichemenge = maxWasser - Wasser; // vermitteln wieviel drin ist( tatsächliches Wasser ) // berechnet sich dadurch, dass maxWasser(behälter Kapazität=2.5) von das Wasser( was nachgefüllt würde) abgezogen wird, // denn Wasser = maxWasser ( // return tatsaechlichemenge; } public double BohnenAuffuellen(double menge) { // prüfen ob die Behälter leer sind ( return in if statment ) if (menge <= 0) return 0; //Die Methoden sollen jeweils den Wasserfüllstand und die Menge der enthaltenen Kaffeebohnen gemäß des übergebenen Parameters anpassen. if (Bohnen + menge <= maxBohnen) // (WENN) Wasser(was in Behälter drin ist) menge ( nachgefüllt ) zusammen weniger sind als maxWasser= 2.5 kg { Bohnen += menge;// Wasser = Wasser + menge // (DANN) Wasser und Menge sind gesamt Wasser dann wird die menge zurück gegeben return menge; } else { double result = menge - ((Bohnen + menge) - maxBohnen); Bohnen = maxBohnen; return result; } } public bool macheKaffee(double menge, double verhaeltnisWasserBohnen) /* gesamt menge an produzierten Kaffee double menge = // Der Parameter verhaeltnisWasserBohnen gibt an, in welchem Verhältnis Wasser und Bohnen für die Zubereitung des Kaffees verwendet werden double verhaeltnisWasserBohnen = */ { double benoetigtesWasser = 0; double benoetigterBohnen = 0; if (menge <= 0 || verhaeltnisWasserBohnen <= 0) { return false; // bohnen und Wasser anteil bestimmen: } // else { if(verhaeltnisWasserBohnen == 1) { benoetigtesWasser = menge / 2; benoetigterBohnen = menge / 2; }else if (verhaeltnisWasserBohnen == 2) { benoetigtesWasser = 2 * (menge / 3); benoetigterBohnen = 1 * (menge / 3); }else if (verhaeltnisWasserBohnen == 0.5) { benoetigtesWasser = 1 * (menge / 3); benoetigterBohnen = 2 * (menge / 3); } if (benoetigtesWasser > Wasser || benoetigterBohnen > Bohnen) { return false; } else { GesamtMengeKaffeeProduziert += menge; Wasser = Wasser - benoetigtesWasser; Bohnen = Bohnen - benoetigterBohnen; return true; } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
patrick89 Geschrieben 16. September 2020 Teilen Geschrieben 16. September 2020 (bearbeitet) Im Hinblick auf maxWasser und maxBohnen solltest du dir evtl. auch noch einmal die Konstruktoren ansehen(Außer die wurden dir auch so seltsam vorgegeben wie der Teil in Aufgabe d). Bearbeitet 16. September 2020 von patrick89 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Rienne Geschrieben 16. September 2020 Teilen Geschrieben 16. September 2020 vor 8 Minuten schrieb patrick89: Vergleich das nochmal mit dem was du da getippt hast. Ich sehe da auf den ersten Blick ehrlich gesagt keine Diskrepanz zwischen Aufgabenstellung und der Methode, die der TO erstellt hat. Kannst du vielleicht genauer sagen, was du meinst? Allerdings finde ich die ganze Aufgabenstellung ein wenig merkwürdig. Letzten Endes ist es doch in der Realität so, dass die produzierte Menge Kaffee fast 1:1 mit der verwendeten Menge Wasser übereinstimmt. Oder trinkt hier irgendwer Kaffee inkl. Bohnenschrot? 😅 Von den Mengenverhältnissen mal ganz zu schweigen. XD Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
patrick89 Geschrieben 16. September 2020 Teilen Geschrieben 16. September 2020 vor 4 Minuten schrieb Rienne: Ich sehe da auf den ersten Blick ehrlich gesagt keine Diskrepanz zwischen Aufgabenstellung und der Methode, die der TO erstellt hat. Du hast recht, die Methode passt. Ich hab mich in der Zeile vertan, sorry. Hab es gelöscht. Zitat Allerdings finde ich die ganze Aufgabenstellung ein wenig merkwürdig. Letzten Endes ist es doch in der Realität so, dass die produzierte Menge Kaffee fast 1:1 mit der verwendeten Menge Wasser übereinstimmt. Oder trinkt hier irgendwer Kaffee inkl. Bohnenschrot? 😅 Von den Mengenverhältnissen mal ganz zu schweigen. XD Allein die Einheiten triggern schon so hart Von den gewählten Datentypen ganz zu schweigen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
pr0gg3r Geschrieben 17. September 2020 Teilen Geschrieben 17. September 2020 Am 16.9.2020 um 13:29 schrieb MMazi: habe der code mit hilfe meinen Ausbilder korrigiert , so sieht nun aus . Noch ein paar Anmerkungen: if (statement) { return foo; } else { if (another statement) { ... } } Ist schöner: if (statement) { return foo; } if (another statement) { ... } Am 16.9.2020 um 13:29 schrieb MMazi: public double BohnenAuffuellen(double menge) { // prüfen ob die Behälter leer sind ( return in if statment ) if (menge <= 0) return 0; Würde hier eine Exception werfen (Stichwort: Ausnahmebehandlung). Man kann logischerweise nicht "minus X Bohnen" auffüllen (außer es würde bedeuten, dass man Bohnen heraus nimmt, was durch "return 0" aber nicht gewollt ist). So Wird ein Ein Entwickler, der (ausversehen) tatsächlich kaffeemaschine.BohnenAuffüllen(-123) aufruft dazu aufgefordert, die Exception zu behandeln (zB einen Fehler anzuzeigen) oder diese Logik erst gar nicht erst zu ermöglichen. Klammersetzung: Manchmal machst du if (...) { ... } aber manchmal auch: if (...) { ... } Ich weiß, dass C#-Entwickler zu letzterem tendieren, im Grunde ist es aber egal. Viel wichtiger ist, dass es konsistent ist, also komplett nach einem Stil eingehalten wird. Ein Linter schafft hier Abhilfe. Kommentare sind schön und gut, aber /* hier steht ein Kommentar 123*/ // Noch mehr Kommentar ist einfach nicht schön. Entweder eines von beiden oder keines. Auch ist viel zu viel kommentiert. Wenn da steht "private static readonly double ..." dann muss man nicht noch in einem Kommentar dazu schreiben, dass es "statische private Attribute" sind. Steht ja schon im Code Dont repeat yourself (DRY): die Methoden "WasserAuffuellen" und "BohnenAuffuellen" sind von der Logik her das Selbe in grün. Sowas möchte man eigentlich verhindern. (ok an dieser Stelle nicht ganz einfach für einen Anfänger). Deutsche Variablennamen... OK naja kann man drüber streiten. Wenn ihr das in der Firma so macht dann ok, ich finds immer eher nicht optimal, da man häufig in internationalen Teams arbeitet. JimTheLion reagierte darauf 1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MMazi Geschrieben 18. September 2020 Autor Teilen Geschrieben 18. September 2020 Ich Danke euch @pr0gg3r vielen Dank für die Ausführliche Antwort 👍, werde ich darauf achten Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.