Középiskolai Matematikai és Fizikai Lapok
Informatika rovattal
Kiadja a MATFUND Alapítvány
Már regisztráltál?
Új vendég vagy?

Az I. 123. feladat (2006. január)

I. 123. Készítsünk OpenOffice vagy Excel táblázatot, ami legfeljebb hatjegyű egész számokon bemutatja az euklideszi algoritmus működését. A felhasználó az első sor első két mezőjébe írhatja a két pozitív egész számot, amelyek legnagyobb közös osztóját szeretné kiszámítani.

Ezután minden sorba az előző sorbeli két szám közül a kisebbik kerül, illetve a nagyobbik maradéka a kisebbikkel osztva. A sorokat addig folytassuk, amíg meg nem jelenik a számok között a 0. A másik szám a legnagyobb közös osztó, ezt másoljuk az első sor harmadik cellájába.

Példa:

12 21 3
12 9
9 3
3 0

Beküldendő a táblázat (i123.sxc, i123.xls).

(10 pont)

A beküldési határidő 2006. február 15-én LEJÁRT.


Megoldás. A feladat megoldásában három lényegében különböző típusú cellát kell kitöltenünk: az első oszlop celláit, a második oszlop celláit, illetve a harmadik oszlop első celláját, ahova az eredményt várjuk.

Az első oszlopba mindig az előző sorban szereplő két érték közül szeretnénk a kisebbet írni. Ez a második sort leszámítva mindig a B oszlopban lesz, hiszen oda a maradékokat írjuk, ami nyílván kisebb mint az A oszlopban lévő osztó. (Az első sor az input, ahol nincs kikötve hogy az első érték a nagyobb)

Így az első oszlop második sorába a következő képletet írjuk:

=MIN(A1;B1)

A további sorokba pedig: =HA(B2>0;B2;"") értelemszerűen a sor száma növekszik. A fenti képlettel azt is kiküszöböltük, hogy a végén ne lássunk 0-ákat.

A második oszlopba a nagyobbik maradéka kerül a kisebbikkel osztva. Itt is külön kell vennünk a második sort, ahol még nem tudjuk melyik cellában van a nagyobb szám, de onnantól kezdve biztosak lehetünk, hogy az A oszlopbeli érték a nagyobb.

Tehát a második oszlop második sora így fog kinézni:

=HA(A1<B1;MARADÉK(B1;A1);MARADÉK(A1;B1))

A további sorokba pedig (figyelve arra, hogy a felesleges nullákat ne jelenítsük meg):

=HA(ÉS(B2>0;B2<>"");MARADÉK(A2;B2);"")

Ezek után már csak a C1 cella kitöltése a feladatunk, amit legegyszerűbben úgy kapunk meg, ha megnézzük melyik a legkisebb elem az első oszlopban. =MIN(A:A)

A letölthető megoldás Kovács Péter (11.évf, Szolnok, Verseghy Ferenc Gimnázium) dolgozata alapján készült.

Schmidt Zoltán


Statisztika:

21 dolgozat érkezett.
10 pontot kapott:Balambér Dávid, Bóra Eszter, Fábián András, Gál Tibor, Gilián Zoltán, Gombos Gergely, Gulyás 990 Péter, Györök Péter, Gyüre Balázs, Kiss Dániel Miklós, Kovács 129 Péter, Ozsvárt László, Ökrös Tamás, Pápai Dávid, Szikszay László, Szoldatics András, Véges Márton, Vincze János.
8 pontot kapott:1 versenyző.
3 pontot kapott:1 versenyző.
0 pontot kapott:1 versenyző.

A KöMaL 2006. januári informatika feladatai