Advertisement
masterm1nd99

gen2

May 23rd, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.92 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <cstdlib>
  4.  
  5. using namespace std;
  6.  
  7. template <typename T>
  8. class Array {
  9. private:
  10. int n; // broj na elementi na nizata
  11. T *elementi; // pokazhuvach kon elementi od tip T
  12. public:
  13. Array<T> (int n) {
  14. elementi = new T[n];
  15. this->n=n;
  16. }
  17. void Erase () {
  18. for(int i=0; i<n; i++)
  19. delete elementi[i];
  20. delete [] elementi;
  21. }
  22. T &operator[] (int i) { // const
  23. if(i>=0&&i<n)
  24. return elementi[i];
  25. }
  26.  
  27. int getLength() {
  28. return n;
  29. }
  30.  
  31. friend ostream& operator<< (ostream &out, const Array<T> &a) {
  32. for (int i=0; i<a.n; i++)
  33. if(i==a.n-1) out<<"Array["<<i<<"] = "<<a.elementi[i];
  34. else out<<"Array["<<i<<"] = "<<a.elementi[i]<<", ";
  35. return out;
  36. }
  37. };
  38.  
  39. template <typename T>
  40. void BubbleSort(Array<T> &t) { // ги сорира елементите користејќи го BubbleSort алгоритмот
  41. T temp;
  42. for(int i=0; i<t.getLength(); i++) // t<dolzinata
  43. for(int j=i; j<t.getLength()-1; j++) //t<dolzinata-1 *so isklucok na posledniot clen na nizata)
  44. if(t[i]>t[j]) {
  45. temp=t[i];
  46. t[i]=t[j];
  47. t[j]=temp;
  48. }
  49. }
  50.  
  51. template <typename T>
  52. T Sum(Array<T> &t) { // ги сумира елементите (да се претпостави дека операторот += e преоптоварен за елементите од класата).
  53. T vk = 0;
  54. for(int i=0; i<t.getLength(); i++)
  55. vk+=t[i];
  56. return vk;
  57. }
  58.  
  59. template <typename T>
  60. double Average(Array<T> &t) { // користејќи ја функцијата за сума пресметува просечна вредност на елементите
  61. return Sum(t)/t.getLength();
  62. }
  63.  
  64. template <typename T,typename M>
  65. bool Equal (Array<T> &t, Array<M> &m) { // проверува дали низите се еднакви
  66. if(t.getLength()!=m.getLength())
  67. return false;
  68. bool flag=false;
  69. for(int i=0; i<t.getLength(); i++)
  70. if(t[i]==m[i])
  71. flag=true;
  72. else {
  73. flag=false;
  74. break;
  75. }
  76. return flag;
  77. }
  78. template <typename T>
  79. bool Equal (Array <T> &t, Array<double> &d) // која ќе изврши пацијална специјализација и ќе смета дека:
  80. // два елементи се исти ако и само ако се разликуваат за помалку од 0.1
  81. // разликата од просечната вредност на низите мора да е помала од 0.5.
  82. {
  83. if(t.getLength()!=d.getLength()) return false;
  84. bool flag1=false,flag2=false;
  85. for(int i=0; i<t.getLength(); i++)
  86. if(abs(t[i]-d[i])<0.1) flag1=true;
  87. else {
  88. flag1=false;
  89. break;
  90. }
  91. if(abs(Average(t)-Average(d))<0.5)
  92. flag2=true;
  93. else flag2=false;
  94. if(flag1&&flag2) // akko se true dvete
  95. return true;
  96. else return false;
  97. }
  98.  
  99. int main()
  100. {
  101.  
  102. int n;
  103. double r;
  104.  
  105. cin>>r;
  106. cin>>n;
  107.  
  108. Array<int> anArray(n);
  109. Array<double> adArray(n);
  110. Array<int> intArray2(n);
  111.  
  112. for (int nCount = 0; nCount < n; nCount++)
  113. {
  114.  
  115. cin>>anArray[nCount];
  116. adArray[nCount] = anArray[nCount] + r;
  117. }
  118.  
  119. BubbleSort(anArray);
  120.  
  121. intArray2 = anArray;
  122.  
  123. cout<<"The arrays: "<<endl;
  124. cout<<anArray;
  125. cout<<endl<<"and "<<endl;
  126. cout<<intArray2;
  127. cout<<endl;
  128. cout<<((Equal(anArray,intArray2))?" ARE":" ARE NOT")<<" same!"<<endl;
  129. cout<<"The Average of the array adArray is: "<<Average(adArray)<<endl;
  130.  
  131. cout<<"The arrays: "<<endl;
  132. cout<<anArray;
  133. cout<<endl<<"and "<<endl;
  134. cout<<adArray;
  135. cout<<endl;
  136. cout<<((Equal(anArray,adArray))?" ARE":" ARE NOT")<<" same!";
  137.  
  138.  
  139. return 0;
  140. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement