Advertisement
Guest User

Marija queen

a guest
May 6th, 2016
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.38 KB | None | 0 0
  1. #include <iostream>
  2. #include <string.h>
  3. using namespace std;
  4. #define Max 20
  5.  
  6. class Rgb{ //kreirame klasa za opisuvanje boja na eden piksel cuvame informacii za imeto na bojata,i vrednosti za crvena zelena i sina.
  7. //(private znaci deka samo klasata rgb ke moze da gi koristi elementite[ime,boja]
  8. private:
  9. char ime[20];
  10. int crvena;
  11. int zelena;
  12. int sina;
  13. public: // public znaci deka promenlivite,funkciite,konstruktorite ke moze da se koristat sekade vo programata
  14.  
  15. 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
  16. strcpy(ime,_ime);
  17. crvena= _crvena;// so string copy funkcijata go kopirame imeto od klasata vo imeto piksel,isto pravime i za boite
  18. zelena= _zelena;
  19. sina= _sina;
  20. }
  21. };
  22.  
  23. int dominantaboja(){ //kreirame funkcija koja treba da ja vrati dominantnata boja
  24.  
  25. if(crvena>=zelena && crvena >=sina_) // samo sporeduvame ako crvenata e pogolema od sinata i zelenata avtomatski e dominantna,i ja vrakjame
  26. return crvena;
  27. if(zelena>=crvena && zelena>=sina) // istoto i tuka samo sporedba
  28. return zelena;
  29. else return sina;
  30. }
  31. 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)
  32.  
  33. if(crvena+s.crvena<=255)
  34. crvena+=s.crvena;
  35. if(zelena+s.zelena<=255)
  36. zelena+=s.zelena;
  37. if(sina+s.sina<=255)
  38. sina+=s.sina;
  39. }
  40. void odzemi(Rgb &o){ // istoto i tuka samo se odzemaat i ne treba da padnat pod nula
  41. if(crvena-o.crvena>=0)
  42. crvena-=o.crvena;
  43. if(zelena-o.zelena>=0)
  44. zelena-=o.zelena;
  45. if(sina-o.sina>=0)
  46. sina+=o.sina;
  47. }
  48.  
  49. 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)
  50. // [bojata koja se povikuva i bojata koja se prakja kako argument]
  51. if(crvena=r.crvena && zelena=r.zelena &&sina==r.sina) return false;
  52. else return true;
  53.  
  54. }
  55. void pecati(){ // gi pecatime boite vo format (crvenata prva,zelenata vtora sinata treta
  56.  
  57. cout<<"Crvena:"<<crvena<<","zelena<<"Zelena:"<<zelena<<","<<"Sina:"sina;
  58. }
  59.  
  60. void pecati(int){ // istata funkcija pecati povikana so argument koja go dopolnitelno go pecati i imeto na bojata
  61.  
  62. cout<<ime<<endl;
  63. pecati();
  64. }
  65.  
  66. 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)
  67.  
  68. if((a.crvena>=crvena && crvena<=b.crvena) && (a.zelena>=zelena && zelena<=b.zelena)
  69. &&(a.sina >=sina && sina <=b.sina))
  70. return true;
  71. return false;
  72. }
  73. 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
  74. // pravime promenliva z so koja treba da proverime dali pikselot se naogja vo opsegot na ostanatite pikseli
  75. int z;
  76. for(int i=0;i<N;i++){
  77.  
  78. int z=1;
  79. for(int j=0;j<N;j++){
  80.  
  81. if(i==j) continue;
  82. for(int k=j+1;k<N;k++)
  83. {
  84. if(z==i || z==j) continue;
  85. if(!lista[i].vo_opseg(lista[j],lista[k]))
  86. z=0;
  87. }
  88. }
  89.  
  90. }
  91. }
  92. if(p==1) lista[i].pecati();
  93.  
  94. int main()// vo glavnata programa treba da vnesime 20 pikseli i programata treba da gi otpecati site pikseli zaedno so imeto i bojata.
  95. // na krajot gi pecatime site pikseli koj se naogjaat vo opsegot(0-255)
  96. {
  97.  
  98. Rgb lista[Max] // max ni e definiran gore odnosno max e 20(se bara da se vnesat 20 pikseli)
  99. char ime[Max] // i imeto na bojata e dolgo maks 20 bukvi
  100. int crvena,zelena,sina; // definirame crvena,zelena,sina
  101. for(int i=0;i<Max;i++){ // ja izminuvame listata so for
  102. cin >> ime>>crvena>>zelena>>sina; // gi vnesuvame
  103. lista[i]=new lista(ime,crvena,zelena,sina);// so operatorot new alocirame memorija
  104. }
  105. for(int i=0;i<Max;i++){ // gi izminuvame i gi pecatime so funkcijata koja sto pred toa ja kreiravme(pecati)
  106. lista[i].pecati();
  107. }
  108. neutral(lista,Max); // gi pecatime neutralnite pikseli odnosno tie sto se vo opseg
  109. }
  110.  
  111. return 0; // vrakjame 0 :P
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement