Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<string.h>
- using namespace std;
- class BadInputException{};
- class StudentKurs{
- protected:
- char ime[30];
- int ocenka;
- bool daliUsno;
- static int maks;
- static const int MINOCENKA=6;
- public:
- StudentKurs(char* ime,int finalenIspit){
- strcpy(this->ime,ime);
- this->ocenka=finalenIspit;
- this->daliUsno=false;
- }
- //дополни ја класата
- StudentKurs(const StudentKurs *sk){
- strcpy(this->ime,sk->ime);
- this->ocenka=sk->ocenka;
- this->daliUsno=false;
- }
- friend ostream &operator<<(ostream &out, StudentKurs &stu)
- {
- return out<<stu.ime<<" --- "<<stu.getOcenka()<<endl;
- }
- virtual int getOcenka()
- {
- return ocenka;
- }
- bool getDaliUsno(){return daliUsno;}
- char *getIme(){return ime;}
- static void setMAX(int n)
- {
- maks=n;
- }
- ~StudentKurs(){}
- };
- int StudentKurs::maks=10;
- //вметни го кодот за StudentKursUsno
- class StudentKursUsno:public StudentKurs
- {
- private:
- char *opisnaocenka;
- public:
- StudentKursUsno(char* ime,int finalenIspit):StudentKurs(ime, finalenIspit){
- opisnaocenka = new char [0];
- daliUsno=true;
- }
- StudentKursUsno &operator+=(char *novaocenka)
- {
- opisnaocenka=new char[strlen(novaocenka)+1];
- strcpy(opisnaocenka,novaocenka);
- return *this;
- }
- friend ostream &operator<<(ostream &out, const StudentKursUsno &stu)
- {
- return out<<stu.ime<<" --- "<<stu.ocenka<<endl;
- }
- int getOcenka()
- {
- int ocenka=StudentKurs::ocenka;
- if(strcmp(opisnaocenka,"odlicen")==0)
- ocenka+=2;
- else if (strcmp(opisnaocenka,"do7br4o")==0)
- ocenka++;
- else if (strcmp(opisnaocenka,"losho")==0)
- ocenka--;
- return ocenka;
- }
- ~StudentKursUsno()
- {
- //[] delete opisnaocenka;
- }
- };
- class KursFakultet{
- private:
- char naziv[30];
- StudentKurs *studenti[20];
- int broj;
- public:
- KursFakultet(char *naziv, StudentKurs** studenti,int broj ){
- strcpy(this->naziv,naziv);
- for (int i=0;i<broj;i++){
- //ako studentot ima usno isprashuvanje
- if (studenti[i]->getDaliUsno()){
- this->studenti[i]=new StudentKursUsno(*dynamic_cast<StudentKursUsno*>(studenti[i]));
- }
- else this->studenti[i]=new StudentKurs(*studenti[i]);
- }
- this->broj=broj;
- }
- ~KursFakultet(){
- for (int i=0;i<broj;i++) delete studenti[i];
- }
- //дополни ја класата
- void pecatiStudenti()
- {
- cout<<"Kursot "<<naziv<<" go polozile:"<<endl;
- for(int i=0;i<broj;i++)
- {
- if(studenti[i]->getOcenka()>5)
- cout<<*studenti[i];
- }
- }
- void postaviOpisnaOcenka(char * ime, char* opisnaOcenka) {
- for(int i=0;i<broj;i++){
- if(strcmp(studenti[i]->getIme(),ime)==0&&studenti[i]->getDaliUsno())
- {
- StudentKursUsno *usno =dynamic_cast<StudentKursUsno *> (studenti[i]);
- *usno+=opisnaOcenka;
- }
- }
- }
- };
- int main(){
- StudentKurs **niza;
- int n,m,ocenka;
- char ime[30],opisna[10];
- bool daliUsno;
- cin>>n;
- niza=new StudentKurs*[n];
- for (int i=0;i<n;i++){
- cin>>ime;
- cin>>ocenka;
- cin>>daliUsno;
- if (!daliUsno)
- niza[i]=new StudentKurs(ime,ocenka);
- else
- niza[i]=new StudentKursUsno(ime,ocenka);
- }
- KursFakultet programiranje("OOP",niza,n);
- for (int i=0;i<n;i++) delete niza[i];
- delete [] niza;
- cin>>m;
- for (int i=0;i<m;i++){
- cin>>ime>>opisna;
- try {
- for(int i=0;i<strlen(opisna);i++)
- if(!isalpha(opisna[i]))
- throw BadInputException();
- }
- catch (BadInputException){
- cout<<"Greshna opisna ocenka"<<endl;
- }
- programiranje.postaviOpisnaOcenka(ime,opisna);
- }
- StudentKurs::setMAX(9);
- programiranje.pecatiStudenti();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement