Keresés

Hirdetés

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

  • Trub

    tag

    válasz Badb0y #1326 üzenetére

    Nálam így már lefut:

    /*
    C++ nyelven szeretnénk modellt készíteni a következő leírás alapján. Egy óvodás hátizsákjába sok (max. 100) játék fér. Minden játéknak van népszerűségi indexe (egész szám, hány óvodás irigykedik a játék tulajdonosára), és minden játékot meg lehet nyomni (push()), amire minden játék máshogy reagál. Játékból több fajta is van, és a játékfajták száma később csak nőni fog. Játékok jelenleg az alábbiak:
    • Macintosh-MACi (index: 15, verziószám: egész). Ha megnyomják, és a verziószám legalább 10, akkor kiírja, hogy „Én is unix vagyok”.
    • Linux-pingvin (kezdő index: 500, kernel_verzió: sztring), ha megnyomják, kiírja a kernel verziószámát, és ha az index kisebb, mint 97, akkor 4-gyel megnöveli. Ha megsemmisül, kiírja, hogy „UNIX4EVER”.
    • Microsoft-majom (kezdő index: 53, vagyon: long double). ha megnyomják, kiírja, hogy „I! LOVE! THIS! COMPANY!!!”.
    A rendszerben a következő funkciókat kell megvalósítani:
    • hátizsák átlagos népszerűségi indexének lekérése (getAvgPopularity())
    • hátizsákba új játék behelyezése (addToy())
    • játék népszerűségének lekérdezése (getPopularity())
    • minden játékhoz a megnyomás (push())
    • pingvin destruktora.
    Feladatok:
    • Tervezzen meg egy olyan OO modellt, mely a fenti követelményeket kielégíti! Rajzolja fel a modell osztálydiagramját! (0,5p)
    • Deklarálja a Hátizsák, Játék, Maci, Pingvin osztályokat és az elvárt funkciók ellátásához szükséges tagfüggvényeket! Használja a dőlt betűs neveket! (2)
    • Implementálja a fenti osztályokat és azok tagfüggvényeit! Az osztályokat olyan módon készítse el, hogy újabb játék-típus felvételekor a már meglevő kódot ne kelljen módosítani! (1,5 pont)
    • Írjon egy egyszerű programrészletet, ami készít egy hátizsákot, és elhelyez benne egy pingvint (kernel verzió: 2.6.11) és egy majmot (vagyona $3.5e274). Írassa ki a hátizsák átlagos népszerűségét, majd nyomja meg a pingvint, és így is írja ki a hátizsák népszerűségét! (1 pont)

    */

    #include <stdio.h>
    #include <iostream>
    #include <string>
    using namespace std;

    class Jatek {
    protected:
    int index;
    public:
    Jatek(int i) : index(i) {}
    int getPopularity() {
    return index;
    }
    virtual void push() = 0;
    virtual ~Jatek() {}
    };
    class Maci : public Jatek {
    int verzio;
    public:
    Maci(int v) : Jatek(14), verzio(v) {}
    void push() {
    if (verzio >= 10)
    cout << "En is unix vagyok!"
    << endl;
    }
    };
    class Pingvin : public Jatek {
    string ker_ver;
    public:
    Pingvin(string k) : Jatek(43),
    ker_ver(k) {}
    void push() {
    cout << ker_ver << endl;
    if (index < 97) index += 4;
    }
    ~Pingvin() {
    cout << "UNIX4EVER" << endl;
    }
    };

    class Hatizsak {
    Jatek* tar[100];
    int n;
    public:
    Hatizsak() : n(0) {}
    ~Hatizsak() {
    for (int i = 0; i < n; i++) {
    delete tar[i];// ha adoptal
    }
    }
    void addToy(Jatek* j) {
    if (n < 100) {
    tar[n] = j;
    n++;
    } else {
    delete j; // ha adoptal
    }
    }
    int getAvgPopularity() {
    int sum = 0;
    for (int i = 0; i < n; i++) {
    sum +=
    tar[i]->getPopularity();
    }
    return sum/n;
    }
    };
    // a feladat szerint nem kell
    class Majom : public Jatek {
    long double vagyon;
    public:
    Majom(long double ld) :
    Jatek(43), vagyon(ld) {}
    void push() {
    cout << "I! LOVE! THIS! COMPANY!!!"
    << endl;
    }
    };

    int main() {
    Hatizsak h;
    Pingvin* p = new Pingvin("2.6.11");
    Majom* m = new Majom(3.5e274);
    h.addToy(p);
    h.addToy(m);
    cout << h.getAvgPopularity() << endl;
    p->push();
    cout << h.getAvgPopularity() << endl;
    return 0;
    }

  • Trub

    tag

    válasz Badb0y #1328 üzenetére

    #include <iostream>
    #include <string>
    using namespace std;

    Nálam csak ez a 3 sor változott. Nemtudom miért raktam be az egészet :F sry

    Én visual studio 2008-ban fordítom.

  • doc

    nagyúr

    válasz Badb0y #1437 üzenetére

    ezt milyen megfontolasbol irtad a 'C' topicba? az osztaly ismeretlen fogalom a C-ben
    ezzel inkabb a programozas totyikba menj, meg nem art leirni hogy milyen nyelvrol van szo, plusz az altalad eddig megalkotott kodot berakni, azt ne vard hogy valaki csak ugy megirja helyetted a hazidat

  • Jester01

    veterán

    válasz Badb0y #1437 üzenetére

    Az is nagy marha aki képes volt ilyen feladatkiírásra "AddMarha" ... utálom a vegyes magyar-angol neveket. :U

    MOD: Badb0y, milyen laptopot adsz érte cserébe? :DDD

    [ Szerkesztve ]

    Jester

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