Witam. Napisałem prosty kalkulator w c#. Po wykonaniu jednego działania muszę kasować wynik z pamięci, żeby wywołać kolejne działanie. Co mógłbym zmienić żeby działać na otrzymanym wyniku, bez konieczności kasowania poprzedniego wyniku. Poniżej zamieszczam kod:
``` namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
String LiczbaPierwsza = " ";
String LiczbaDruga=" ";
char znak= ' ';
String tymczasowa = " ";
public Form1()
{
InitializeComponent();
}
private void liczba(int liczba) {
if (znak == ' ')
{
LiczbaPierwsza += liczba;
textBox1.Text = LiczbaPierwsza.ToString();
}
else
{
LiczbaDruga += liczba;
textBox1.Text = LiczbaDruga.ToString();
}
}
private void b0_Click(object sender, EventArgs e)
{
liczba(0);
}
private void b1_Click(object sender, EventArgs e)
{
liczba(1);
}
private void b2_Click(object sender, EventArgs e)
{
liczba(2);
}
private void b3_Click(object sender, EventArgs e)
{
liczba(3);
}
private void b5_Click(object sender, EventArgs e)
{
liczba(5);
}
private void b6_Click(object sender, EventArgs e)
{
liczba(6);
}
private void b4_Click(object sender, EventArgs e)
{
liczba(4);
}
private void b7_Click(object sender, EventArgs e)
{
liczba(7);
}
private void b8_Click(object sender, EventArgs e)
{
liczba(8);
}
private void b9_Click(object sender, EventArgs e)
{
liczba(9);
}
private void bdodawanie_Click(object sender, EventArgs e)
{
znak = '+';
textBox1.Text = " ";
}
private void bodejmowanie_Click(object sender, EventArgs e)
{
znak = '-';
textBox1.Text = " ";
}
private void bmnozenie_Click(object sender, EventArgs e)
{
znak = '*';
textBox1.Text = " ";
}
private void bdzielenie_Click(object sender, EventArgs e)
{
znak = '/';
textBox1.Text = " ";
}
private void bwynik_Click(object sender, EventArgs e)
{
switch (znak) {
case '+':
if (LiczbaPierwsza == " ")
{
textBox1.Text = (int.Parse("0") + int.Parse(LiczbaDruga)).ToString();
tymczasowa=textBox1.Text;
}
else if (LiczbaDruga == " ")
{
textBox1.Text = (int.Parse(LiczbaPierwsza) + int.Parse(LiczbaPierwsza)).ToString();
tymczasowa = textBox1.Text;
}else
{
textBox1.Text = (int.Parse(LiczbaPierwsza) + int.Parse(LiczbaDruga)).ToString();
tymczasowa = textBox1.Text;
}
break;
case '-':
if (LiczbaPierwsza == " ")
{
textBox1.Text = (int.Parse("0") - int.Parse(LiczbaDruga)).ToString();
break;
}
else if (LiczbaDruga == " ")
{
textBox1.Text = (int.Parse(LiczbaPierwsza) - int.Parse(LiczbaPierwsza)).ToString();
break;
}
else
{
textBox1.Text = (int.Parse(LiczbaPierwsza) - int.Parse(LiczbaDruga)).ToString();
break;
}
case '*':
if (LiczbaPierwsza == " ")
{
textBox1.Text = (int.Parse("0") * int.Parse(LiczbaDruga)).ToString();
break;
}
else if (LiczbaDruga == " ")
{
textBox1.Text = (int.Parse(LiczbaPierwsza) * int.Parse(LiczbaPierwsza)).ToString();
break;
}
else
{
textBox1.Text = (int.Parse(LiczbaPierwsza) * int.Parse(LiczbaDruga)).ToString();
break;
}
case '/':
if (LiczbaDruga == "0")
{
textBox1.Text = "Error. nie można dzielić przez 0";
break;
}
if (LiczbaPierwsza == " ")
{
textBox1.Text = (int.Parse("0") / int.Parse(LiczbaDruga)).ToString();
break;
}
else if (LiczbaDruga == " ")
{
textBox1.Text = (int.Parse(LiczbaPierwsza) / int.Parse(LiczbaPierwsza)).ToString();
break;
}
else
{
textBox1.Text = (int.Parse(LiczbaPierwsza) / int.Parse(LiczbaDruga)).ToString();
break;
}
}
}
private void bkasuj_Click(object sender, EventArgs e)
{
LiczbaPierwsza =" ";
LiczbaDruga = " ";
znak = ' ';
textBox1.Text = " ";
}