Advertisement
Guest User

pokušaj.aka.Laka

a guest
Apr 25th, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.15 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <deque>
  4. typedef std::deque<int> dek;
  5. typedef std::vector<int> vektor;
  6. using std::cin;
  7. using std::cout;
  8.  
  9. template <typename Tip1, typename Tip3>
  10. bool NalazilSe(Tip1 it_pom, Tip3 it_prvi, Tip3 it_zadnji){
  11.  
  12. while(it_prvi!=it_zadnji){
  13.  
  14. if(*it_pom==*it_prvi){
  15. return false;
  16. }
  17. it_prvi++;
  18. }
  19. return true;
  20. }
  21.  
  22. template <typename Tip1, typename Tip2, typename Tip3>
  23. auto SimetricnaRazlikaBlokova(Tip1 it_n1, Tip1 it_n2, Tip2 it_d1, Tip2 it_d2, Tip3 it_novi)->decltype(it_novi){
  24. Tip2 pom=it_d1;
  25. Tip1 temp=it_n1;
  26. Tip3 it_prvi;
  27. int brojac=0,dodanih=0;
  28.  
  29. while(temp!=it_n2){
  30.  
  31. while(pom!=it_d2){
  32.  
  33. if(*temp==*pom){
  34. brojac++;
  35. break;
  36. }
  37. pom++;
  38. }
  39. it_prvi=it_novi-dodanih;
  40. if(brojac==0 && NalazilSe(temp,it_prvi,it_novi)==1){
  41. *it_novi=*temp;
  42. dodanih++;
  43. it_novi++;
  44. }
  45. temp++;
  46. pom=it_d1;
  47. brojac=0;
  48. }
  49. temp=it_n1;
  50.  
  51. while(it_d1!=it_d2){
  52.  
  53. while(it_n1!=it_n2){
  54.  
  55. if(*it_d1==*it_n1){
  56. brojac++;
  57. break;
  58. }
  59. it_n1++; //Vršeno je kopiranje dijela od 66 do 85 iz razloga što je identičan kao prethodni, ali u ovom slučaju uzimamo elemenat po elemenat iz drugog "niza" i provjeravamo da li se nalazi u prvom, iako je izvršeno kopiranje urađene su izmjene radi prilagodbe.
  60. }
  61. it_prvi=it_novi-dodanih;
  62. if(brojac==0 && NalazilSe(it_d1,it_prvi,it_novi)==1){
  63. *it_novi=*it_d1;
  64. dodanih++;
  65. it_novi++;
  66. }
  67. it_d1++;
  68. it_n1=temp;
  69. brojac=0;
  70. }
  71.  
  72. return it_novi;
  73. }
  74.  
  75. int main ()
  76. {
  77. int br_elem1,br_elem2;
  78. int nizA[100];
  79. dek nizB;
  80.  
  81. cout << "Unesite broj elemenata niza" << std::endl;
  82. cin >> br_elem1;
  83. cout << "Unesite elemente niza" << std::endl;
  84.  
  85.  
  86. for(int i=0; i<br_elem1; i++){
  87. int element;
  88. cin >> element;
  89. nizA[i]=element;
  90. }
  91.  
  92. cout << "Unesite broj elemenata deka" << std::endl;
  93. cin >> br_elem2;
  94. cout << "Unesite elemente deka" << std::endl;
  95.  
  96. for(int i=0; i<br_elem2; i++){
  97. int element;
  98. cin >> element;
  99. nizB.push_back(element);
  100. }
  101.  
  102. int odredisni[100];
  103. vektor vekt(0);
  104.  
  105. int* kraj = SimetricnaRazlikaBlokova(nizA, nizA+br_elem1, nizB.begin(), nizB.end(), odredisni);
  106. int* poc = odredisni;
  107. while (poc < kraj){
  108. vekt.push_back(*poc);
  109. poc++;
  110. }
  111.  
  112. if(vekt.size()==0){
  113. cout << "Blokovi nemaju simetricnu razliku";
  114. return 0;
  115. }
  116.  
  117. cout << "Simetricna razlika blokova je: ";
  118. for(int k:vekt){
  119. cout << k << " ";
  120. }
  121.  
  122. return 0;
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement