Skip to content

Releases

v2.0.1

v2.0.1 Pre-release
Pre-release

Choose a tag to compare

@karwekarwe karwekarwe released this 20 May 18:16
73d3c62

v1.5.1

v1.5.1 Pre-release
Pre-release

Choose a tag to compare

@karwekarwe karwekarwe released this 20 May 18:13

v1.5

Klasė Zmogus:

class Zmogus {

    public:
    std::string vardas_;
    std::string pavarde_;

    Zmogus() : vardas_(""), pavarde_("") {}
    Zmogus(const std::string& vardas, const std::string& pavarde)
    : vardas_(vardas), pavarde_(pavarde) {}

};

Klasė Stud:

class Stud : public Zmogus{
private:
  //  string vardas_, pavarde_;
    int egzaminas_, ndcount_;
    double gal_;
    vector<int> namuDarbai_;
public:
    Stud() : egzaminas_(0), gal_(0), ndcount_(0) { }  // default konstruktorius
    Stud(vector <int>& namuDarbai, string& vardas, string& pavarde, int egzaminas, double gal, int ndcount)
        : namuDarbai_(namuDarbai), Zmogus(vardas, pavarde), egzaminas_(egzaminas), gal_(gal), ndcount_(ndcount) {}

    ~Stud() {namuDarbai_.clear(); vardas_.clear(), pavarde_.clear();}

Copy konstruktorius:

 // Copy constructor
    Stud(const Stud& other)
        : Zmogus(other.vardas_, other.pavarde_),  egzaminas_(other.egzaminas_),  gal_(other.gal_),  namuDarbai_(other.namuDarbai_), ndcount_(other.ndcount_) {}

Move kostruktorius:

 // Move constructor
    Stud(Stud&& other) noexcept 
        : Zmogus(move(other.vardas_), move(other.pavarde_)), egzaminas_(other.egzaminas_), gal_(other.gal_), namuDarbai_(move(other.namuDarbai_)), ndcount_(move(other.ndcount_)){
        other.vardas_.clear(); other.pavarde_.clear(); other.ndcount_ = 0;  other.egzaminas_ = 0; other.gal_ = 0; other.namuDarbai_.clear();}

Abstraktumas - negalime sukurti jos objektų:
image
image

v2.0

v2.0 Pre-release
Pre-release

Choose a tag to compare

@karwekarwe karwekarwe released this 03 May 18:19
17e1550

v2.0

##Paleisties proceso instrukcija:
Visų pirma, iš https://github.com/karwekarwe/OOP2 reikia klonuoti repozitoriją savo darbo aplinkoje naudojant 'git clone'.
Atsidarius naują terminalą, nueikite į klonuotos repozitorijos aplnką.
Kompiliuokite programą naudojant "Makefile" failą, kuris jau bus klonuotoje repozitorijose - terminale įrašykite "make".
Pasirinkite su kokia programos versija norite dirbti.
Programos veikimas:
Paleidus programą, vartotojui pateikiami pasirinkimai:
Duomenų įvestis ranka ar nuskaitymas iš failo. Toliau seka šie pasirinkimai: Ranka:

+Pilna įvestis ranka / pažymių generavimas / pažymių ir vardų generavimas / baigti darbą.
+Skaičiavimo metodas: vidurkis / mediana

+Iš failo:
+Generuoti naują ar naudoti esamą failą
+Kokio dydžio failą generuoti / naudoti? (1. 1000 2. 10000 3. 100000 4. 1000000 5. 10000000.)
+Skaičiavimo metodas: vidurkis / mediana
+Rikiavimo metodas: vardas / pavardė / galutinis
+Išvestis į failą ar ekraną.

##dokumentazija
+testai
+dokumentacija HTML/TEX formatais.

v1.5

v1.5 Pre-release
Pre-release

Choose a tag to compare

@karwekarwe karwekarwe released this 03 May 17:48
23643a7

v1.5

Klasė Zmogus:

class Zmogus {
    protected:

    string vardas_;
    string pavarde_;

    Zmogus() = default;
    Zmogus(const string& vardas, const string& pavarde)
    : vardas_(vardas), pavarde_(pavarde) {}
   

 public:
    virtual ~Zmogus() {}
    virtual string getVardas() const {return vardas_;}
    virtual string getPavarde() const {return pavarde_;}
    virtual void setVardas(const string& vardas) {vardas_ = vardas;}
    virtual void setPavarde(const string& pavarde) {pavarde_ = pavarde;}

};

class Stud : public Zmogus {
private:
    int egzaminas_, ndcount_;
    double gal_;
    vector<int> namuDarbai_;
public:
    Stud() : egzaminas_(0), gal_(0), ndcount_(0) { }  // default konstruktorius
   Stud(const string& vardas, const string& pavarde) : Zmogus(vardas, pavarde), egzaminas_(0), ndcount_(0), gal_(0.0){}

    ~Stud() {namuDarbai_.clear(); vardas_.clear(), pavarde_.clear();}

Abstraktumas - negalime sukurti jos objektų:
image
image

v1.2

v1.2 Pre-release
Pre-release

Choose a tag to compare

@karwekarwe karwekarwe released this 02 May 19:24

v1.2

Rule of five:

