Új hozzászólás Aktív témák

  • Karma

    félisten

    válasz zsambek #5503 üzenetére

    No én is utolértem magam közben, válaszolok erre is...

    Egyetértek, a feladatsor határozottan nehezebb mint a korábbi. Bár az oktatás is követné ezt színvonalban. Érződik, hogy próbálják a Pascalt leépíteni (ez önmagában nem baj), csak ennek eszközéül azt választották, hogy az ezt választó diákokat jól megszivatják...

    Említettem kicsit korábban, hogy a hetedik és a hatodik feladat ugyanaz, és jobban jársz, ha ebben a sorrendben próbálod őket megoldani. A hetedik tényleg "baromi" nehéz, sokkal nagyobb ráfordítást igényel, mint a korábbi évek zárófeladatai.

    Mondjuk annyi különbség van, hogy itt nem kell neked azon gondolkodnod, hogy "mit is kéne kihoznom a meglévő adatokból hogy válaszolhassak a kérdésre?", mert kerek perec leírták, hogy mi a cél: olyan szerkezetet kell felépítened, mint amit a "rendezett" oszlopban látsz. A kérdés csak a "hogyan?".

    Ez most az a szituáció, hogy egy vagy két darab sima, egydimenziós lista nem elég. Ez egy "fésűs lista" is lehetne (ahogy a közoktatás csúfolja), de szerintem célravezetőbb, ha kapásból Dictionaryt építesz belőle.

    Méghozzá egy Dictionary<string, List<string>>-et, amivel a kulcs az ABC-rendezett szó, és a hozzá tartozó listában vannak a konkrét szavak a szótárból.

    A stratégia a következő:

    0) Csinálsz egy ilyen Dictionary objektumot (továbbiakban: dict)
    1) Ciklusban, egyszer végigmész a szótáron. Minden elemére:
    1/a) veszed a szó ABC-rendezett alakját (továbbiakban: key)
    1/b) a dict.ContainsKey(key) metódussal megnézed, hogy az adott kulccsal találkoztál-e már
    - ha igen, akkor dict[key]-jel megszerzed a hozzá tartozó listát, és annak az Add metódusával eldugod a szót
    - ha viszont nem, akkor létrehozol egy új List<string>-et, belerakod a szót, és a listát elteszed a dict-ben a key-hez. Pl.: dict[key] = list;
    2) Ha a végére értél, nincs más dolgod, mint rendezni a dict.Keys-t a kulcs hossza alapján, és e szerint kiírni.

    A hatodik feladat pedig annyi, hogy veszed a maximális hosszú kulcsokat, és sorban kiírod a képernyőre a hozzá tartozó szavakat. Ha a dict megvan, ez pofonegyszerű :)

    Érzem, hogy a 2) lépés elég nagy logikai ugrás, de azért remélem a gondolatmenet átjön. Ha nem, akkor szólj feltétlen.

    És egyébként LINQ-kel az egész egy sor.

Új hozzászólás Aktív témák

Hirdetés