A tartalom eléréséhez kérjük, lépj be!
Kezdd itt
Szavas kereso
Szint kereso
Top 10 feltöltő

Top 10 feltöltő


Elemi programozási tételek V.: metszet, unió

VN:F [1.9.22_1171]
Értékeld
Beküldő: - Szólj hozzá
Szint: - Kedvencekhez
Megnézték:
4682
Nyomtasd
Dátum: 2007-12-20 Küldd tovább
  Letöltés

Elemi programozási tételek V.: metszet, unió

A metszetképzés tétele

Általános feladat: Rendezésünkre áll egy N és egy M elemű halmaz az A() és a B() vektorban ábrázolva. Készítsük el a két halmaz metszetét a C() vektorba!

Algoritmus:

Eljárás
CN:=0
Ciklus I=1-től N-ig
J:=1
Ciklus amíg J<=M és A(I)<>B(J)
J:=J+1
Ciklus vége
Ha J<=M akkor CN:=CN+1 : C(CN):=A(I)
Ciklus vége
Eljárás vége.

Unióképzés tétele

Általános feladat: Rendezésünkre áll egy N és egy M elemű halmaz az A() és a B() vektorban ábrázolva. Készítsük el a két halmaz egyesítését a C() vektorba!

Algoritmus:

Eljárás
Ciklus I=1-től N-ig
C(I):=A(I)
Ciklus vége
CN:=N
Ciklus J=1-től M-ig
I:=1
Ciklus amíg I<=N és A(I)<>B(J)
I:=I+1
Ciklus vége
Ha I>N akkor CN:=CN+1 : C(CN):=B(J)
Ciklus vége
Eljárás vége.


 

Facebook hozzászólok

Facebook hozzászólók

Hozzászólok

Ha szeretnél hozzászólni, lépj be!


Hozzászólások (3)

    ezek az algoritmusok hibatlanok ez 100 %.En nem teszteltem oket de ranezesre a programozasi ismereteim alapjan jok.

    A fenti (eredeti) algoritmusok jók – legalábbis “borz” által említett hibáik nem léteznek.

    Kedves borz!

    A ciklus addig ismétlődik, amíg különböznek az összevetett tömbelemek, vagyis akkor áll le, amikor egyezőt találtunk, vagy persze ha elfogyott a hasonlítani való. Ezek után egy elágazás dönti el, hogy az előbbi két ok közül melyik is az igaz, így ha elfogyott az elem, nem volt egyező (ezt használjuk az uniónál), ha viszont még akadna, akkor egyezés történt (ezt meg a metszetnél tesszük az eredménybe). Teljesen korrekt tehát az egyenlőtlenség a ciklusfeltételben, hiszen ezzel találjuk meg az egyező elemeket.

    Üdv!

    Szerintem egy apró, de lényeges hiba van a megadott algoritmusokban. Természetesen én ellenőriztem is.
    (Nem ellenőriztétek!?)

    1. Metszetképzés tétele
    Szerintem, és a próba alapján is a következő sorban a nem egyenlő helyett egyenlőre lenne szükség!

    Ciklus amíg J<=M és A(I)B(J)
    helyett:
    Ciklus amíg J<=M és A(I)=B(J)

    Hiszen a metszetben azokat az elemeket kell szerepeltetni, amelyek mindkét halmazban megtalálhatóak, azaz a megegyezőket.

    2. Únióképzés tétele
    Sajnos az únióképzés algoritmusa is hibás!!
    Abban is hasonló a hiba, tehát:

    Ciklus amíg I<=N és A(I)B(J)
    helyett:
    Ciklus amíg I<=N és A(I)=B(J)

    szükséges, mert most éppen az egyezőket kell kiejteni!

    Remélem segíthettem. Jó munkát!


Ezt olvastad már?
Környezeti paraméterek beállítása a FoxPro-ban

Környezeti paraméterek beállítása a FoxPro-ban SET BELL A SET BELL...

Close