Advertisement
ivafinki

aud 4 zadaca 5 list container c++

Apr 13th, 2020
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.15 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5. class List{
  6. private:
  7. int *br;
  8. int n;
  9. public:
  10. List(int *br=0, int n=0)
  11. {
  12. this->n=n;
  13. this->br= new int[n];
  14. for(int i=0;i<n;i++)
  15. {
  16. this->br[i]=br[i];
  17. }
  18. }
  19. List &operator=(const List &l)
  20. {
  21. if(this!=&l)
  22. {
  23. delete [] br;
  24. this->n=l.n;
  25. this->br= new int[l.n];
  26. for(int i=0;i<l.n;i++)
  27. {
  28. this->br[i]=l.br[i];
  29. }
  30. }
  31. return *this;
  32. }
  33. List(const List &l)
  34. {
  35. this->n=l.n;
  36. this->br= new int[l.n];
  37. for(int i=0;i<l.n;i++)
  38. {
  39. this->br[i]=l.br[i];
  40. }
  41. }
  42. int get_n(){ return n; }
  43. void pecati()
  44. {
  45. cout<<n<<": ";
  46. for(int i=0;i<n;i++)
  47. {
  48. cout<<br[i]<<" ";
  49. }
  50. cout<<"sum: "<<sum()<<" average: "<<average()<<endl;
  51. }
  52. int sum()
  53. {
  54. int suma=0;
  55. for(int i=0;i<n;i++)
  56. {
  57. suma+=br[i];
  58. }
  59. return suma;
  60. }
  61. double average()
  62. {
  63. return (double)sum()/n;
  64. }
  65. ~List()
  66. {
  67. delete [] br;
  68. }
  69. };
  70.  
  71. class ListContainer{
  72. private:
  73. List *lista;
  74. int n;
  75. int tries;
  76. public:
  77. ListContainer(List *lista=0, int n=0, int tries=0)
  78. {
  79. this->n=n;
  80. this->tries=tries;
  81. this->lista=new List[n];
  82. for(int i=0;i<n;i++)
  83. {
  84. this->lista[i]=lista[i];
  85. }
  86. }
  87. ListContainer &operator=(const ListContainer &lc)
  88. {
  89. if(this!=&lc)
  90. {
  91. delete [] lista;
  92. this->n=lc.n;
  93. this->tries=lc.tries;
  94. this->lista=new List[lc.n];
  95. for(int i=0;i<lc.n;i++)
  96. {
  97. this->lista[i]=lc.lista[i];
  98. }
  99. }
  100. return *this;
  101. }
  102. ListContainer(const ListContainer &lc)
  103. {
  104. this->n=lc.n;
  105. this->tries=lc.tries;
  106. this->lista=new List[lc.n];
  107. for(int i=0;i<lc.n;i++)
  108. {
  109. this->lista[i]=lc.lista[i];
  110. }
  111. }
  112. void addNewList(List l)
  113. {
  114. bool isti_se=false;
  115. for(int i=0;i<n;i++)
  116. {
  117. if(lista[i].sum()==l.sum())
  118. isti_se=true;
  119. }
  120. if(!isti_se)
  121. {
  122. List *newlist=new List[n+1];
  123. for(int i=0;i<n;i++)
  124. newlist[i]=lista[i];
  125. newlist[n++]=l;
  126. delete [] lista;
  127. lista=newlist;
  128. }
  129. else tries++;
  130. }
  131. void print()
  132. {
  133. if(n==0)
  134. {
  135. cout<<"The list is empty"<<endl;
  136. }
  137. else
  138. {
  139. for(int i=0;i<n;i++)
  140. {
  141. cout<<"List number: "<<i+1<<" List info: ";
  142. lista[i].pecati();
  143. }
  144. cout<<"Sum: "<<sum()<<" Average: "<<average()<<endl;
  145. cout<<"Successful attempts: "<<n<<" Failed attempts: "<<tries<<endl;
  146. }
  147. }
  148. int sum()
  149. {
  150. int suma=0;
  151. for(int i=0;i<n;i++)
  152. {
  153. suma+=lista[i].sum();
  154. }
  155. return suma;
  156. }
  157. double average()
  158. {
  159. int number_ns=0;
  160. for(int i=0;i<n;i++)
  161. {
  162. number_ns+=lista[i].get_n();
  163. }
  164. return sum()/(double)number_ns;
  165. }
  166. ~ListContainer()
  167. {
  168. delete [] lista;
  169. }
  170. };
  171.  
  172. int main() {
  173.  
  174. ListContainer lc;
  175. int N;
  176. cin>>N;
  177.  
  178. for (int i=0;i<N;i++) {
  179. int n;
  180. int niza[100];
  181.  
  182. cin>>n;
  183.  
  184. for (int j=0;j<n;j++){
  185. cin>>niza[j];
  186.  
  187. }
  188.  
  189. List l=List(niza,n);
  190.  
  191. lc.addNewList(l);
  192. }
  193.  
  194.  
  195. int testCase;
  196. cin>>testCase;
  197.  
  198. if (testCase==1) {
  199. cout<<"Test case for operator ="<<endl;
  200. ListContainer lc1;
  201. lc1.print();
  202. cout<<lc1.sum()<<" "<<lc.sum()<<endl;
  203. lc1=lc;
  204. lc1.print();
  205. cout<<lc1.sum()<<" "<<lc.sum()<<endl;
  206. lc1.sum();
  207. lc1.average();
  208.  
  209. }
  210. else {
  211. lc.print();
  212. }
  213. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement