Informatika1-2008/Gyakorlat5

A MathWikiből
A lap korábbi változatát látod, amilyen Tothagi (vitalap | szerkesztései) 2008. október 8., 00:01-kor történt szerkesztése után volt.

5. gyakorlat (Maple)

  • Funkcionális programozás
    • egyszerű példák a map, select használatára: mw
  • Algoritmusok:
    • legnagyobb közös osztó meghatározása euklideszi algoritmus segítségével: mw
    • buborék rendezés lista rendezésére: mw


Házi feladat:

1. A következő feladatot oldjuk meg kétféleképpen. Mindkettő procedúra legyen, de először feltételes- és ciklusutasításokkal, másodszor a funkcionális programozás elvét használva (a tanult listakezelő parancsok egymásba ágyazásával) oldjuk meg a feladatot. A cél: a készített procedúra két azonos elemszámú listáról döntse el, hogy hány olyan hely van, ahol az első listában kisebb szám áll, mint a másodikban. Pl. a [2,5,1], [5,3,7] hívásra azt írja ki, hogy 2, míg a [2,3], [1] hívásra hibaüzenetet kapjunk.

2. Összefésülés és összefésüléses rendezés: Az összefésülés algoritmus bemenete két növően rendezett (!) lista, melyek nem feltétlenül azonos hosszúak. A várt kimenet egy olyan lista, mely tartalmazza a kapott két lista összes elemét (ha vannak azonosak, akkor azokat többször is), továbbá rendezett lista. Tehát a kimeneti listába össze van fésülve a két bemeneti lista tartalma. A módszer a következő. Összehasonlítjuk a listák első elemeit, kiválasztjuk a kisebbet, ez lesz a végső lista legkisebb, azaz legelső eleme. Ezután amelyik listában ez az elem volt, annak a második elemét vizsgáljuk a másik lista első elemével. Ismét kiválasztjuk a kisebbet, az adott listában tovább lépünk, a másikban nem. Ezt addig ismételjük, míg valamelyik lista el nem fogy. Ekkor a másik listából maradt elemeket a kimeneti lista végére másoljuk.

3. Diagram: mw

Személyes eszközök