#include <iostream>
#include <time.h>
#include <stdlib.h>
using namespace std;
template <class T>
class lab2
{
public:
lab2();
lab2(int);
lab2(const lab2&);
~lab2(){dec();};
public:
void print();
void input(T, int);
T get(int);
T func1();
T func2();
int get_len(){return len;};
void inc(){++counter();};
void dec(){--counter();};
static int copies(){return counter();};
private:
T* arr;
int len;
static int& counter(){static int c=0; return c;};
};
template<class T>
lab2<T>::lab2()
{
len=10;
arr=new T[len]{0};
inc();
}
template <class T>
lab2<T>::lab2(int si)
{
if (si>0)
{
len=si;
}
else
{
len=10;
}
arr=new T[len]{0};
inc();
}
template<class T>
lab2<T>::lab2(const lab2& obj)
{
len=obj.len;
arr=new T[len];
for(int i=0;i,len;i++)
{
arr[i]=obj.arr[i];
}
inc();
}
template <class T>
void lab2<T>::print()
{
cout<<"Списко элементов массива (индекс -> значение)\n";
for(int i=0; i<len; i++)
{
cout<<i<<" -> " <<arr[i]<<"\n";
}
}
template<class T>
void lab2<T>::input(T ell, int ind)
{
if(ind<len&&ind>=0)
{
arr[ind]=ell;
}
}
template <class T>
T lab2<T>::get(int ind)
{
if(ind<0&&ind>=0)
{
return arr[ind];
}
}
template<class T>
T lab2<T>::func1()
{
T summ=0;
for (int i=0;i<get_len();i+=2)
{
summ+=get(i);
}
return summ;
}
template<class T>
T lab2<T>::func2()
{
T summ=0;
int ind1=-1;
int ind2=-1;
for(int i=0;i<get_len();i++)
{
if (get(i)<0)
{
if(ind1==-1)
{
ind1=i;
}
else
{
if(ind2==-1)
{
ind2=i;
}
else
{
break;
}
}
}
}
if(ind1!=-1&&ind2!=-1)
{
ind1++;
for(int i=ind1;i<ind2;i++)
{
summ+=get(i);
}
}
return summ;
}
int main()
{
setlocale(LC_ALL,"Rus");
cout<<"Лабораторная работа 2\n";
cout<<"Создание и заполение массива случайными числами\n";
cout<<"Тип данных INT\nРазмер 20 элементов\n";
int len=20;
srand (time(NULL));
lab2 <int> obj(len);
for (int i=0;i<obj.get_len();i++)
{
obj.input((int)(rand() % 2001 + (-1000)),i);
}
obj.print();
cout<<"Сумма элементов масива с нечётными номерами: "<<""<<"\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dGltZS5oPgojaW5jbHVkZSA8c3RkbGliLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCnRlbXBsYXRlIDxjbGFzcyBUPgpjbGFzcyBsYWIyCnsKcHVibGljOgogICAgbGFiMigpOwogICAgbGFiMihpbnQpOwogICAgbGFiMihjb25zdCBsYWIyJik7CiAgICB+bGFiMigpe2RlYygpO307CgpwdWJsaWM6CiAgICB2b2lkIHByaW50KCk7CiAgICB2b2lkIGlucHV0KFQsIGludCk7CiAgICBUIGdldChpbnQpOwogICAgVCBmdW5jMSgpOwogICAgVCBmdW5jMigpOwogICAgaW50IGdldF9sZW4oKXtyZXR1cm4gbGVuO307CiAgICB2b2lkIGluYygpeysrY291bnRlcigpO307CiAgICB2b2lkIGRlYygpey0tY291bnRlcigpO307CiAgICBzdGF0aWMgaW50IGNvcGllcygpe3JldHVybiBjb3VudGVyKCk7fTsKcHJpdmF0ZToKICAgIFQqIGFycjsKICAgIGludCBsZW47CiAgICBzdGF0aWMgaW50JiBjb3VudGVyKCl7c3RhdGljIGludCBjPTA7IHJldHVybiBjO307CgoKfTsKCnRlbXBsYXRlPGNsYXNzIFQ+CmxhYjI8VD46OmxhYjIoKQp7CiAgICBsZW49MTA7CiAgICBhcnI9bmV3IFRbbGVuXXswfTsKICAgIGluYygpOwp9CgoKdGVtcGxhdGUgPGNsYXNzIFQ+CmxhYjI8VD46OmxhYjIoaW50IHNpKQp7CiAgICBpZiAoc2k+MCkKICAgIHsKICAgICAgICBsZW49c2k7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgbGVuPTEwOwogICAgfQogICAgYXJyPW5ldyBUW2xlbl17MH07CiAgICBpbmMoKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KbGFiMjxUPjo6bGFiMihjb25zdCBsYWIyJiBvYmopCnsKICAgIGxlbj1vYmoubGVuOwogICAgYXJyPW5ldyBUW2xlbl07CiAgICBmb3IoaW50IGk9MDtpLGxlbjtpKyspCiAgICB7CiAgICAgICAgYXJyW2ldPW9iai5hcnJbaV07CiAgICB9CiAgICBpbmMoKTsKfQoKdGVtcGxhdGUgPGNsYXNzIFQ+CnZvaWQgbGFiMjxUPjo6cHJpbnQoKQp7CiAgICBjb3V0PDwi0KHQv9C40YHQutC+INGN0LvQtdC80LXQvdGC0L7QsiDQvNCw0YHRgdC40LLQsCAo0LjQvdC00LXQutGBIC0+INC30L3QsNGH0LXQvdC40LUpXG4iOwogICAgZm9yKGludCBpPTA7IGk8bGVuOyBpKyspCiAgICB7CiAgICAgICAgY291dDw8aTw8IiAtPiAiIDw8YXJyW2ldPDwiXG4iOwogICAgfQp9CgoKdGVtcGxhdGU8Y2xhc3MgVD4Kdm9pZCBsYWIyPFQ+OjppbnB1dChUIGVsbCwgaW50IGluZCkKewogICAgaWYoaW5kPGxlbiYmaW5kPj0wKQogICAgewogICAgICAgIGFycltpbmRdPWVsbDsKICAgIH0KfQoKdGVtcGxhdGUgPGNsYXNzIFQ+ClQgbGFiMjxUPjo6Z2V0KGludCBpbmQpCnsKICAgIGlmKGluZDwwJiZpbmQ+PTApCiAgICB7CiAgICAgICAgcmV0dXJuIGFycltpbmRdOwogICAgfQp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgpUIGxhYjI8VD46OmZ1bmMxKCkKewogICAgVCBzdW1tPTA7CiAgICBmb3IgKGludCBpPTA7aTxnZXRfbGVuKCk7aSs9MikKICAgIHsKICAgICAgICBzdW1tKz1nZXQoaSk7CiAgICB9CiAgICByZXR1cm4gc3VtbTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KVCBsYWIyPFQ+OjpmdW5jMigpCnsKICAgIFQgc3VtbT0wOwogICAgaW50IGluZDE9LTE7CiAgICBpbnQgaW5kMj0tMTsKICAgIGZvcihpbnQgaT0wO2k8Z2V0X2xlbigpO2krKykKICAgIHsKICAgICAgICBpZiAoZ2V0KGkpPDApCiAgICAgICAgewogICAgICAgICAgICBpZihpbmQxPT0tMSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaW5kMT1pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYoaW5kMj09LTEpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaW5kMj1pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgaWYoaW5kMSE9LTEmJmluZDIhPS0xKQogICAgewogICAgICAgIGluZDErKzsKICAgICAgICBmb3IoaW50IGk9aW5kMTtpPGluZDI7aSsrKQogICAgICAgIHsKICAgICAgICAgICAgc3VtbSs9Z2V0KGkpOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gc3VtbTsKfQoKCgppbnQgbWFpbigpCnsKICAgIHNldGxvY2FsZShMQ19BTEwsIlJ1cyIpOwoKICAgIGNvdXQ8PCLQm9Cw0LHQvtGA0LDRgtC+0YDQvdCw0Y8g0YDQsNCx0L7RgtCwIDJcbiI7CiAgICBjb3V0PDwi0KHQvtC30LTQsNC90LjQtSDQuCDQt9Cw0L/QvtC70LXQvdC40LUg0LzQsNGB0YHQuNCy0LAg0YHQu9GD0YfQsNC50L3Ri9C80Lgg0YfQuNGB0LvQsNC80LhcbiI7CiAgICBjb3V0PDwi0KLQuNC/INC00LDQvdC90YvRhSBJTlRcbtCg0LDQt9C80LXRgCAyMCDRjdC70LXQvNC10L3RgtC+0LJcbiI7CiAgICBpbnQgbGVuPTIwOwogICAgc3JhbmQgKHRpbWUoTlVMTCkpOwogICAgbGFiMiA8aW50PiBvYmoobGVuKTsKCiAgICBmb3IgKGludCBpPTA7aTxvYmouZ2V0X2xlbigpO2krKykKICAgIHsKICAgICAgICBvYmouaW5wdXQoKGludCkocmFuZCgpICUgMjAwMSArICgtMTAwMCkpLGkpOwogICAgfQoKICAgIG9iai5wcmludCgpOwogICAgY291dDw8ItCh0YPQvNC80LAg0Y3Qu9C10LzQtdC90YLQvtCyINC80LDRgdC40LLQsCDRgSDQvdC10YfRkdGC0L3Ri9C80Lgg0L3QvtC80LXRgNCw0LzQuDogIjw8IiI8PCJcbiI7CgoKICAgIHJldHVybiAwOwp9CgoKCgo=