Írjunk programot, amely örökléssel oldja meg a kalkulátor működését a négy alapművelet mellett hatványoz és gyököt von, valamint mértani és számtani közepet is számol.
A feladat megoldása:
class Kalkulátor
{
// adatmezők deklarációja
protected double szám1, szám2, ered;
protected char művjel;
// paraméteres konstruktor
public Kalkulátor(double sz1, double sz2, char mjel)
{
szám1 = sz1; szám2 = sz2; művjel = mjel;
ered = 0;
}
// Metódusok
public virtual void Művelet()
{
switch (művjel)
{
case '+': ered = szám1 + szám2; break;
case '-': ered = szám1 - szám2; break;
case '*': ered = szám1 * szám2; break;
case '/': ered = szám1 / szám2; break;
}
}
// Visszaadja az ered tartalmát
public double Ered
{
get
{
return ered;
}
}
}
class UjKalkulátor : Kalkulátor
{
private double ered2, ered3;
public UjKalkulátor(double sz1, double sz2, char mjel)
:base(sz1, sz2, mjel)
{
ered2 = 0; ered3=0;
}
// Metódusok
public override void Művelet()
{
switch (művjel)
{
case '+': ered = szám1 + szám2; break;
case '-': ered = szám1 - szám2; break;
case '*': ered = szám1 * szám2; break;
case '/': ered = szám1 / szám2; break;
// a szám1-et a szam2-edik hatványra emel
case '^': ered = Math.Pow(szám1,szám2); break;
// a szám1-et a szám2-edik gyökét számítja ki
case '~': ered = Math.Pow(szám1,1.0/szám2);
break;
}
}
public void MértaniKözép()
{
ered2 = Math.Pow((szám1*szám2),1.0/2.0);
}
public void SzámtaniKözép()
{
ered3 = (szám1+szám2)/2.0;
}
public double Ered2
{
get
{
return ered2;
}
}
public double Ered3
{
get
{
return ered3;
}
}
}
private void Művelet_Click(object sender, EventArgs e)
{
double a, b;
char műv;
int hiba;
if (textBox1.Text != "" && textBox2.Text != ""
&& textBox3.Text != "")
{
a = Double.Parse(textBox1.Text);
b = Double.Parse(textBox2.Text);
műv = Char.Parse(textBox3.Text);
hiba = 0;
if (műv == '/' && b == 0)
{
MessageBox.Show("0 az osztandó értéke!");
}
else
{
switch (műv)
{
case '+': textBox7.Text = "Összeadás"; break;
case '-': textBox7.Text = "Kivonás"; break;
case '*': textBox7.Text = "Szorzás"; break;
case '/': textBox7.Text = "Osztás"; break;
case '^': textBox7.Text = "Hatványozás";
break;
case '~': textBox7.Text = "Gyökvonás"; break;
default: hiba = 1;
MessageBox.Show("Hibás a műveleti jel!",
"Hibajelzés!"); break;
}
if (hiba == 0);
{
UjKalkulátor k1 = new UjKalkulátor(a,b,műv);
k1.Művelet();
textBox4.Text = k1.Ered.ToString();
k1.SzámtaniKözép();
textBox5.Text = k1.Ered3.ToString();
k1.MértaniKözép();
textBox6.Text = k1.Ered2.ToString();
}
}
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
textBox4.Text = ""; textBox5.Text = "";
textBox6.Text = ""; textBox7.Text = "";
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
textBox4.Text = ""; textBox5.Text = "";
textBox6.Text = ""; textBox7.Text = "";
}
private void textBox3_TextChanged(object sender, EventArgs e)
{
textBox4.Text = ""; textBox5.Text = "";
textBox6.Text = ""; textBox7.Text = "";
}
A program futási eredményei: