Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string.h>
- using namespace std;
- #define Max 20
- class Rgb{ //kreirame klasa za opisuvanje boja na eden piksel cuvame informacii za imeto na bojata,i vrednosti za crvena zelena i sina.
- //(private znaci deka samo klasata rgb ke moze da gi koristi elementite[ime,boja]
- private:
- char ime[20];
- int crvena;
- int zelena;
- int sina;
- public: // public znaci deka promenlivite,funkciite,konstruktorite ke moze da se koristat sekade vo programata
- Rgb(const char*_ime="piksel",int _crvena=0,int _zelena=0,int _sina=0){ // kreirame konstruktor koj kako argument prima ime(piksel)[constant znaci deka promenlivata nema da varira(piksel nema da se menuva ponataka),i vrednostite na boite
- strcpy(ime,_ime);
- crvena= _crvena;// so string copy funkcijata go kopirame imeto od klasata vo imeto piksel,isto pravime i za boite
- zelena= _zelena;
- sina= _sina;
- }
- };
- int dominantaboja(){ //kreirame funkcija koja treba da ja vrati dominantnata boja
- if(crvena>=zelena && crvena >=sina_) // samo sporeduvame ako crvenata e pogolema od sinata i zelenata avtomatski e dominantna,i ja vrakjame
- return crvena;
- if(zelena>=crvena && zelena>=sina) // istoto i tuka samo sporedba
- return zelena;
- else return sina;
- }
- void soberi(Rgb &s){ // metod soberi koj treba da gi soberi boite,ako me se preminat 255 vrednostite na boite ostanuvaat nepromeneti(istoto za site boi)
- if(crvena+s.crvena<=255)
- crvena+=s.crvena;
- if(zelena+s.zelena<=255)
- zelena+=s.zelena;
- if(sina+s.sina<=255)
- sina+=s.sina;
- }
- void odzemi(Rgb &o){ // istoto i tuka samo se odzemaat i ne treba da padnat pod nula
- if(crvena-o.crvena>=0)
- crvena-=o.crvena;
- if(zelena-o.zelena>=0)
- zelena-=o.zelena;
- if(sina-o.sina>=0)
- sina+=o.sina;
- }
- bool sporedi(Rgb &r){ // metod koj sto vrakja true dokolku se razlicni vrednostite na boite(samo sporeduvame,ako se ednakvi znaci ne se razlicni i vrakjame true odnosno false)
- // [bojata koja se povikuva i bojata koja se prakja kako argument]
- if(crvena=r.crvena && zelena=r.zelena &&sina==r.sina) return false;
- else return true;
- }
- void pecati(){ // gi pecatime boite vo format (crvenata prva,zelenata vtora sinata treta
- cout<<"Crvena:"<<crvena<<","zelena<<"Zelena:"<<zelena<<","<<"Sina:"sina;
- }
- void pecati(int){ // istata funkcija pecati povikana so argument koja go dopolnitelno go pecati i imeto na bojata
- cout<<ime<<endl;
- pecati();
- }
- bool vo_opseg(Rgb,&a,Rgb,&b) {// dobiva dva pikseli (a,i b) i proveruvad dali tekovnata boja e vo opseg na dvata pikseli(se vrsat samo sporedbi pomegju tekovnata boja i boite na dvata pikseli)
- if((a.crvena>=crvena && crvena<=b.crvena) && (a.zelena>=zelena && zelena<=b.zelena)
- &&(a.sina >=sina && sina <=b.sina))
- return true;
- return false;
- }
- void neutral(Rgb *lista,int N){ // funkcija koja dobiva lista od pikseli,i kolku pikseli ima pravime tri brojaci za crvenata,zelenata,i sinata boja
- // pravime promenliva z so koja treba da proverime dali pikselot se naogja vo opsegot na ostanatite pikseli
- int z;
- for(int i=0;i<N;i++){
- int z=1;
- for(int j=0;j<N;j++){
- if(i==j) continue;
- for(int k=j+1;k<N;k++)
- {
- if(z==i || z==j) continue;
- if(!lista[i].vo_opseg(lista[j],lista[k]))
- z=0;
- }
- }
- }
- }
- if(p==1) lista[i].pecati();
- int main()// vo glavnata programa treba da vnesime 20 pikseli i programata treba da gi otpecati site pikseli zaedno so imeto i bojata.
- // na krajot gi pecatime site pikseli koj se naogjaat vo opsegot(0-255)
- {
- Rgb lista[Max] // max ni e definiran gore odnosno max e 20(se bara da se vnesat 20 pikseli)
- char ime[Max] // i imeto na bojata e dolgo maks 20 bukvi
- int crvena,zelena,sina; // definirame crvena,zelena,sina
- for(int i=0;i<Max;i++){ // ja izminuvame listata so for
- cin >> ime>>crvena>>zelena>>sina; // gi vnesuvame
- lista[i]=new lista(ime,crvena,zelena,sina);// so operatorot new alocirame memorija
- }
- for(int i=0;i<Max;i++){ // gi izminuvame i gi pecatime so funkcijata koja sto pred toa ja kreiravme(pecati)
- lista[i].pecati();
- }
- neutral(lista,Max); // gi pecatime neutralnite pikseli odnosno tie sto se vo opseg
- }
- return 0; // vrakjame 0 :P
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement