Hirdetés

Keresés

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

  • modder
    aktív tag

    Sziasztok.

    Kezdő programozó vagyok.

    Szeretném segítségeteket kérni ebben a feladatban.

    Összeállítottunk egy zenelejátszási listát, amelyben N zeneszám van. A listában a lejátszás sorrendjében szerepelnek az előadók neve (egy szó), a dal címe (egy szó) és a hosszúsága másodpercekben. (Ugyanaz az előadó, ugyanazzal a dallal csak egyszer szerepel.)
    a) Szerepel-e egy adott E előadó a listán?
    b) Igaz-e, hogy a lejátszási listán egyre rövidebb számok kerülnek előadásra?
    c) Ha a lejátszási listát végtelenítjük, melyik dalt halljuk kezdéshez képest K másodperc múlva?
    d) Az azonos című dalok közül melyik a leghosszabb?

    Az A-t sikerült megoldanom. (Van már saját Listám ami következő oszlopokat tartalmazza:
    Másodperc | Előadó | Dal) Az első feladatot sikerült tömb nélkül megoldanom. De a többihez kelleni fog, és nem tanultuk hogyan kell több adatsorból álló tömböt tölteni fájlból.

    Előre is bocsánat ha ez nem ide tartozik, de egyedül nem hiszem, hogy megtudnám őket oldani.

    egyszerűbbé teheted az életed, ha csinálsz egy típust a számoknak
    class Szam {
    String eloado;
    String cim;
    int hossz; //masodperc

    public Szam(String eloado, String cim, int hossz) {
    // ertekadas a tagvaltozoknak
    }
    }

    Felteszem, hogy sikerült beolvasnod a sorokat. Biztonság kedvéért http://stackoverflow.com/questions/5868369/how-to-read-a-large-text-file-line-by-line-using-java Ha el akarod őket menteni a memóriában, akkor pl. (pszeudokód)

    List<Szam> szamok = new ArrayList<Szam>();

    while ((line = br.readLine()) != null) {
    Szam aktualisSzam = parse(sor);
    szamok.add(aktualisSzam);
    }

    De elárulom neked, hogy ez egyik feladathoz sem kell.
    B)
    Szam elozoSzam = br.readLine(); // elso sor
    while ((line = br.readLine()) != null) { // tobbi sor
    Szam aktualisSzam = parse(sor);
    if ( elozoSzam.hossz < aktualisSzam.hossz ) {
    // nem igaz
    }
    elozoSzam = aktualisSzam;
    }

    C) hasonlóan, de egy int-ben összegzed a számok hosszát (ha a sorok végére értél, elölről kezded, tehát két ciklust kell egymásba ágyaznod). A ciklusból kilépési feltétel az, a osszHossz >= K. Akkor az abban a ciklusban beolvasott szám lesz a keresett.

    D) Itt már kell egy Map
    Map<String,Szam> perCim = new HashMap<String,Szam>();

    Végigmész a sorokon, és megnézed, hogy az aktuális szám címével van-e szám a mapban. perCim.get(cim) != null. Ha nincs, beteszed.
    Ha van, akkor megnézed, hogy az aktuális hosszabb-e, mint a bentlévő, és a feltételnek megfelelően cseréled.

    Ja, és köszönet, nagyobb nyelvtani hibák nélkül, tagolással, és az írásjelek megfelelő használatával tetted fel a kérdést. Ritkaságszámban megy az ilyen :D

  • WonderCSabo
    félisten

    Sziasztok.

    Kezdő programozó vagyok.

    Szeretném segítségeteket kérni ebben a feladatban.

    Összeállítottunk egy zenelejátszási listát, amelyben N zeneszám van. A listában a lejátszás sorrendjében szerepelnek az előadók neve (egy szó), a dal címe (egy szó) és a hosszúsága másodpercekben. (Ugyanaz az előadó, ugyanazzal a dallal csak egyszer szerepel.)
    a) Szerepel-e egy adott E előadó a listán?
    b) Igaz-e, hogy a lejátszási listán egyre rövidebb számok kerülnek előadásra?
    c) Ha a lejátszási listát végtelenítjük, melyik dalt halljuk kezdéshez képest K másodperc múlva?
    d) Az azonos című dalok közül melyik a leghosszabb?

    Az A-t sikerült megoldanom. (Van már saját Listám ami következő oszlopokat tartalmazza:
    Másodperc | Előadó | Dal) Az első feladatot sikerült tömb nélkül megoldanom. De a többihez kelleni fog, és nem tanultuk hogyan kell több adatsorból álló tömböt tölteni fájlból.

    Előre is bocsánat ha ez nem ide tartozik, de egyedül nem hiszem, hogy megtudnám őket oldani.

    Először mutasd meg a kódot, meddig jutottál el, miből tudunk kiindulni. Vagy ide illeszd be programkód formázási opcióval, vagy ha hosszabb, rakd fel pastebin-re.

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