Ostatnio pisałem na laborki własnie taki prosty kalkulator, tylko że w C#. Dużych różnic nie powinno być.
private void jeden_Click(object sender, EventArgs e)
{
textBox1.AppendText("1");
}
private void dwa_Click(object sender, EventArgs e)
{
textBox1.AppendText("2");
}
private void trzy_Click(object sender, EventArgs e)
{
textBox1.AppendText("3");
}
private void cztery_Click(object sender, EventArgs e)
{
textBox1.AppendText("4");
}
private void piec_Click(object sender, EventArgs e)
{
textBox1.AppendText("5");
}
private void szesc_Click(object sender, EventArgs e)
{
textBox1.AppendText("6");
}
private void siedem_Click(object sender, EventArgs e)
{
textBox1.AppendText("7");
}
private void osiem_Click(object sender, EventArgs e)
{
textBox1.AppendText("8");
}
private void dziewiec_Click(object sender, EventArgs e)
{
textBox1.AppendText("9");
}
private void zero_Click(object sender, EventArgs e)
{
if (textBox1.TextLength == 0)
{
textBox1.AppendText("0");
}
else if (czyJestJuzPrzecinek == true)
{
textBox1.AppendText("0");
}
else if (Convert.ToDouble(textBox1.Text) != 0)
{
textBox1.AppendText("0");
}
}
private void przecinek_Click(object sender, EventArgs e)
{
if (!czyJestJuzPrzecinek)
{
textBox1.AppendText(",");
czyJestJuzPrzecinek = true;
}
}
private void wyczysc_Click(object sender, EventArgs e)
{
Wyczysc();
}
//Operatory
private void dodaj_Click(object sender, EventArgs e)
{
Dodaj();
}
private void odejmij_Click(object sender, EventArgs e)
{
Odejmij();
}
private void pomnoz_Click(object sender, EventArgs e)
{
Pomnoz();
}
private void podziel_Click(object sender, EventArgs e)
{
Podziel();
}
private void rownasie_Click(object sender, EventArgs e)
{
RownaSie();
}
//Mechanika
enum AktualnaOperacja { plus, minus, mnozenie, dzielenie };
AktualnaOperacja aktualnaOperacja;
double akumulator = 0.0;
bool czyAkumulatorPelen = false;
bool czyToBylWynik = false;
bool czyJestJuzPrzecinek = false;
void Dodaj()
{
if (!czyAkumulatorPelen && textBox1.TextLength > 0)
{
akumulator = Convert.ToDouble(textBox1.Text);
czyAkumulatorPelen = true;
aktualnaOperacja = AktualnaOperacja.plus;
czyJestJuzPrzecinek = false;
textBox1.Clear();
}
else if (textBox1.TextLength > 0 && !czyToBylWynik)
{
akumulator += Convert.ToDouble(textBox1.Text);
aktualnaOperacja = AktualnaOperacja.plus;
czyJestJuzPrzecinek = false;
textBox1.Clear();
}
else if (textBox1.TextLength > 0 && czyToBylWynik)
{
czyToBylWynik = false;
aktualnaOperacja = AktualnaOperacja.plus;
czyJestJuzPrzecinek = false;
textBox1.Clear();
}
}
void Odejmij()
{
if (!czyAkumulatorPelen && textBox1.TextLength > 0)
{
akumulator = Convert.ToDouble(textBox1.Text);
czyAkumulatorPelen = true;
aktualnaOperacja = AktualnaOperacja.minus;
czyJestJuzPrzecinek = false;
textBox1.Clear();
}
else if (textBox1.TextLength > 0 && !czyToBylWynik)
{
akumulator -= Convert.ToDouble(textBox1.Text);
aktualnaOperacja = AktualnaOperacja.minus;
czyJestJuzPrzecinek = false;
textBox1.Clear();
}
else if (textBox1.TextLength > 0 && czyToBylWynik)
{
czyToBylWynik = false;
aktualnaOperacja = AktualnaOperacja.minus;
czyJestJuzPrzecinek = false;
textBox1.Clear();
}
}
void Pomnoz()
{
if (!czyAkumulatorPelen && textBox1.TextLength > 0)
{
akumulator = Convert.ToDouble(textBox1.Text);
czyAkumulatorPelen = true;
aktualnaOperacja = AktualnaOperacja.mnozenie;
czyJestJuzPrzecinek = false;
textBox1.Clear();
}
else if (textBox1.TextLength > 0 && !czyToBylWynik)
{
akumulator *= Convert.ToDouble(textBox1.Text);
aktualnaOperacja = AktualnaOperacja.mnozenie;
czyJestJuzPrzecinek = false;
textBox1.Clear();
}
else if (textBox1.TextLength > 0 && czyToBylWynik)
{
czyToBylWynik = false;
aktualnaOperacja = AktualnaOperacja.mnozenie;
czyJestJuzPrzecinek = false;
textBox1.Clear();
}
}
void Podziel()
{
if (!czyAkumulatorPelen && textBox1.TextLength > 0)
{
akumulator = Convert.ToDouble(textBox1.Text);
czyAkumulatorPelen = true;
aktualnaOperacja = AktualnaOperacja.dzielenie;
czyJestJuzPrzecinek = false;
textBox1.Clear();
}
else if (textBox1.TextLength > 0 && !czyToBylWynik)
{
double mianownik = Convert.ToDouble(textBox1.Text);
if (mianownik == 0.0)
{
Wyczysc();
}
else
{
akumulator /= mianownik;
aktualnaOperacja = AktualnaOperacja.dzielenie;
czyJestJuzPrzecinek = false;
textBox1.Clear();
}
}
else if (textBox1.TextLength > 0 && czyToBylWynik)
{
czyToBylWynik = false;
aktualnaOperacja = AktualnaOperacja.dzielenie;
czyJestJuzPrzecinek = false;
textBox1.Clear();
}
}
void Wyczysc()
{
textBox1.Clear();
akumulator = 0.0;
czyToBylWynik = false;
czyAkumulatorPelen = false;
czyJestJuzPrzecinek = false;
}
void RownaSie()
{
switch (Convert.ToInt32(aktualnaOperacja))
{
case 0:
Dodaj();
break;
case 1:
Odejmij();
break;
case 2:
Pomnoz();
break;
case 3:
Podziel();
break;
default:
break;
}
textBox1.Clear();
czyJestJuzPrzecinek = false;
textBox1.AppendText(akumulator.ToString());
czyToBylWynik = true;
}