metalni

OOP Labs 4 ListContainer

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