  • Destructor
    ~Stud() {}
  • Copy constructor
   Stud(const Stud& other)
        : vardas_(other.vardas_), pavarde_(other.pavarde_),  egzaminas_(other.egzaminas_),  gal_(other.gal_),  namuDarbai_(other.namuDarbai_), ndcount_(other.ndcount_) {}
  • Copy assignment operator
    Stud& operator=(const Stud& other) {// copy assignment
        if (this != &other) {
            vardas_ = other.vardas_;
            pavarde_ = other.pavarde_;
            egzaminas_ = other.egzaminas_;
            gal_ = other.gal_;
            namuDarbai_ = other.namuDarbai_;
            ndcount_ = other.ndcount_;    
        }
        return *this;
    }
  • Move constructor
    Stud(Stud&& other) noexcept // move constructor
        : vardas_(move(other.vardas_)), pavarde_(move(other.pavarde_)), egzaminas_(other.egzaminas_), gal_(other.gal_), namuDarbai_(move(other.namuDarbai_)), ndcount_(move(other.ndcount_)){
        other.ndcount_ = 0;}
  • Move assignment operator
    Stud(Stud&& other) noexcept // move constructor
        : vardas_(move(other.vardas_)), pavarde_(move(other.pavarde_)), egzaminas_(other.egzaminas_), gal_(other.gal_), namuDarbai_(move(other.namuDarbai_)), ndcount_(move(other.ndcount_)){
        other.ndcount_ = 0;}

#Rule of five testavimas:

  void testai(){

        // constructor
    vector<int> nd = {1, 2, 3};
    std::string vardas = "John";
    std::string pavarde = "Doe";
    Stud s2(nd, vardas, pavarde, 0, 0.0, 3);
    assert(s2.getVardas() == "John");
    assert(s2.getPavarde() == "Doe");
    assert(s2.getNamuDarbai() == nd);
    assert(s2.getEgzaminas() == 0);
    assert(s2.getGal() == 0.0);
    assert(s2.getNdcount() == 3);

        // copy contruct
    Stud s3 = s2;
    assert(s3.getVardas() == "John");
    assert(s3.getPavarde() == "Doe");
    assert(s3.getNamuDarbai() == nd);
    assert(s3.getEgzaminas() == 0);
    assert(s3.getGal() == 0.0);
    assert(s3.getNdcount() == 3);


        // moce constr

    Stud s4 = std::move(s3);
    assert(s4.getVardas() == "John");
    assert(s4.getPavarde() == "Doe");
    assert(s4.getNamuDarbai() == nd);
    assert(s4.getEgzaminas() == 0);
    assert(s4.getGal() == 0.0);
    assert(s4.getNdcount() == 3);

    assert(s3.getVardas().empty());
    assert(s3.getPavarde().empty());
    assert(s3.getNamuDarbai().empty());
    assert(s3.getEgzaminas() == 0);
    assert(s3.getGal() == 0.0);
    assert(s3.getNdcount() == 0);

    cout << "Testai sekmingi" <<endl;
    }

Įvesties / Išvesties opratoriai:

  • Input operator:
friend std::istream& operator>>(std::istream& is, Stud& stud) {
    is >> stud.vardas_ >> stud.pavarde_;
    stud.namuDarbai_.clear(); 
    int balas;
    for (int i = 0; i < stud.getNdcount(); ++i) {
        is >> balas;
        stud.namuDarbai_.push_back(balas);
    }
    
    is >> stud.egzaminas_;
    return is;
}
  • Output operator:
friend std::ostream& operator<<(std::ostream& os, const Stud& stud) {
    os << stud.vardas_ << setw(20) << stud.pavarde_ << setw(20) << stud.gal_ << setw(20) << "\n";
    return os;
}

  • Input operator panaudojimas isFailo.cpp faile:
      while (getline(failas, line)) {
            lines.push_back(line);

            if (lines.size() >= dyd) { 
              
                for (const auto& bufferedLine : lines) {
                           
                    stringstream stringBuferis(bufferedLine);
                    naujasS.setNdcount(baluCount);
                    stringBuferis >> naujasS; // input operator panaudojimas

                    studentai.push_back(naujasS);
                }

                lines.clear();
            }
        }
  • Output operator panaudimas papFunkcijos.cpp faile:
void isvedimas_i_ekrana(const vector<Stud>& luzeriukai, const vector<Stud>& studentai) {
        cout << "Luzeriukai:" << endl;
    for (const auto& studentas : luzeriukai) {
            cout << studentas; //output operator
    }
    cout << "Intelektualai:" << endl;
    for (const auto& studentas : studentai) {
            cout << studentas; //output operator
    }
}


void isvedimas_i_faila(const vector<Stud>& luzeriukai, const vector<Stud>& studentai, const string& failPav) {
     ofstream outputFileUnder("luzeriukai " + failPav);
    if (!outputFileUnder.is_open()) {
        cerr << "Nepavyko sukurti naujo failo. outputFileUnder" << endl;
        return;
    }
    ofstream outputFileOver("intelektualai " + failPav);
    if (!outputFileOver.is_open()) {
        cerr << "Nepavyko sukurti naujo failo. outputFileOver" << endl;
        return;
    }
        for (const auto& studentas : luzeriukai){
            outputFileUnder << studentas; //output operator
        }   
        for (const auto& studentas : studentai){
            outputFileOver << studentas; //output operator
        } 

        outputFileUnder.close();
        outputFileOver.close();
    }

v1.1

v1.1 Pre-release
Pre-release

Choose a tag to compare

@karwekarwe karwekarwe released this 25 Apr 14:02
470c0ab

#v1.1

Failų su pasirinktu dydžiu duomenų generavimas, skaitymas, rūšiavimas.

Class
struct ir class palyginimo su skirtingais flag'ais rezultatai:
image