Repository navigation
Releases
v2.0.1
v2.0
- Realizuoti ir demonstruojami unit test testai (Catch - https://github.com/catchorg/Catch2/releases/tag/v3.6.0?fbclid=IwZXh0bgNhZW0CMTEAAR22tR50_uOfmSpIaDAg-vh1J6x_Vx8HP37CkzBrw8thoaoX5rqA3GqSxuI_aem_AQ2dqup3Bzkw-VMJZk7ygzB1di_IcHDSQ3fv-AiWsivb2Z2UqpWUYVYC1sEDRIGEkJk_zpuSw3frjTqTHAp6pkB1)
- Klasę aprašanti dokumentacija HTML/TEX formatais - https://www.doxygen.nl/manual/index.html
v1.5.1
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();}
v2.0
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
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();}
v1.2
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();
}


