neuling04 Geschrieben 19. Dezember 2010 Geschrieben 19. Dezember 2010 Hallo Leute Ich habe den Auftrag einen Taschrenrechner zu programmieren. Nur bin ich ein Anfänger und komme nur äußerst langsam weiter. Deshalb die Frage hat irgendwer schon so einen Taschenrechner? Der Auftrag lautet: A) Die Klasse (Kurz: TR) hat 2 Double Felder zur Eingabe, ein Double Feld für das Ergebnis und einen Rechenoperator (string). Das Klicken der Ziffern 0..9 bzw A..F bewirkt keine Kommunikation mit dem TR, es wird nur die Eingabetextbox verändert C) Beim Klicken auf +,-,*./ wird das Eingabefeld in den Taschenrechner übertragen. Die Methode "plus" rechnet nur dann, wenn beide Eingaben belegt sind. Das Rechenergebnis wird dann im ersten Eingabefeld abgelegt, das zweite auf NULL gesetzt. D) Die Methode "toString" zeigt das letzte Rechenergebnis an. E) Die Methode "istgleich" löscht beide Eingabefelder im TR und merkt sich das Rechenergebnis. F) Teste das Programm und erstelle ein UML-Diagramm bisherigen Lösung. zB Das Berechnen von 34+25+2+90 soll funktionieren G) Ergänze im TR weitere Grundrechnungsarten(-,*,...) Danke im voraus! Zitieren
lilith2k3 Geschrieben 20. Dezember 2010 Geschrieben 20. Dezember 2010 Frag besser Google, da ist die Trefferquote besser Zitieren
neuling04 Geschrieben 20. Dezember 2010 Autor Geschrieben 20. Dezember 2010 ja das hab ich auc shcon probeirt. Nur das problem leigt darin dass alles Taschnerechner in der Forms.cs ausprogrammiert sind --> so hab ichs ja auch aber wie gesagt muss ich das Rechen alles in der Klasse auslagern. Zitieren
it_crowd Geschrieben 20. Dezember 2010 Geschrieben 20. Dezember 2010 Taschnerechner in der Forms.cs ausprogrammiert sind --> so hab ichs ja auch dann zeig dein Form.cs doch mal und dann google einfach mal nach oop da gibts genug treffer mfg it_crowd Zitieren
lilith2k3 Geschrieben 20. Dezember 2010 Geschrieben 20. Dezember 2010 ja das hab ich auc shcon probeirt. Nur das problem leigt darin dass alles Taschnerechner in der Forms.cs ausprogrammiert sind --> so hab ichs ja auch aber wie gesagt muss ich das Rechen alles in der Klasse auslagern. Versteh ich jetzt nicht? Ist das Refactoring das Problem? Kannst Dir einfach eine Helper Class anlegen und alle Methoden zur Berechnung da reinpacken, fertig... Vielleicht zeichnest Du uns mal ein UML-Diagramm (wie unter Punkt F gefordert), damit wir sehen, wo wir Dir weiterhelfen können. Zitieren
LukOnline Geschrieben 20. Dezember 2010 Geschrieben 20. Dezember 2010 Hey, ich könnte dir einen von mir erstellten Taschenrechner geben. Etwas umbauen musst du ihn aber. Er hat nur ein Textfeld, wo alle Operatoren und Operanden reingeschrieben bzw geklickt werden. Die Methode berechen() bekommt also einen String übergeben und gibt einen double (oder decimal?) Wert zurück. Zum ausrechnen habe ich mir aber einen fertigen Formelparser heruntergeladen. (Die Berücksichtigung von Potenzen, Punkt-vor-Strich,... ist sehr aufwändig) Es gibt nur ein Problem: Ich bin Pendler und habe zur Zeit Urlaub und bin bis ins neue Jahr bei meiner Familie. Den Rechner habe ich auf Arbeit oder zuhause... Komme also erst am 03.Jan wieder ran. Wenn du magst kannst du mich ab da nochmal anschreiben. (ICQ bitte!) Hoffe, dass es dir bis dahin ausreicht. Gruß, Luk Zitieren
neuling04 Geschrieben 20. Dezember 2010 Autor Geschrieben 20. Dezember 2010 hier der inhalt der form.cs : using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace GrafischerTaschenrechner { public partial class Form1 : Form { public Form1() { InitializeComponent(); } double total1 = 0; double total2 = 0; bool plusButtonClicked = false; bool minusButtonClicked = false; bool divideButtonClicked = false; bool multiplyButtonClicked = false; bool quadratButtonClicked = false; private void zero_Click(object sender, EventArgs e) { //zum Anzeigen in der Textbox einaus.Text = einaus.Text + zero.Text; } private void einaus_TextChanged(object sender, EventArgs e) { } private void eins_Click(object sender, EventArgs e) { //zum Anzeigen in der Textbox einaus.Text = einaus.Text + eins.Text; } private void zwei_Click(object sender, EventArgs e) { //zum Anzeigen in der Textbox einaus.Text = einaus.Text + zwei.Text; } private void drei_Click(object sender, EventArgs e) { //zum Anzeigen in der Textbox einaus.Text = einaus.Text + drei.Text; } private void vier_Click(object sender, EventArgs e) { //zum Anzeigen in der Textbox einaus.Text = einaus.Text + vier.Text; } private void fuenf_Click(object sender, EventArgs e) { //zum Anzeigen in der Textbox einaus.Text = einaus.Text + fuenf.Text; } private void sechs_Click(object sender, EventArgs e) { //zum Anzeigen in der Textbox einaus.Text = einaus.Text + sechs.Text; } private void sieben_Click(object sender, EventArgs e) { //zum Anzeigen in der Textbox einaus.Text = einaus.Text + sieben.Text; } private void acht_Click(object sender, EventArgs e) { //zum Anzeigen in der Textbox einaus.Text = einaus.Text + acht.Text; } private void neun_Click(object sender, EventArgs e) { //zum Anzeigen in der Textbox einaus.Text = einaus.Text + neun.Text; } private void clear_Click(object sender, EventArgs e) { //löschen des Displays einaus.Clear(); } private void plus_Click(object sender, EventArgs e) { //es wird der text von der Textbox geholt und in das double Format umgewandelt total1 = total1 + double.Parse(einaus.Text); einaus.Clear(); plusButtonClicked = true; } private void minus_Click(object sender, EventArgs e) { total1 = total1 + double.Parse(einaus.Text); einaus.Clear(); minusButtonClicked = true; } private void mal_Click(object sender, EventArgs e) { total1 = total1 + double.Parse(einaus.Text); einaus.Clear(); multiplyButtonClicked = true; } private void durch_Click(object sender, EventArgs e) { total1 = total1 + double.Parse(einaus.Text); einaus.Clear(); divideButtonClicked = true; } private void istgleich_Click(object sender, EventArgs e) { if (plusButtonClicked == true) { total2 = total1 + double.Parse(einaus.Text); } if (minusButtonClicked == true) { total2 = total1 - double.Parse(einaus.Text); } if (multiplyButtonClicked == true) { total2 = total1 * double.Parse(einaus.Text); } if (divideButtonClicked == true) { total2 = total1 / double.Parse(einaus.Text); } if (quadratButtonClicked == true) { total2 = total1 * total1; } einaus.Text = total2.ToString(); total1 = 0; } private void quadrat_Click(object sender, EventArgs e) { total1 = double.Parse(einaus.Text); quadratButtonClicked = true; } private void komma_Click(object sender, EventArgs e) { einaus.Text = einaus.Text + komma.Text; } } } das problem liegt darin, dass ich nur sehr zögerlich vorankomme die komplette Rechenlogik in die Klasse Taschenrechner auszulagern.. :/ ich weiß leider auch nicht genau warum mhm.. ne, die zeit wird tag zu tag knapper ich sollte am mittwoch fertig sein. Zitieren
lilith2k3 Geschrieben 20. Dezember 2010 Geschrieben 20. Dezember 2010 die komplette Rechenlogik in die Klasse Taschenrechner auszulagern.. :/ ich weiß leider auch nicht genau warum Ein einfacher Grund ist, dass, wenn Du Logik und Graphische Benutzerführung getrennt hast, Du Dir bspw. ganz schnell eine Test-Applikation schreiben kannst, die die Logik Deines Taschenrechners überprüft - ohne dass also jemand explizit die Tasten drücken muss, wird getestet, ob Dein Rechner das tut, was Du von ihm willst; bzw. kannst Du gucken, was Dein Rechner im Fehlerfall tut. Wie abstrakt darf denn Euer Rechner konzipiert werden? Ansonsten solltest Du Dir über einen "Syntaxbaum" Gedanken machen. Zitieren
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.