A feladat megoldásához olvassunk be három valós számot és válasszuk ki a nagyobbat, melyet a ”Max érték” –kel jelölt szövegablakban írjunk ki.
Globálisan deklarálunk öt duplapontos valós változót, a, b és c-t a három beolvasandó szám számára, a max1 és max2 változókat a maximum kiválasztására.
A feladatot kétféle módon oldjuk meg.
Első megoldás
A Keres_1 nyomógomb megnyomásakor Keres1_Click eseménykezelőben láncolt if utasítással kiválasztjuk a legnagyobbat és kiírjuk a max1 változó tartalmát a szövegalakba.
A láncolt if utasítást relációkból építjük fel. A feltételt zárójelbe kell tennünk és az else előtti utasítást pontosvesszővel zárjuk le. Amennyiben az a>b teljesül, akkor egy újabb if utasítással megvizsgáljuk az a>c feltételt, ha ez a feltétel teljesül, akkor az a lesz a maximum, különben pedig a c. Ha az a >b nem teljesül, akkor az else ágán megvizsgáljuk a b>c feltételt. A feltétel teljesülésekor a b lesz a maximum, egyébként, a c.
Második megoldás
A Keres 2 nyomógomb megnyomásakor Keres2_Click eseménykezelőben feladatot rövidebben fogjuk megoldani úgy, hogy a max2 változóba feltétel nélkül tároljuk a c-t, majd egy if utasításban vizsgáljuk meg a két reláció egyidejű teljesülését logikai ÉS kapcsolattal:
a>b és a>c ---> ( a > b && a > c)
A C# nyelvben a logikai ÉS kapcsolatot az &&, a logikai VAGY kapcsolatot a || műveleti jelek jelentik. Mivel a relációknak nagyobb a precedenciája (elsőbbsége) mint a logikai műveleteknek, így a relációkat nem kell zárójelbe tenni.
Visszatérve a feltételhez, ha az a nagyobb b-nél ÉS c-nél, akkor a maximum az a lesz, különben megvizsgáljuk, hogy a b nagyobb-e mint a c, mert akkor a maximum a b lesz, ha a feltétel nem teljesül, a max2 változóban a c marad.
A program listája:
double a, b, c, max1, max2;
private void Keres1_Click(object sender, EventArgs e)
{
// adatok vizsgálata
if(textBox1.Text != "" && textBox2.Text != "" &&
textBox3.Text != "" )
{
a = Double.Parse(textBox1.Text);
b = Double.Parse(textBox2.Text);
c = Double.Parse(textBox3.Text);
if (a > b)
{
if (a > c) max1 = a; else max1 = c;
}
else
{
if (b > c) max1 = b; else max1 = c;
}
textBox4.Text = max1.ToString();
}
}
private void Keres2_Click(object sender, EventArgs e)
{
if(textBox1.Text != "" && textBox2.Text != "" &&
textBox3.Text != "" )
{
a = Double.Parse(textBox1.Text);
b = Double.Parse(textBox2.Text);
c = Double.Parse(textBox3.Text);
max2 = c;
if (a > b && a > c) max2 = a;
else if (b > c) max2 = b;
}
textBox5.Text = max2.ToString();
}
// bármelyik adat változik, az eredmény ablakok törlődnek
private void textBox1_TextChanged(object sender, EventArgs e)
{
textBox4.Text = ""; textBox5.Text = "";
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
textBox4.Text = ""; textBox5.Text = "";
}
private void textBox3_TextChanged(object sender, EventArgs e)
{
textBox4.Text = ""; textBox5.Text = "";
}
A program futási eredményei: