Advertisement
damch

aaad

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