mistajeff Geschrieben 1. September 2010 Teilen Geschrieben 1. September 2010 Hallo miteinander Es ist mein erster Beitrag hier (eher ein Hilfeschrei), jedoch nicht mein erster Besuch. Ich hatte schon mehrmals die Lösung auf ein Problem hier gefunden (Super Forum!) IIch habe im moment ein Problem. Ich muss einen Taschenrechner so programmieren, wie der taschenrechner beim windows es ist. (ohne wissenschaftl. funktionen etc.) also nur die grundfunktionen +,-,*,/ Ich bin mit meinem Lehrmeister mal soweit gekommen, das meiste hab ich gemacht, er hat mir etwas geholfen und verbessert, jedoch läuft es immer noch nicht einwandfrei. Meine Frage: Was muss ich noch verbessern? Würdet ihr diesen Rechner als "ok" bezeichnen?? namespace MyFirstCalculator { public partial class Form1 : Form { private double zwischenwert = 0; private Operator letzterOperator; public Form1() { InitializeComponent(); } private void _btnGleich_Click(object sender, EventArgs e) { this.Rechne(Convert.ToDouble(this._txtResult.Text)); this._txtResult.Text = zwischenwert.ToString(); } private void _btnZahl1_Click(object sender, EventArgs e) { if (sender is Button) { if (this._txtResult.Text == "0") { this._txtResult.Text = ""; } this._txtResult.Text += ((Button)sender).Text; } } private void _btnPlus_Click(object sender, EventArgs e) { if (_txtResult != null) { this.Rechne(Convert.ToDouble(this._txtResult.Text)); this.letzterOperator = Operator.Plus; this._txtResult.Text = "0"; } } private void button1_Click(object sender, EventArgs e) { this.zwischenwert = 0; this._txtResult.Text = "0"; } private void _btnMinus_Click(object sender, EventArgs e) { if (_txtResult != null) { this.Rechne(Convert.ToDouble(this._txtResult.Text)); this.letzterOperator = Operator.Minus; this._txtResult.Text = "0"; } } private void _btnDiv_Click(object sender, EventArgs e) { if (_txtResult != null) { this.Rechne(Convert.ToDouble(this._txtResult.Text)); this.letzterOperator = Operator.Dividiert; this._txtResult.Text = "0"; } } private void _btnMultiplizieren_Click(object sender, EventArgs e) { if (_txtResult != null) { this.Rechne(Convert.ToDouble(this._txtResult.Text)); this.letzterOperator = Operator.Mal; this._txtResult.Text = "0"; } } private void Rechne(double neueZahl) { switch (this.letzterOperator) { case Operator.Plus: this.zwischenwert += neueZahl; break; case Operator.Minus: this.zwischenwert -= neueZahl; break; case Operator.Mal: this.zwischenwert *= neueZahl; break; case Operator.Dividiert: this.zwischenwert = this.zwischenwert / neueZahl; break; } } private enum Operator { Plus, Minus, Mal, Dividiert } } } danke im voraus und gruss mistajeff Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
it_crowd Geschrieben 1. September 2010 Teilen Geschrieben 1. September 2010 Willkommen im Forum, kannst du dein "nicht einwandfrei" etwas definieren, also was läuft nicht so wie du willst. Der Code an sich sieht ganz gut aus, nur finde ich das man meines erachtens sämtliche this-operatoren entfernen kann, aber wenn du die haben magst :-) LG it_crowd Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
HJST1979 Geschrieben 2. September 2010 Teilen Geschrieben 2. September 2010 Hallo also ich bin zwar nicht nicht gut in c# aber ein paar kleinigkeiten sind mir aufgefallen die sich aber nicht auf die Funktionalität auswirken. - button1_Click würd ich umbenennen damit man weiß was hinter dieser Funktion tatsächlich steht z.B. btn_Clear - _btnZahl1_Click würd ich umbenennen in einen allgemeineren Begriff da der auch bestimmt für das "," gehen soll !? - Die Unterstriche vor dem Funktionsnamen würde ich pers. entfernen, ich bin nämlich nicht so der Fan von Unterstrichen am Anfang (aber könnte durchaus sein dass dies in c# zur Standardnotation gehört. - Die Funktionen für die Rechenarten würde ich "einheitlich" bezeichnen, Beispiel: btnAdd_Click, btnSub_Click, btnMulti_Click, btnDiv_Click Gruß Hans-Jörg Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mistajeff Geschrieben 7. September 2010 Autor Teilen Geschrieben 7. September 2010 für eure antworten! oke, hab ein paar definierte fragen : - wie krieg ich das mit punkt vor strich hin? - wenn ich zb 3-3 rechne kriegt der -6 (warum?) - wie kann ich die pfeiltaste definieren?, also die delete-taste? danke im voraus und gruss mistajeff Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mistajeff Geschrieben 7. September 2010 Autor Teilen Geschrieben 7. September 2010 das mit der delete-taste war ja kein ding , das hab ich schon mal, bleibt nur noch das mit punkt vor strich und die sache mit dem minus-operator (zb 3-3 = -6).... private void _btnDelete_Click(object sender, EventArgs e) { _txtResult.Text = _txtResult.Text.Remove(_txtResult.Text.Length - 1); } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
it_crowd Geschrieben 7. September 2010 Teilen Geschrieben 7. September 2010 also so wie ich das an deinem code sehe kannst du doch nur zwei zahlen auf einmal miteinader verechnen oder hab ich mich da verschaut? hast du schonmal versucht dein programm zu debuggen um den fehler bei dem minusrechnen zu finden, schau einfach mal die werte im debugmodus an 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.