Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<cstring>
- // dinamicka alokacija vo 4 chekori
- // 1) briseme shto i da ima vo promenlivata
- // 2) kazuvame kolkava da ni bide nizata
- // 3) prefrlame vrednost
- // 4) briseme dinamicki alocirani promenlivi vo destructor
- /*
- int ocenki[5];
- cout<<ocenki[2];
- int operator[](int index){
- return niza[index];
- }
- */
- using namespace std;
- using namespace std;
- class Student{
- private:
- int index;
- int ocenki[5];
- char ime[15];
- char nasoka[5];
- public:
- Student(){}
- Student(int index,char* ime,char* nasoka,int* ocenki){
- this->index=index;
- strcpy(this->ime,ime);
- strcpy(this->nasoka,nasoka);
- for(int i=0;i<5;i++){
- this->ocenki[i]=ocenki[i];
- }
- }
- // copy constructor
- Student(const Student &drugStudent){
- this->index=drugStudent.index;
- strcpy(this->ime,drugStudent.ime);
- strcpy(this->nasoka,drugStudent.nasoka);
- for(int i=0;i<5;i++){
- this->ocenki[i]=drugStudent.ocenki[i];
- }
- }
- // vrati ja ocenkata na pozicija index
- int getOcenki(int index){
- return ocenki[index];
- }
- // gotova funkcija za broenje kolku pati ja ima int ocenka
- int izbrojOcenki(int ocenka){
- int brojac=0;
- for(int i=0;i<5;i++){
- if(ocenki[i]==ocenka){
- brojac++;
- }
- }
- return brojac;
- }
- float prosek(){
- int suma=0;
- for(int i=0;i<5;i++){
- suma+=ocenki[i];
- }
- return (float)suma/5;
- }
- int getIndex(){
- return index;
- }
- char* getNasoka(){
- return nasoka;
- }
- void print(){
- cout<<ime<<" "<<index<<" "<<prosek()<<" "<<nasoka<<endl;
- }
- };
- class Fakultet{
- private:
- int brojStudenti;
- // ako ne znaeme kolkava e nizata stavame *
- Student *niza;
- char ime[20];
- public:
- Fakultet(){}
- Fakultet(char* ime,Student *niza,int brojStudenti){
- strcpy(this->ime,ime);
- for(int i=0;i<brojStudenti;i++){
- // copy constructor ili operator =
- this->niza[i]=niza[i];
- }
- this->brojStudenti=brojStudenti;
- }
- // print site studenti
- void printStudenti(){
- cout<<"Studenti zapishani na fakultetot "<<ime<<endl;
- for(int i=0;i<brojStudenti;i++){
- niza[i].print();
- }
- }
- // student so najgolem prosek
- void prvenecNaGeneracija(){
- float maxProsek=0;
- int pamtiIndex;
- for(int i=0;i<brojStudenti;i++){
- if(niza[i].prosek()>maxProsek){
- maxProsek=niza[i].prosek();
- pamtiIndex=i;
- }
- }
- cout<<"Najgolem prosek ima studentot"<<endl;
- niza[pamtiIndex].print();
- }
- // koj student ima najvekje 6ki
- void studentSoNajvekje6(){
- int broj6ki=0;
- int max6ki=0;
- int pamtiIndex;
- for(int i=0;i<brojStudenti;i++){
- broj6ki=0;
- for(int j=0;j<5;j++){
- if(niza[i].getOcenki(j)==6){
- broj6ki++;
- }
- }
- if(broj6ki>max6ki){
- max6ki=broj6ki;
- pamtiIndex=i;
- }
- }
- cout<<"Studentot so najvekje 6ki e"<<endl;
- niza[pamtiIndex].print();
- }
- // printaj gi site studenti zapishani pred 2018
- void studentiPred2018(){
- for(int i=0;i<brojStudenti;i++){
- if(niza[i].getIndex()/10000<18){
- niza[i].print();
- }
- }
- }
- // dali postoi student vo fakultetot
- int daliPostoiStudent(Student nov){
- for(int i=0;i<brojStudenti;i++){
- if(nov.getIndex()==niza[i].getIndex()){
- nov.print();
- return 1;
- }
- }
- return 0;
- }
- // nasoki: pit,kni,knia,sis
- void nasokaSoNajvekjeStudenti(){
- int brojPit=0;
- int brojKni=0;
- int brojKnia=0;
- int brojSis=0;
- for(int i=0;i<brojStudenti;i++){
- if(strcmp("pit",niza[i].getNasoka())==0){
- brojPit++;
- }
- if(strcmp("kni",niza[i].getNasoka())==0){
- brojKni++;
- }
- if(strcmp("knia",niza[i].getNasoka())==0){
- brojKnia++;
- }
- if(strcmp("sis",niza[i].getNasoka())==0){
- brojSis++;
- }
- }
- if(brojPit>brojSis && brojPit>brojKni && brojPit>brojKnia){
- cout<<"Pit ima najvekje "<<brojPit<<endl;
- }
- }
- // student so najvekje dobieni ocenki kako int ocenka
- void studentSoNajvekjeOcenka(int ocenka){
- int brojOcenka=0;
- int maxOcenka=0;
- int pamtiIndex;
- for(int i=0;i<brojStudenti;i++){
- brojOcenka=0;
- for(int j=0;j<5;j++){
- if(niza[i].getOcenki(j)==ocenka){
- brojOcenka++;
- }
- }
- if(brojOcenka>maxOcenka){
- maxOcenka=brojOcenka;
- pamtiIndex=i;
- }else if(brojOcenka==maxOcenka){
- if(niza[i].prosek()>niza[pamtiIndex].prosek()){
- pamtiIndex=i;
- }
- }
- }
- cout<<"Studentot so najvekje "<<ocenka<<" ocenki e"<<endl;
- niza[pamtiIndex].print();
- }
- void dodadi(Student &objekt){
- // temp niza za da gi zacuvame site studenti vo nizata
- Student tempNiza[brojStudenti];
- for(int i=0;i<brojStudenti;i++){
- tempNiza[i]=niza[i];
- }
- // ja prosiruvame nizata za +1 student
- niza=new Student[brojStudenti+1];
- // si gi vrakjame site studenti nazad
- for(int i=0;i<brojStudenti;i++){
- niza[i]=tempNiza[i];
- }
- // go dodavame noviot objekt na posledno mesto
- niza[brojStudenti]=objekt;
- // pokacuvame brojot na studenti za +1
- brojStudenti++;
- }
- //finki+=petar;
- Fakultet &operator+=(Student &objekt){
- // tempNiza da e dinamicki alocirana
- Student *tempNiza = new Student[brojStudenti];
- for(int i=0;i<brojStudenti;i++){
- tempNiza[i]=niza[i];
- }
- niza=new Student[brojStudenti+1];
- for(int i=0;i<brojStudenti;i++){
- niza[i]=tempNiza[i];
- }
- niza[brojStudenti]=objekt;
- brojStudenti++;
- // briseme dinamicki alocirani objekti
- delete []tempNiza;
- return *this;
- }
- };
- int main(){
- int n;
- cout<<"Vnesi kolku studenti sakash"<<endl;
- cin>>n;
- Student nizaStudenti[n];
- int index;
- char ime[15];
- char nasoka[5];
- int ocenki[5];
- for(int i=0;i<n;i++){
- //cout<<"Vnesi index"<<endl;
- cin>>index;
- //cout<<"Vnesi ime"<<endl;
- cin>>ime;
- //cout<<"Vnesi nasoka"<<endl;
- cin>>nasoka;
- //cout<<"Vnesi 5 ocenki"<<endl;
- for(int j=0;j<5;j++){
- cin>>ocenki[j];
- }
- nizaStudenti[i]=Student(index,ime,nasoka,ocenki);
- }
- Fakultet finki("FINKI",nizaStudenti,n);
- finki.printStudenti();
- cout<<"Vnesi ocenki za noviot student (petar)"<<endl;
- for(int j=0;j<5;j++){
- cin>>ocenki[j];
- }
- Student petar(181718,"Petar","pit",ocenki);
- //finki.dodadi(petar);
- finki+=petar;
- finki.printStudenti();
- return 0;
- }
- /*
- // bool, class i input/output
- // 1) >,>=,<,<=,==,!= bool operator==(class &objekt) ne treba & pred operator
- // 2) +,-,++,--,+=,-= & pred operator
- // 3) <<, >> & pred operator
- using namespace std;
- class Tocka{
- private:
- int x;
- int y;
- public:
- Tocka(){}
- Tocka(int x,int y){
- this->x=x;
- this->y=y;
- }
- // sporedba na dva objekti
- bool operator>(Tocka &objekt){
- if(this->x>objekt.x && this->y>objekt.y){
- return true;
- }else{
- return false;
- }
- }
- // sporedba so konkretna vrednost
- bool operator>(int integer){
- if(this->x>integer && this->y>integer){
- return true;
- }else{
- return false;
- }
- }
- bool operator>=(Tocka &objekt){
- if(this->x>=objekt.x && this->y>=objekt.y){
- return true;
- }else{
- return false;
- }
- }
- bool operator==(Tocka &objekt){
- if(this->x==objekt.x && this->y==objekt.y){
- return true;
- }else{
- return false;
- }
- }
- void print(){
- cout<<"x="<<x<<" y="<<y<<endl;
- }
- Tocka& operator+=(Tocka &objekt){
- this->x+=objekt.x;
- this->y+=objekt.y;
- return *this;
- }
- // & pred operatorot mora
- Tocka& operator+(Tocka &objekt){
- Tocka nov;
- nov.x=this->x + objekt.x;
- nov.y=this->y + objekt.y;
- return nov;
- }
- Tocka& operator-(Tocka &objekt){
- Tocka nov;
- nov.x=this->x - objekt.x;
- nov.y=this->y - objekt.y;
- return nov;
- }
- // prefix
- Tocka& operator++(){
- this->x++;
- this->y++;
- return *this;
- }
- // postfix
- Tocka &operator++(int){
- Tocka nov(*this);
- this->x++;
- this->y++;
- return nov;
- }
- // input
- friend istream& operator>>(istream &input, Tocka &objekt){
- input>>objekt.x;
- input>>objekt.y;
- return input;
- }
- // output
- friend ostream& operator<<(ostream &output, Tocka &objekt){
- output<<"x="<<objekt.x<<" y="<<objekt.y<<endl;
- return output;
- }
- };
- int main(){
- Tocka prv;
- cin>>prv;
- cout<<prv;
- cout<<++prv;
- cout<<prv++;
- cout<<prv;
- return 0;
- }
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement