Bruchrechner: Wie übernimmt man aus einer Textbox ein Rechenzeichen?

PerCent

Grünschnabel
Benutze Visual Studio 2010 Ultimate (Testversion) und Visual Studio 2010 Express C#
Verwendetes FrameworK: 2.0 und 4.0 Client
Programmiersprache: C#


Hallo,

ich habe von meiner Ausbildungstelle einen Auftrag bekommen verschiedene Programme zu erstellen wie zum beispiel Taschenrechner etc, mir kam dabei auch die Idee zum erstellen eines Bruchrechners. Die einfache Variante funktioniert einwandfrei. WObei ich jetzt bin ist der erweitere Bruchrechner.

Nun wollte ich so ein Feature einbauen was mir SEHR viele Buttons sparen tut. Man trägt dann nämlich nur ein Rechenzeichen (+, -, * oder /) ein und die entsprechende Zahlen und klickt nur noch auf "jetzt berechnen". Das problem ist nun dabei, WIE bekomme ich dieses Rechenzeichen aus der Textbox in den Rechenvorgang im Quellcode.

Habt ihr da beispiele wie ich jetzt sagen kann er soll aus Textbox 1 den zahlenwert nehmen aus textbox 2 das rechenzeichen und aus textbox 3 den zahlenwert? Also wie man den zahlenwer nimmt weis ich in dem man sagt zum beispiel:

Nummer1 = int.Parse(textBox1.Text);

habe auch die Nummer1 intialisiert mit dem Befehl:

int Nummer1;

Wenn ich es so mache wie bei dem beispiel da für das rechnenzeichen kommen folgende Fehlermeldungen:

Code:
            using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Erweiterter_Bruchrechner
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        int Nummer1;
        int Nummer2;
        int Rechnen1;
        int Ergebnis1;

        private void button1_Click(object sender, EventArgs e)
        {
            Nummer1 = int.Parse(textBox1.Text);
            Nummer2 = int.Parse(textBox2.Text);
            Rechnen1 = int.Parse(textBox23.Text);

            Ergebnis1 = Nummer1 Rechnen1 Nummer2;

            textBox5.Text = Ergebnis1.ToString();
        }
    }
}

Fehler:

1.:

Fehler 25 Die lokale Variable "Nummer2" kann erst verwendet werden, nachdem sie deklariert wurde. Bei der Deklaration der lokalen Variablen wird das Feld "Erweiterter_Bruchrechner.Form1.Nummer2" verborgen. C:\Users\PerCent\documents\visual studio 2010\Projects\Erweiterter Bruchrechner\Erweiterter Bruchrechner\Form1.cs 25 13 Erweiterter Bruchrechner

2.:

Fehler 26 "Erweiterter_Bruchrechner.Form1.Rechnen1" ist ein(e) "Feld", wird aber wie ein(e) "Typ" verwendet. C:\Users\PerCent\documents\visual studio 2010\Projects\Erweiterter Bruchrechner\Erweiterter Bruchrechner\Form1.cs 28 33 Erweiterter Bruchrechner

3.:
Fehler 27 ; erwartet. C:\Users\PerCent\documents\visual studio 2010\Projects\Erweiterter Bruchrechner\Erweiterter Bruchrechner\Form1.cs 28 33 Erweiterter Bruchrechner


Nun vieleicht könnt ihr mir weiterhelfen. Im Betrieb kann ich da nicht zuviel erwarten da sie mir als hilfe etwa 6 Bücher vor die Nase geworfen haben mit Visual Studio C# Programmierung von 2005, 2008 und ein C# Codebook und dem lieben Internet.
 
Willkommen bei tutorials.de :)

Was um alles in der Welt soll diese Zeile?
Code:
Ergebnis1 = Nummer1 Rechnen1 Nummer2;

Welches Rechenzeichen du hast, musst du mit if/switch etc prüfen und die entsprechenden Sachen in den Code schreiben.
 
hi,

habe von c # keine ahnung aber rechnen1 ist ja das rechenzeichen oder?
wieso parst du es dann in Integer?
Rechnen1 = int.Parse(textBox23.Text);
das kannst du eigentlich als string lassen, weürde ich mal sagen

und wegen der Zeile:
Ergebnis1 = Nummer1 Rechnen1 Nummer2;
wie sheel schon sagte: wäre eine If abfrage sinnvoll
einfach abfragen
if textbox.text = "+" Then
Ergebnis1 = Nummer1 + Nummer2;
else if textbox.text = "-" Then
Ergebnis1 = Nummer1 - Nummer2;
....

so in der art, die syntax halt noch an c# anpassen
 
In C# würde das ca. so ausschauen:

Code:
int a,b,ergebnis;
//...
try
{
    a=int.Parse(textbox1.Text);
    b=int.Parse(textbox2.Text);
}
catch(Exception){/*Keine Zahlen eingegeben*/}

if(textbox23.Text.Trim().Equals("+"))ergebnis=a+b;
else if(textbox23.Text.Trim().Equals("-"))ergebnis=a-b;
else if(textbox23.Text.Trim().Equals("*"))ergebnis=a*b;
//...

Für viele Rechenzeichen könnte man auch eine Map Rechenzeichen-Delegate machen...aber ich denke, für den Anfang reichts auch so :D
 
Zurück