Shauni
Cadet 3rd Year
- Registriert
- Feb. 2011
- Beiträge
- 44
Hey Leute wir programmieren gerade einen Taschenrecher in c# mit Windows Forms
mein Code sieht wie folgt aus:
mein Problem ist jetzt die Methode bOperations() unzwar hab ich in dieser richtig rumgepfuscht, will aber eine richtige lösung haben ^^ (die Methode enthält auch noch paar Fehler)
die Methode wird aufgerufen wenn der Benutzer auf + - * / CE oder CLR klickt
entwurd
[LABEL]
1 2 3 CE CLR
4 5 6 / *
7 8 9 + -
0 , +/- =
so sieht ungefähr mein entwurf aus ^^ (weiß grad nicht wie ich hier ein bild von meiner platte einfüg)
mein Code sieht wie folgt aus:
Code:
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 Taschenrechner
{
public partial class fTaschenrechner : Form
{
CRechner Rechner = new CRechner();
string[] sMember = new string[4] {"", "", "", ""};
int i=0;
public fTaschenrechner()
{
InitializeComponent();
}
private void bGetNum(object sender, EventArgs e)
{
if (((Button)sender).Text == "," && sMember[i].Contains(",") == false)
{
if (sMember[i].Length == 0 || sMember[i].Length == 1 && sMember[i].Contains("-") == true)
{
sMember[i] += "0" + ((Button)sender).Text;
}
else
{
sMember[i] += ((Button)sender).Text;
}
}
else if (((Button)sender).Text == "+/-")
{
if (sMember[i].Contains("-") == false)
{
sMember[i] = sMember[i].Insert(0,"-");
}
else
{
sMember[i] = sMember[i].Remove(0, 1);
}
}
else if(((Button)sender).Text != "," && ((Button)sender).Text != "+/-")
{
sMember[i] += ((Button)sender).Text;
}
lAusgabe.Text = sMember[0] + sMember[1] + sMember[2];
}
private void bOperations(object sender, EventArgs e)
{
if (((Button)sender).Text == "+" || ((Button)sender).Text == "-" ||
((Button)sender).Text == "*" || ((Button)sender).Text == "/")
{
sMember[2] = (((Button)sender).Text);
lAusgabe.Text += sMember[2];
}
if (sMember[0].Length > 0 && sMember[1].Length > 0 && sMember[2].Length == 0 ||
sMember[0].Contains(",") == true && sMember[0].Length > 2 ||
sMember[1].Contains(",") == true && sMember[1].Length > 2 ||
sMember[0].Contains("-") == true && sMember[0].Length > 1 ||
sMember[1].Contains("-") == true && sMember[1].Length > 1)
{
switch (((Button)sender).Text)
{
case "+": sMember[3] = Convert.ToString(Rechner.Addieren(Convert.ToDouble(sMember[0]), Convert.ToDouble(sMember[1])));
break;
case "-": sMember[3] = Convert.ToString(Rechner.Subtrahieren(Convert.ToDouble(sMember[0]), Convert.ToDouble(sMember[1])));
break;
case "*": sMember[3] = Convert.ToString(Rechner.Multiplizieren(Convert.ToDouble(sMember[0]), Convert.ToDouble(sMember[1])));
break;
case "/": sMember[3] = Convert.ToString(Rechner.Dividieren(Convert.ToDouble(sMember[0]), Convert.ToDouble(sMember[1])));
break;
}
i++;
}
else if (sMember[0].Length > 0 || sMember[1].Length > 0 || sMember[2].Length > 0)
{
switch (((Button)sender).Text)
{
case "CE": if (sMember[0].Length > 0 && sMember[2].Length == 0)
sMember[0].Remove(sMember.Length, 1);
else if (sMember[3].Length > 0 && sMember[1].Length == 0)
sMember[3].Remove(0, 1);
else if (sMember[1].Length > 0)
sMember[1].Remove(sMember[1].Length, 1);
if (sMember[2].Length == 0)
i--;
break;
case "CLR": sMember[0].Remove(0, sMember[0].Length);
sMember[1].Remove(0, sMember[1].Length);
sMember[2].Remove(0, sMember[2].Length);
i--;
break;
}
}
}
private void bCalc_Click(object sender, EventArgs e)
{
lAusgabe.Text += "=" + sMember[3];
}
}
class CRechner
{
public double Addieren(double dZahl1, double dZahl2)
{
return dZahl1 + dZahl2;
}
public double Subtrahieren(double dZahl1, double dZahl2)
{
return dZahl1 - dZahl2;
}
public double Multiplizieren(double dZahl1, double dZahl2)
{
return dZahl1 * dZahl2;
}
public double Dividieren(double dZahl1, double dZahl2)
{
return dZahl1 / dZahl2;
}
}
}
mein Problem ist jetzt die Methode bOperations() unzwar hab ich in dieser richtig rumgepfuscht, will aber eine richtige lösung haben ^^ (die Methode enthält auch noch paar Fehler)
die Methode wird aufgerufen wenn der Benutzer auf + - * / CE oder CLR klickt
entwurd
[LABEL]
1 2 3 CE CLR
4 5 6 / *
7 8 9 + -
0 , +/- =
so sieht ungefähr mein entwurf aus ^^ (weiß grad nicht wie ich hier ein bild von meiner platte einfüg)