A legnagyobb közös osztó keresését do-while ciklussal is megoldhatjuk. Az 1. megoldás programot felhasználva az alábbi módosításokat kell végrehajtanunk:
- Mivel a do-while ciklus hátul tesztelő, ezért a számok beolvasása után egy feltételes utasításban meg kell vizsgálnunk, hogy a szám1 és a szám2 tartalma nagyobb-e 1-nél, mert csak akkor foglalkozunk a legnagyobb közös osztó keresésével.
- A ciklusmag változatlan marad, a leállási feltétel:
(osztó <= szám1 && osztó <= szám2)
a do-while ciklus addig működik, míg a feltétel igaz, tehát az osztó egyik számot sem haladta túl.
A feladat megoldása:
// Legnagyobb közös osztó megoldása do-while ciklussal
private void button1_Click(object sender, EventArgs e)
{
int szám1, szám2, osztó, közös = 0;
if (textBox1.Text != "" && textBox2.Text != "")
{
szám1 = Int32.Parse(textBox1.Text);
szám2 = Int32.Parse(textBox2.Text);
osztó = 2;
közös = 0;
if (szám1 > 1 && szám2 > 1)
{
do
{
if (szám1 % osztó == 0 && szám2 % osztó == 0)
közös = osztó;
osztó++;
} while (osztó <= szám1 && osztó <= szám2);
}
if (közös == 0)
textBox3.Text =
"Nincs legnagyobb közös osztójuk.";
else
textBox3.Text = "" + közös;
}
}
// Ha az első adat változik, a korább eredmény törlődik
private void textBox1_TextChanged(object sender, EventArgs e)
{
textBox3.Text = "";
}
// Ha a második adat változik, a korább eredmény törlődik
private void textBox2_TextChanged(object sender, EventArgs e)
{
textBox3.Text = "";
}
A program futási eredményei: