Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib>
- using namespace std;
- class kulka
- {
- public:
- int v;
- int numer;
- kulka *dol=NULL;
- kulka *lewy=NULL;
- kulka *prawy=NULL;
- kulka *next=NULL;
- int poziom;
- kulka(int numer=0)
- {
- this->numer=numer;
- this->v = rand()%50;
- cout<<"K: "<<v<<"\t";
- this->poziom=0;
- }
- void showdrzewo()
- {
- if (lewy) lewy->showdrzewo();
- cout << v<< "\t" ;
- if (prawy) prawy ->showdrzewo();
- }
- void hist(kulka * nowa)
- {
- if (nowa->v == v)
- {
- if (next==NULL)
- {
- next=nowa;
- }
- else next->hist(nowa);
- }
- else
- {
- if (dol==NULL) dol=nowa;
- else dol->hist(nowa);
- }
- }
- void drzewo(kulka *nowa)
- {
- if (nowa->v<v)
- {
- if (lewy==NULL) lewy=nowa;
- else lewy->drzewo(nowa);
- }
- else
- {
- if (prawy==NULL) prawy=nowa;
- else prawy->drzewo(nowa);
- }
- }
- void show2()
- {
- cout << v << "\t";
- if (next) next->show2();
- else cout<<endl;
- if (dol) dol->show2();
- }
- bool go(int l)
- {
- if (l==9) return true;
- bool t=false;
- if (next) t=t|next->go(l+1);
- if (dol)
- {
- t=t|dol->go(0);
- }
- return t;
- }
- void ile_poziomow(int &liczba_poziomow)
- {
- if(lewy)
- {
- lewy->poziom=poziom+1;
- if(lewy->poziom>liczba_poziomow) liczba_poziomow=lewy->poziom;
- lewy->ile_poziomow(liczba_poziomow);
- }
- if(prawy)
- {
- prawy->poziom=poziom+1;
- if(prawy->poziom>liczba_poziomow) liczba_poziomow=prawy->poziom;
- prawy->ile_poziomow(liczba_poziomow);
- }
- }
- int licznik_histogram()
- {
- int temp;
- if(v%5==0)
- {
- temp=1;
- }
- else
- {
- temp=0;
- }
- if(next) temp+=next->licznik_histogram();
- if(dol) temp+=dol->licznik_histogram();
- return temp;
- }
- int licznik_drzewo()
- {
- int temp;
- if(v%5==0)
- {
- temp=1;
- }
- else
- {
- temp=0;
- }
- if(lewy) temp+=lewy->licznik_drzewo();
- if(prawy) temp+=prawy->licznik_drzewo();
- return temp;
- }
- };
- int main()
- {
- kulka *roothist=NULL;
- kulka *rootdrzew2=NULL;
- kulka *rootdrzew=NULL;
- int liczba_poziomow=0;
- do{
- //for (int i=0; i<100; i++){
- int i=0;
- kulka *nowa= new kulka(i);
- i++;
- if (nowa->v%3==0)
- {
- if (roothist==NULL)
- {
- roothist=nowa;
- }
- else roothist->hist(nowa);
- }
- else if(nowa->v%2==0)
- {
- if (rootdrzew2==NULL)
- {
- rootdrzew2=nowa;
- }
- else rootdrzew2->drzewo(nowa);
- }
- else {
- if (rootdrzew==NULL)
- {
- rootdrzew=nowa;
- }
- else rootdrzew->drzewo(nowa);
- }
- //}
- }while (roothist->go(0)==false);
- roothist->show2();
- cout<<endl;
- rootdrzew2->showdrzewo();
- cout<<endl;
- cout<<endl;
- rootdrzew->showdrzewo();
- cout<<endl;
- rootdrzew->ile_poziomow(liczba_poziomow);
- cout<<"liczba: "<<liczba_poziomow+1<<endl;
- cout<<endl;
- cout<<"Podzielne przez 5 na drzewie parzystym: "<<rootdrzew2->licznik_drzewo()<<endl;
- cout<<"Podzielne przez 5 na drzewie nieparzystym: "<<rootdrzew->licznik_drzewo()<<endl;
- cout<<"Podzielne przez 5 na histogramie: "<<roothist->licznik_histogram()<<endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement