Zum Inhalt springen

Taschenrechner im Windows-Style


Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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);

        }

Geschrieben

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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...