Advertisement
Mitrezzz

ListContainer

Mar 25th, 2018
2,817
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.23 KB | None | 0 0
  1. ListContainer Problem 4 (0 / 0)
  2. Да се имплементира класа List во којашто ќе се чуваат информации за:
  3.  
  4. броеви што се дел од листата (динамички алоцирана низа од цели броеви)
  5. бројот на броеви што се дел од листата
  6. За класта да се дефинираат следните методи:
  7.  
  8. конструктор (со аргументи), copy-конструктор, деструктор, оператор =
  9. потребни set-ери и get-ери
  10. void pecati()метод што ќе ги печати информациите за листата во форматот: [број на елементи во листата]: x1 x2 .. xn sum: [сума] average: [просек]
  11. int sum() метод што ја враќа сумата на елементите во листата
  12. double average() метод што ќе го враќа просекот на броевите во листата
  13. Дополнително, креирајте класата ListContainer, во која што ќе се чуваат информации за:
  14.  
  15. низа од листи (динамички алоцирана низа од објекти од класата List)
  16. број на елементи во низата од листи (цел број)
  17. број на обиди за додавање на листа во контејнерот (цел број првично поставен на нула)
  18. За класата потребно е да ги дефинирате следните методи:
  19.  
  20. конструктор (default), copy-конструктор, деструктор, оператор =
  21. void pecati() метод што ќе ги печати информациите за контејнерот во форматот: List number: [реден број на листата] List info: [испечатени информации за листата со методот List::pecati()] \n sum: [сума] average: [просек]
  22. доколку контејнерот е празен се печати само порака The list is empty.
  23. void addNewList(List l) метод со којшто се додава листа во контејнерот
  24. Напомена: една листа се додава во контејнерот ако и само ако има различна сума од сите листи што се веќе додадени во контејнерот
  25. int sum() метод што ја враќа сумата на сите елементи во сите листи
  26. double average() метод што го враќа просекот на сите елементи во сите листи во контејнерот
  27.  
  28. Sample input
  29. 5
  30. 5
  31. 1 2 3 4 5  
  32. 2
  33. 10 5      
  34. 3
  35. 1 2 3    
  36. 6
  37. 1 4 5 6 7 10
  38. 3
  39. 10 10 13
  40. 0
  41.  
  42. Sample output
  43. List number: 1 List info: 5: 1 2 3 4 5 sum: 15 average: 3
  44. List number: 2 List info: 3: 1 2 3 sum: 6 average: 2
  45. List number: 3 List info: 6: 1 4 5 6 7 10 sum: 33 average: 5.5
  46. Sum: 54 Average: 3.85714
  47. Successful attempts: 3 Failed attempts: 2
  48.  
  49. #include <iostream>
  50. #include <cstring>
  51. using namespace std;
  52.  
  53. class List {
  54. private:
  55.     int* broevi;
  56.     int brBroevi;
  57. public:
  58.     List() {
  59.         broevi=new int[0];
  60.         brBroevi=0;
  61.     }
  62.     ~List(){
  63.         delete[] broevi;
  64.     }
  65.     List(int* broevi,int brBroevi) {
  66.         this->broevi=new int[brBroevi];
  67.         for(int i=0; i<brBroevi; i++)
  68.             this->broevi[i]=broevi[i];
  69.         this->brBroevi=brBroevi;
  70.     }
  71.     List(const List& l) {
  72.         this->brBroevi=l.brBroevi;
  73.         this->broevi=new int[l.brBroevi];
  74.         for(int i=0; i<l.brBroevi; i++)
  75.             this->broevi[i]=l.broevi[i];
  76.     }
  77.     List& operator=( List& l) {
  78.         if(this!=&l) {
  79.             delete[]broevi;
  80.             brBroevi=l.brBroevi;
  81.             broevi=new int[l.brBroevi];
  82.             for(int i=0; i<l.brBroevi; i++)
  83.                 broevi[i]=l.broevi[i];
  84.         }
  85.         return *this;
  86.     }
  87.     int sum() {
  88.         int suma=0;
  89.         for(int i=0; i<brBroevi; i++) {
  90.             suma+=broevi[i];
  91.         }
  92.         return suma;
  93.     }
  94.     double average() {
  95.         return sum()*1.0/brBroevi;
  96.     }
  97.     void pecati() {
  98.         cout<<brBroevi<<": ";
  99.         for(int i=0; i<brBroevi; i++) {
  100.             cout<<broevi[i]<<" ";
  101.         }
  102.         cout<<"sum: "<<sum();
  103.         cout<<" average: "<<average();
  104.     }
  105.     int getbrBroevi(){
  106.         return brBroevi;
  107.     }
  108. };
  109.  
  110. class ListContainer {
  111. private:
  112.     List* listi;
  113.     int brElementi;
  114.     int brObidi;
  115. public:
  116.     ListContainer() {
  117.         listi=new List[0];
  118.         brElementi=0;
  119.         brObidi=0;
  120.     }
  121.         ~ListContainer(){
  122.         delete[] listi;
  123.     }
  124.     ListContainer(const ListContainer& lc) {
  125.         this->brObidi=lc.brObidi;
  126.         this->brElementi=lc.brElementi;
  127.         this->listi=new List[lc.brElementi];
  128.         for(int i=0; i<lc.brElementi; i++) {
  129.             this->listi[i]=lc.listi[i];
  130.         }
  131.     }
  132.     ListContainer& operator=(ListContainer& lc) {
  133.         if(this!=&lc) {
  134.             delete[] listi;
  135.             brObidi=lc.brObidi;
  136.             brElementi=lc.brElementi;
  137.             listi=new List[lc.brElementi];
  138.             for(int i=0; i<lc.brElementi; i++) {
  139.                 listi[i]=lc.listi[i];
  140.             }
  141.         }
  142.         return *this;
  143.     }
  144.     int sum(){
  145.         int suma=0;
  146.         for(int i=0;i<brElementi;i++){
  147.             suma+=listi[i].sum();
  148.         }
  149.         return suma;
  150.     }
  151.     double average(){
  152.         int suma=sum();
  153.         int broevi=0;
  154.         for(int i=0;i<brElementi;i++){
  155.             broevi+=listi[i].getbrBroevi();
  156.         }
  157.         return suma/(broevi*1.0);
  158.     }
  159.     void addNewList(List l){
  160.         ++brObidi;
  161.         for(int i=0;i<brElementi;i++){
  162.             if(l.sum()==listi[i].sum())
  163.                 return;
  164.         }
  165.         List* tmp=new List[brElementi+1];
  166.         for(int i=0;i<brElementi;i++){
  167.             tmp[i]=listi[i];
  168.         }
  169.         tmp[brElementi++]=l;
  170.         delete [] listi;
  171.         listi=tmp;
  172.     }
  173.     void print(){
  174.         if(!brElementi){
  175.             cout<<"The list is empty"<<endl;
  176.             return;
  177.         }
  178.         else{
  179.             for(int i=0;i<brElementi;i++){
  180.                 cout<<"List number: "<<i+1<<" List info: ";
  181.                 listi[i].pecati();
  182.                 cout<<endl;
  183.             }
  184.         }
  185.         cout<<"Sum: "<<sum();
  186.         cout<<" Average: "<<average()<<endl;
  187.         cout<<"Successful attempts: "<<brElementi<< " Failed attempts: " <<brObidi-brElementi<<endl;
  188.     }
  189. };
  190. int main() {
  191.  
  192.     ListContainer lc;
  193.     int N;
  194.     cin>>N;
  195.  
  196.     for (int i=0; i<N; i++) {
  197.         int n;
  198.         int niza[100];
  199.  
  200.         cin>>n;
  201.  
  202.         for (int j=0; j<n; j++) {
  203.             cin>>niza[j];
  204.  
  205.         }
  206.  
  207.         List l=List(niza,n);
  208.  
  209.         lc.addNewList(l);
  210.     }
  211.  
  212.  
  213.     int testCase;
  214.     cin>>testCase;
  215.  
  216.     if (testCase==1) {
  217.         cout<<"Test case for operator ="<<endl;
  218.         ListContainer lc1;
  219.         lc1.print();
  220.         cout<<lc1.sum()<<" "<<lc.sum()<<endl;
  221.         lc1=lc;
  222.         lc1.print();
  223.         cout<<lc1.sum()<<" "<<lc.sum()<<endl;
  224.  
  225.     } else {
  226.         lc.print();
  227.     }
  228. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement