Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<cstring>
- #include<cmath>
- #include <cstdlib>
- using namespace std;
- class List {
- int *niza;
- int number;
- void kopi(const List &l) {
- this->number=l.number;
- this->niza=new int[number];
- for(int i=0; i<number; i++) {
- this->niza[i]=l.niza[i];
- }
- }
- public:
- List() {
- this->number=0;
- this->niza=new int[number];
- for(int i=0; i<number; i++) {
- this->niza[i]=niza[i];
- }
- }
- List(const List &l) {
- kopi(l);
- }
- List &operator=(const List &l) {
- if(this!=&l) {
- delete [] niza;
- kopi(l);
- }
- return *this;
- }
- ~List() {
- delete [] niza;
- }
- int sum() const {
- int suma=0;
- for(int i=0; i<number; i++) {
- suma+=this->niza[i];
- }
- return suma;
- }
- double average() const {
- return (float)sum()/number;
- }
- bool operator==(List &l) {
- return this->sum()==l.sum();
- }
- friend ostream &operator<<(ostream &out, const List &l) {
- out<<l.number<<": ";
- for(int i=0; i<l.number; i++) {
- out<<l.niza[i]<<" ";
- }
- out<<"sum: "<<l.sum()<<" average: "<<l.average()<<endl;
- return out;
- }
- friend istream &operator>>(istream &in,List &l) {
- in>>l.number;
- int *newlist = new int[l.number];
- l.niza=newlist;
- for(int i=0; i<l.number; i++) {
- in>>l.niza[i];
- }
- return in;
- }
- friend List operator+(const List &l1,const List &l2) {
- List l3(l1);
- if(l1.number==l2.number) {
- for(int i=0; i<l1.number; i++)
- l3.niza[i]+=l2.niza[i];
- return l3;
- } else {
- cout<<"The list is empty";
- exit(-1);
- }
- }
- friend List operator-(const List &l1,const List &l2) {
- List l3(l1);
- if(l1.number==l2.number) {
- for(int i=0; i<l1.number; i++)
- l3.niza[i]-=l2.niza[i];
- return l3;
- } else {
- cout<<"The list is empty";
- exit(-1);
- }
- }
- //operator ++ prefix
- List& operator++ () {
- for(int i=0; i<number; i++) {
- niza[i]++;
- }
- return *this;
- }
- //operator -- postfix
- List operator--(int) {
- List l(*this);
- for(int i=0; i<number; i++) {
- niza[i]--;
- }
- return l;
- }
- List &operator+=(int num) {
- int counter=0;
- for(int i=0; i<number; i++) {
- if(niza[i]==num)
- counter++;
- }
- int *tmp = new int[number+1];
- if(counter<2) {
- for(int i=0; i<number; i++) {
- tmp[i]=niza[i];
- }
- delete [] niza;
- tmp[number++]=num;
- niza=tmp;
- }
- return *this;
- }
- int &operator[] (int i) {
- if(i>=0&&i<number)
- return niza[i];
- else
- exit(-1);
- }
- List addList(List &l) {
- List tmp;
- for(int i=0; i<number; i++) {
- tmp+=niza[i];
- }
- for(int i=0; i<l.number; i++) {
- tmp+=l.niza[i];
- }
- return tmp;
- }
- };
- int main() {
- int testCase;
- cin>>testCase;
- if (testCase==1) {
- cout<<"Testiranje na operatorite << i >>"<<endl;
- List l;
- cin >> l;
- cout<< l;
- } else if (testCase == 2) {
- cout<<"Testiranje na operatorot = za klasata List"<<endl;
- List l1;
- cin >> l1;
- List l2;
- l2 = l1;
- cout << l2;
- } else if (testCase == 3) {
- //2 test primeri tuka
- cout << "Testiranje na operatorot +"<<endl;
- List l1,l2;
- cin >> l1;
- cin >> l2;
- List l3;
- l3 = l1+l2;
- cout << l3;
- } else if (testCase == 4) {
- cout << "Testiranje na operatorot - "<<endl;
- List l1,l2;
- cin >> l1;
- cin >> l2;
- List l3;
- l3 = l1-l2;
- cout << l3;
- } else if (testCase == 5) {
- cout << "Testiranje na operator ++ vo prefix notacija"<<endl;
- List l1;
- cin >> l1;
- cout << l1;
- cout << ++l1;
- } else if (testCase == 6) {
- cout << "Testiranje na operatorot -- vo sufix notacija"<<endl;
- List l1;
- cin >> l1;
- cout << "Pocetna vrednost: " << l1;
- List l2;
- l2 = l1--;
- cout << "Se povikuva ++ vo sufiks: " << l2;
- cout << "Posle povik: " << l1;
- } else if (testCase == 7) {
- cout << "Testiranje na operator += "<<endl;
- List l1;
- cin >> l1;
- int n;
- cin >> n;
- for (int i=0; i<n; i++) {
- int broj;
- cin >> broj;
- l1 += broj;
- }
- cout << l1;
- } else if (testCase == 8) {
- cout << "Testiranje na operatorot [ ] "<< endl;
- List l1;
- cin >> l1;
- int n;
- cin >> n;
- for (int i=0; i<n; i++) {
- int idx;
- cin >> idx;
- cout << "List["<< idx <<"] = " << l1[idx] << endl;
- }
- } else {
- //Dopolnitelno baranje
- cout <<"Testiranje na addList() metodot"<<endl;
- List l1,l2;
- cin >> l1;
- cin >> l2;
- cout << l1.addList(l2);
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment