fork download
  1. #include <iostream>
  2. #include <time.h>
  3. #include <stdlib.h>
  4.  
  5. using namespace std;
  6.  
  7.  
  8. template <class T>
  9. class lab2
  10. {
  11. public:
  12. lab2();
  13. lab2(int);
  14. lab2(const lab2&);
  15. ~lab2(){dec();};
  16.  
  17. public:
  18. void print();
  19. void input(T, int);
  20. T get(int);
  21. T func1();
  22. T func2();
  23. int get_len(){return len;};
  24. void inc(){++counter();};
  25. void dec(){--counter();};
  26. static int copies(){return counter();};
  27. private:
  28. T* arr;
  29. int len;
  30. static int& counter(){static int c=0; return c;};
  31.  
  32.  
  33. };
  34.  
  35. template<class T>
  36. lab2<T>::lab2()
  37. {
  38. len=10;
  39. arr=new T[len]{0};
  40. inc();
  41. }
  42.  
  43.  
  44. template <class T>
  45. lab2<T>::lab2(int si)
  46. {
  47. if (si>0)
  48. {
  49. len=si;
  50. }
  51. else
  52. {
  53. len=10;
  54. }
  55. arr=new T[len]{0};
  56. inc();
  57. }
  58.  
  59. template<class T>
  60. lab2<T>::lab2(const lab2& obj)
  61. {
  62. len=obj.len;
  63. arr=new T[len];
  64. for(int i=0;i,len;i++)
  65. {
  66. arr[i]=obj.arr[i];
  67. }
  68. inc();
  69. }
  70.  
  71. template <class T>
  72. void lab2<T>::print()
  73. {
  74. cout<<"Списко элементов массива (индекс -> значение)\n";
  75. for(int i=0; i<len; i++)
  76. {
  77. cout<<i<<" -> " <<arr[i]<<"\n";
  78. }
  79. }
  80.  
  81.  
  82. template<class T>
  83. void lab2<T>::input(T ell, int ind)
  84. {
  85. if(ind<len&&ind>=0)
  86. {
  87. arr[ind]=ell;
  88. }
  89. }
  90.  
  91. template <class T>
  92. T lab2<T>::get(int ind)
  93. {
  94. if(ind<0&&ind>=0)
  95. {
  96. return arr[ind];
  97. }
  98. }
  99.  
  100. template<class T>
  101. T lab2<T>::func1()
  102. {
  103. T summ=0;
  104. for (int i=0;i<get_len();i+=2)
  105. {
  106. summ+=get(i);
  107. }
  108. return summ;
  109. }
  110.  
  111. template<class T>
  112. T lab2<T>::func2()
  113. {
  114. T summ=0;
  115. int ind1=-1;
  116. int ind2=-1;
  117. for(int i=0;i<get_len();i++)
  118. {
  119. if (get(i)<0)
  120. {
  121. if(ind1==-1)
  122. {
  123. ind1=i;
  124. }
  125. else
  126. {
  127. if(ind2==-1)
  128. {
  129. ind2=i;
  130. }
  131. else
  132. {
  133. break;
  134. }
  135. }
  136. }
  137. }
  138. if(ind1!=-1&&ind2!=-1)
  139. {
  140. ind1++;
  141. for(int i=ind1;i<ind2;i++)
  142. {
  143. summ+=get(i);
  144. }
  145. }
  146.  
  147. return summ;
  148. }
  149.  
  150.  
  151.  
  152. int main()
  153. {
  154. setlocale(LC_ALL,"Rus");
  155.  
  156. cout<<"Лабораторная работа 2\n";
  157. cout<<"Создание и заполение массива случайными числами\n";
  158. cout<<"Тип данных INT\nРазмер 20 элементов\n";
  159. int len=20;
  160. srand (time(NULL));
  161. lab2 <int> obj(len);
  162.  
  163. for (int i=0;i<obj.get_len();i++)
  164. {
  165. obj.input((int)(rand() % 2001 + (-1000)),i);
  166. }
  167.  
  168. obj.print();
  169. cout<<"Сумма элементов масива с нечётными номерами: "<<""<<"\n";
  170.  
  171.  
  172. return 0;
  173. }
  174.  
  175.  
  176.  
  177.  
  178.  
Success #stdin #stdout 0s 17712KB
stdin
Standard input is empty
stdout
Лабораторная работа 2
Создание и заполение массива случайными числами
Тип данных INT
Размер 20 элементов
Списко элементов массива (индекс -> значение)
0 -> 806
1 -> 924
2 -> -191
3 -> 253
4 -> -654
5 -> -20
6 -> -211
7 -> 373
8 -> 0
9 -> -594
10 -> 382
11 -> -596
12 -> -295
13 -> -934
14 -> -783
15 -> -410
16 -> 770
17 -> -845
18 -> 174
19 -> -83
Сумма элементов масива с нечётными номерами: