Programozási ismeretek haladóknak-2/19B

11

Programozási ismeretek haladóknak-2/19B


Lista feltöltése, szétválogatás, összefuttatás listákkal
Listákat tartalmazó tömb
Állat (Nt12-3f1, 1. feladat)

Házi feladat
Oldd meg:
Kollekciók alkalmazása/Dinamikus tömb/Vitorlás, Javít, Kiszámolós

Megjegyzés
Ha megengedjük a halmaz használatát, akkor az Állat feladat c) kérdésére egyszerűbben is válaszolhatunk. Adjuk hozzá a kezdetben üres megoldáshalmazhoz a bejárat mellett elhelyezkedő állatok listáinak elemeit (azaz a szomszédjaik sorszámait). A megoldásból el kell hagynunk az esetlegesen felvett 0-t:
Dim Megoldás As New HashSet(Of Integer)
For Each Bejárati In Állatok(0) ' ciklus a bejárat mellett elhelyezkedő állatokra
    For Each Szomszéd In Állatok(Bejárati) ' az aktuális (a bejárat mellett elhelyezkedő) állat szomszédjai
        Megoldás.Add(Szomszéd)
    Next
Next
Megoldás.Remove(0) ' nem vezet hibához, ha nincs benne
If Megoldás.Count = 0 Then
    WriteLine(-1)
Else
    a Megoldás halmaz elemeinek kiírása
    WriteLine()
End If

Ha a bejáratnál elhelyezkedő állatokat ki akarjuk hagyni a megoldásból, akkor a kiírás előtt vonjuk ki a halmazból az Állatok(0) lista elemeit:
Megoldás.ExceptWith(Állatok(0)) ' halmazművelet!

Ha ismerjük a listákra vonatkozó unió műveletét (lásd a következő videót), akkor még egyszerűbb a megoldás. Határozzuk meg a bejárat mellett elhelyezkedő állatok szomszédjainak az unióját! Az unióképzés a listáknál is elhagyja az ismétlődő elemeket.
Dim Megoldás As New List(Of Integer) ' kezdetben üres lista
For Each Bejárati In Állatok(0) ' ciklus a bejárat mellett elhelyezkedő állatokra
    Megoldás = Megoldás.Union(Állatok(Bejárati)).ToList
Next
Megoldás.Remove(0)
If Megoldás.Count = 0 Then
    WriteLine(-1)
Else
    a Megoldás halmaz elemeinek kiírása
    WriteLine()
End If

Illetve a bejártanál elhelyezkedő állatok elhagyása a kiírás előtt:
Megoldás = Megoldás.Except(Állatok(0)).ToList

Készítsd el így is a programokat! Ellenőrizd a megoldásaid a versenyfeladatok webhelyéről letölthető tesztesetekkel!

több kevesebb


Programozási ismeretek, Programozási ismeretek haladóknak - 2.

Informatika

VisualBasic,VisualStudio,programozás,VB,informatika,érettségi,dinamikustömb,lista,összefuttatás,szétválogatás

Juhász Tibor (előadó)

27:51

2019. január 20.

Zalaegerszegi Zrínyi Miklós Gimnázium Sulinet Multimédia

2019. január 20.

11
<iframe width="480" height="385" src="//dev.videotorium.hu/hu/embed/29395" frameborder="0" allowfullscreen="allowfullscreen"></iframe>