Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<string>
- #include<algorithm>
- using namespace std;
- class I_Student {
- public:
- I_Student(const char *name="empty",int gu=0,int tg=2019,double avg=0):
- ime_prezime{nullptr},godina_upisa{gu},trenutna_godina{tg},prosjek{avg}{
- int size = strlen(name) + 1;
- ime_prezime = new char[size];
- strcpy_s(ime_prezime, size, name);
- }
- virtual ~I_Student() {
- delete[] ime_prezime; ime_prezime = nullptr;
- }
- virtual void set() = 0;
- virtual void print()const = 0;
- I_Student&operator=(const I_Student &that);
- protected:
- char *ime_prezime;
- int godina_upisa;
- int trenutna_godina;
- mutable double prosjek;
- };
- I_Student&I_Student::operator=(const I_Student &that) {
- if (this == &that) {
- return *this;
- }
- int size = strlen(that.ime_prezime) + 1;
- ime_prezime = new char[size];
- strcpy_s(ime_prezime, size, that.ime_prezime);
- godina_upisa = that.godina_upisa;
- trenutna_godina = that.trenutna_godina;
- prosjek = that.prosjek;
- return *this;
- }
- class Ispiti{
- public:
- Ispiti(int am=5,string exname="empty",int mark=0):
- amount{ am }, ime_ispita{ nullptr }, ocjena{ nullptr }{
- ime_ispita = new string[amount];
- for (int i = 0; i < amount; i++) {
- ime_ispita[i] = exname;
- }
- ocjena = new int[amount];
- for (int i = 0; i < amount; i++) {
- ocjena[i] = mark;
- }
- }
- Ispiti(const Ispiti &src):
- amount{ src.amount }, ime_ispita{ nullptr }, ocjena{ nullptr }{
- ime_ispita = new string[src.amount];
- copy(src.ime_ispita, src.ime_ispita + src.amount, ime_ispita);
- for (int i = 0; i < src.get_amount(); i++) {
- ocjena[i] = src.ocjena[i];
- }
- }
- ~Ispiti() {
- delete[] ime_ispita; ime_ispita = nullptr;
- delete[] ocjena; ocjena = nullptr;
- }
- void set_amount() {
- cout << "Unesite broj polaganih ispita: "; cin >> amount; cin.clear(); cin.ignore(10000, '\n');
- ime_ispita = new string[amount];
- }
- void set_ispit_info(const int &i) {
- cout << "Unesite ime " << i + 1 << ". ispita: "; getline(cin, ime_ispita[i]);
- cout << "Unesite ostvarenu ocjenu: "; cin >> ocjena[i]; cin.clear(); cin.ignore(10000, '\n');
- }
- int get_amount()const { return amount; }
- string get_ime_ispita(const int &i)const { return ime_ispita[i]; }
- int get_ocjena(const int &i)const { return ocjena[i]; }
- Ispiti &operator=(const Ispiti &that);
- private:
- int amount;
- string *ime_ispita;
- int *ocjena;
- };
- Ispiti&Ispiti::operator=(const Ispiti &that) {
- if (this == &that) {
- return *this;
- }
- amount = that.amount;
- ime_ispita = new string[amount];
- copy(that.ime_ispita, that.ime_ispita + that.amount, ime_ispita);
- ocjena = new int[amount];
- for (int i = 0; i < amount; i++) {
- ocjena[i] = that.ocjena[i];
- }
- return *this;
- }
- class Student : public I_Student {
- public:
- Student(const char *name = "empty", int gu = 0, int tg = 2019, double avg = 0, int am = 5, string exname = "empty", int mark = 0):
- I_Student{ name,gu,tg,avg }, ispiti{ am,exname,mark }{}
- ~Student() {}
- void set()override {
- cout << "Unesite svoje ime i prezime: "; cin.getline(ime_prezime, 50);
- cout << "Unesite smijer koji pohadate: "; getline(cin, smijer);
- cout << "Unesite godinu upisa: "; cin >> godina_upisa;
- cin.clear(); cin.ignore(10000, '\n');
- ispiti.set_amount();
- for (int i = 0; i < ispiti.get_amount(); i++) {
- ispiti.set_ispit_info(i);
- prosjek += ispiti.get_ocjena(i);
- }
- prosjek = prosjek / ispiti.get_amount();
- }
- string get_smijer()const { return smijer; }
- void print()const override {
- cout << ime_prezime << " , " << godina_upisa << endl;
- cout << "SMIJER: " << get_smijer() << endl;
- cout << "PODACI O POLAGANIM ISPITIMA\n";
- for (int i = 0; i < ispiti.get_amount(); i++) {
- cout<<i+1<<". "<<ispiti.get_ime_ispita(i) << " , " << ispiti.get_ocjena(i) << endl;
- }
- cout << "OSTVATENI PROSJEK: " << prosjek << endl;
- }
- private:
- string smijer;
- Ispiti ispiti;
- };
- int main() {
- Student s;
- s.set();
- Student s2;
- s2 = s;
- s2.print();
- system("pause");
- return 0;
- }
Add Comment
Please, Sign In to add comment