Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <iostream>
- #include <string>
- #include <ctime>
- using namespace std;
- //note example print name on console: cout << listNameGetre[WESTERN] << endl;
- struct TFakultet
- {
- string Name;
- string Section;
- int numberOfStudents;
- };
- struct TRektor
- {
- string nameRektor;
- string secondNameRector;
- string scienstDegree;
- };
- ostream& operator <<(ostream& out, const TFakultet& fakultet);
- istream& operator >>(istream& in, TFakultet& fakultet);
- ostream& operator <<(ostream& out, const TRektor& rektor);
- istream& operator >>(istream& in, TRektor& rektor);
- class TUniver
- {
- private:
- string nameUniversity;
- string street;
- TRektor* rektor;
- TFakultet* fakultets; //it is dynamic array
- int n; //number students
- int ageaudience;
- int House;
- public:
- TUniver();
- TUniver(const TUniver& obj);
- TUniver(const string& nameUniversity_, const string& street_, int ageaudience_, int House_);
- ~TUniver();
- const string& getnameUniversity()const;
- const string& getstreet()const;
- int getAgeaudience()const;
- int getHouse()const;
- int getNumberFakultets()const;
- void outputFakultets(ostream& out)const;
- void outputRektor(ostream& out)const;
- void setnameUniversity(const string& nameUniversity_);
- void setstreet(const string& street_);
- void setAgeaudience(int ageaudience_);
- void setHouse(int House_);
- int calcAverageAgeFakultet()const;
- bool isExistdFakultet(string Name_, string Section_)const;
- bool addFakultet(string Name_, string Section_, int numberOfStudents_);
- bool addFakultet(const TFakultet& fakultet);
- bool deleteFakultet(string Name_, string Section_);
- bool isExistdRektor(string nameRektor_, string secondNameRector_)const;
- bool addRektor(string nameRektor_, string secondNameRector_, string scienstDegree_);
- bool addRektor(const TRektor& rektor);
- bool deleteRektor(string nameRektor_, string secondNameRector_, string scienstDegree_);
- TFakultet* findOldestFakultet()const;
- int calcAverageFakultetsTime()const;
- TUniver& operator =(const TUniver& obj);
- TUniver& operator +=(const TFakultet& fakultet);
- TUniver& operator +=(const TRektor& rektor);
- bool operator <(const TUniver& arg2) const;
- operator int()const;
- };
- ostream& operator <<(ostream& out, const TUniver& fakultet);
- istream& operator >>(istream& in, TUniver& fakultet);
- ostream& operator <<(ostream& out, const TUniver& rektor);
- istream& operator >>(istream& in, TUniver& rektor);
- int main()
- {
- time_t sysdate = time(NULL);
- cout << "Current Datetime:" << asctime(localtime(&sysdate)) << endl;
- TUniver chobit;
- cin >> chobit;
- cout << "Please add new fakultet:" << endl;
- TFakultet newFakultet;
- cin >> newFakultet;
- chobit += newFakultet;
- TRektor newRektor;
- cout << "Prepared info about film:\n";
- cout << chobit;
- cout << endl << endl;
- cout << "Average Fakultets Time: " << chobit.calcAverageFakultetsTime() << endl;
- cout << "Average age fakultet: " << chobit.calcAverageAgeFakultet() << endl;
- TFakultet* odestFakultet = chobit.findOldestFakultet();
- if (odestFakultet) cout << "Oldestfakultet is :\n" << *odestFakultet << endl;
- string Name;
- string Section;
- cout << "Please input name fakultet which need delete:\n";
- cout << "\tinput name: ";
- getline(cin, Name);
- cout << "\tinput second name: ";
- getline(cin, Section);
- bool result = chobit.deleteFakultet(Name, Section);
- if (!result) cout << "Warning: Fakultet not found " << endl;
- cout << "Final info about film:\n";
- cout << chobit << endl;
- system("pause");
- return 0;
- }
- ostream& operator <<(ostream& out, const TFakultet& fakultet)
- {
- out << "\t" << fakultet.Name
- << "\t" << fakultet.Section
- << "\t" << fakultet.numberOfStudents;
- return out;
- }
- istream& operator >>(istream& in, TFakultet& fakultet)
- {
- cout << "Please input name: ";
- getline(in, fakultet.Name);
- cout << "Please input section: ";
- getline(in, fakultet.Section);
- cout << "Please input number of students: ";
- string strTmp;
- getline(in, strTmp);
- fakultet.numberOfStudents = atoi(strTmp.c_str());
- return in;
- }
- ostream& operator <<(ostream& out, const TRektor& rektor)
- {
- out << "\t" << rektor.nameRektor
- << "\t" << rektor.secondNameRector
- << "\t" << rektor.scienstDegree;
- return out;
- }
- istream& operator >>(istream& in, TRektor& rektor)
- {
- cout << "Please input name: ";
- getline(in, rektor.nameRektor);
- cout << "Please input second name: ";
- getline(in, rektor.secondNameRector);
- cout << "Please input scienst degree: ";
- string strTmp;
- getline(in, strTmp);
- rektor.scienstDegree = atoi(strTmp.c_str());
- return in;
- }
- TUniver::TUniver() :n(0), fakultets(NULL), rektor(NULL),nameUniversity("New"), street("Ukrain"), ageaudience(0), House(0)
- {
- }
- TUniver::TUniver(const TUniver& obj)
- {
- nameUniversity = obj.nameUniversity;
- street = obj.street;
- ageaudience = obj.ageaudience;
- House = obj.House;
- n = obj.n;
- fakultets = new TFakultet[n];
- for (int i = 0; i < n; ++i)
- {
- fakultets[i] = obj.fakultets[i];
- }
- rektor = new TRektor[n];
- for (int i = 0; i < n; ++i)
- {
- rektor[i] = obj.rektor[i];
- }
- }
- TUniver::TUniver(const string& nameUniversity_, const string& street_, int ageaudience_, int House_)
- :n(0), fakultets(NULL), rektor(NULL),nameUniversity(nameUniversity_), street(street_), ageaudience(ageaudience_), House(House_)
- {
- }
- TUniver::~TUniver()
- {
- if (fakultets) delete[] fakultets;
- fakultets = NULL;
- if (rektor) delete[] rektor;
- rektor = NULL;
- n = 0;
- }
- const string& TUniver::getnameUniversity()const
- {
- return nameUniversity;
- }
- const string& TUniver::getstreet()const { return street; }
- int TUniver::getAgeaudience()const { return ageaudience; }
- int TUniver::getHouse()const { return House; }
- int TUniver::getNumberFakultets()const { return n; }
- void TUniver::outputFakultets(ostream& out)const
- {
- for (int i = 0; i < n; ++i)
- out << fakultets[i] << endl;
- }
- void TUniver::outputRektor(ostream& out)const
- {
- for (int i = 0; i < n; ++i)
- out << rektor[i] << endl;
- }
- void TUniver::setnameUniversity(const string& nameUniversity_) { nameUniversity = nameUniversity_; }
- void TUniver::setstreet(const string& street_) { street = street_; }
- void TUniver::setAgeaudience(int ageaudience_) { ageaudience = ageaudience_; }
- void TUniver::setHouse(int House_) { House = House_; }
- int TUniver::calcAverageAgeFakultet()const
- {
- int result = 0;
- time_t sysdate = time(NULL);
- int curYear = 1900 + localtime(&sysdate)->tm_year;
- for (int i = 0; i < n; ++i)
- result += (curYear - fakultets[i].numberOfStudents);
- result /= n;
- return result;
- }
- bool TUniver::isExistdFakultet(string Name_, string Section_)const
- {
- for (int i = 0; i < n; ++i)
- {
- if (fakultets[i].Name == Name_ && fakultets[i].Section == Section_)
- {
- return true;
- }
- }
- return false;
- }
- bool TUniver::addFakultet(string Name_, string Section_, int numberOfStudents_)
- {
- TFakultet newFakultet = { Name_, Section_, numberOfStudents_ };
- return addFakultet(newFakultet);
- }
- bool TUniver::addFakultet(const TFakultet& fakultet)
- {
- if (isExistdFakultet(fakultet.Name, fakultet.Section)) return false;
- TFakultet* mas = new TFakultet[n + 1]; //выделяем новую область памяти
- for (int i = 0; i < n; ++i)
- mas[i] = fakultets[i]; //переносим массив в новую область памяти
- mas[n] = fakultet; //заносим новый элемент на последнюю позицию
- delete[]fakultets;//удаляем старый массив
- fakultets = mas;//пернаправляем указатель на новый увеличенный массив
- ++n;
- return true;
- }
- bool TUniver::deleteFakultet(string Name_, string Section_)
- {
- if (!isExistdFakultet(Name_, Section_)) return false;
- TFakultet* mas = new TFakultet[n - 1]; //выделяем новую область памяти
- int j = 0;
- for (int i = 0; i < n; ++i)
- {
- if (fakultets[i].Name == Name_ && fakultets[i].Section == Section_)
- {
- continue;
- }
- mas[j++] = fakultets[i]; //переносим массив в новую область памяти
- }
- delete[]fakultets;//удаляем старый массив
- fakultets = mas;//пернаправляем указатель на новый увеличенный массив
- --n;
- }
- TFakultet* TUniver::findOldestFakultet()const
- {
- if (n <= 0) return NULL;
- TFakultet* oldestFakultet = fakultets;
- for (int i = 1; i < n; ++i)
- {
- if (fakultets[i].numberOfStudents < oldestFakultet->numberOfStudents) oldestFakultet = &fakultets[i];
- }
- return oldestFakultet;
- }
- int TUniver::calcAverageFakultetsTime()const
- {
- int result = 0;
- for (int i = 0; i < n; ++i)
- result += (fakultets[i].numberOfStudents);
- result /= n;
- return result;
- }
- TUniver& TUniver::operator =(const TUniver& obj)
- {
- if (this == &obj) return (*this);
- this->~TUniver();
- nameUniversity = obj.nameUniversity;
- street = obj.street;
- ageaudience = obj.ageaudience;
- House = obj.House;
- n = obj.n;
- fakultets = new TFakultet[n];
- for (int i = 0; i < n; ++i)
- {
- fakultets[i] = obj.fakultets[i];
- }
- rektor = new TRektor[n];
- for (int i = 0; i < n; ++i)
- {
- rektor[i] = obj.rektor[i];
- }
- }
- TUniver& TUniver::operator +=(const TFakultet& fakultet)
- {
- addFakultet(fakultet);
- return(*this);
- }
- bool TUniver::operator < (const TUniver& arg2) const
- {
- return (this->House < arg2.House);
- }
- TUniver::operator int()const
- {
- int result = calcAverageFakultetsTime();
- return result;
- }
- ostream& operator <<(ostream& out, const TUniver& Univer)
- {
- out << Univer.getnameUniversity()
- << "\t" << Univer.getstreet()
- << "\t" << "House: " << Univer.getHouse()
- << "\t Rector: " <<endl;
- //Univer.outputRektor(out);
- Univer.outputFakultets(out);
- return out;
- }
- istream& operator >>(istream& in, TUniver& Univer)
- {
- string strTmp;
- cout << "Please input name Univer: ";
- getline(in, strTmp);
- Univer.setnameUniversity(strTmp);
- cout << "Please input street: ";
- getline(in, strTmp);
- Univer.setstreet(strTmp);
- cout << "Please input House: ";
- getline(in, strTmp);
- Univer.setHouse(atoi(strTmp.c_str()));
- cout << "Please add rektor:"<<endl;
- TRektor rektor;
- in >> rektor;
- //getline(in, strTmp);
- //Univer.setHouse(atoi(strTmp.c_str()));
- //Univer += rektor;
- // cout << "Please input the age audience: ";
- // getline(in, strTmp);
- // Univer.setAgeaudience(atoi(strTmp.c_str()));
- string ansver;
- do
- {
- cout << "Please add fakultet:"<<endl;
- TFakultet fakultet;
- in >> fakultet;
- Univer += fakultet;
- cout << "Do wount continue add fakultets(y/n):";
- getline(in, ansver);
- } while (ansver.size() != 0 && ansver[0] == 'y');
- return in;
- //getline(in, ansver);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement