Advertisement
lil_SV

Alina_Lab_1

Dec 2nd, 2022
587
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.05 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <cmath>
  4.  
  5. using namespace std;
  6.  
  7. class array {
  8. public:
  9.     // Конструктор
  10.     array(int begin, int end) : begin(begin), end(end) {
  11.         if (begin > end) {
  12.             exit(1);
  13.         }
  14.         a = new int[end - begin];
  15.         size = end-begin;
  16.     }
  17.  
  18.     // ввод элементов массива с клавиатуры
  19.     void input() {
  20.         for (int i=0;i<size;++i)cin>>a[i];
  21.     }
  22.  
  23.     // вывод элементов массива на экран дисплея
  24.     void out() {
  25.         for (int i=0;i<size;++i)cout<<a[i]<<' ';
  26.         cout << '\n';
  27.     }
  28.  
  29.     // добавка элемента в конец занятой части массива
  30.     void push_back(int q) {
  31.         a[size - 1] = q;
  32.     }
  33.  
  34.     // умножение всех элементов массива на заданное число
  35.     void mul(int q) {
  36.         for (int i=0;i<size;++i)a[i]*=q;
  37.     }
  38.  
  39.     // вычисление произведения элементов массива
  40.     int get_mul() {
  41.         int answer = 1;
  42.         for (int i=0;i<size;++i)answer*=a[i];
  43.         return answer;
  44.     }
  45.  
  46.     // вычисление разности между максимальным и минимальным значениями элементов массива
  47.     int get_abs() {
  48.         int min = a[0];
  49.         int max = min;
  50.         for (int i=0;i<size;++i) {
  51.             int x=a[i];
  52.             if (x < min)min = x;
  53.             if (x > max)max = x;
  54.         }
  55.         return max - min;
  56.     }
  57.  
  58.     // копирование массивов
  59.     void copy(array Array) {
  60.         begin = Array.begin;
  61.         end = Array.end;
  62.         size = Array.size;
  63.         delete a;
  64.         a = new int[size];
  65.         for(int i=0;i<size;++i)a[i]=Array.a[i];
  66.     }
  67.  
  68. private:
  69.     int begin, end;
  70.     int * a;
  71.     int size;
  72. };
  73.  
  74. class complex {
  75. public:
  76.     complex(double re, double im) : re(re), im(im), m(sqrt(re * re + im * im)) {}
  77.  
  78.     void print() {
  79.         cout << re << " + " << im << "i, mod = " << m << '\n';
  80.     }
  81.  
  82.     void plus(complex a) {
  83.         re += a.re;
  84.         im += a.im;
  85.         m = sqrt(re * re + im * im);
  86.     }
  87.  
  88.     void mul(complex a) {
  89.         double nre = re * a.re - im * a.im;
  90.         double nim = re * a.im + im * a.re;
  91.         re = nre;
  92.         im = nim;
  93.         m = sqrt(re * re + im * im);
  94.     }
  95.  
  96.     void minus(complex a) {
  97.         a.mul(complex(-1, 0));
  98.         this->plus(a);
  99.     }
  100.  
  101.     void del(complex a) {
  102.         double nre = (re * a.re + im * a.im) / (a.re * a.re + a.im * a.im);
  103.         double nim = (im * a.re - re * a.im) / (a.re * a.re + a.im * a.im);
  104.         re = nre;
  105.         im = nim;
  106.         m = sqrt(re * re + im * im);
  107.     }
  108.  
  109. private:
  110.     double re, im, m;
  111. };
  112.  
  113. int main() {
  114.     if(1) {
  115.         array a(3, 10);
  116.         cout << "Введите массив размера 7\n";
  117.         a.input();
  118.         cout << "Первоначальный массив\n";
  119.         a.out();
  120.         cout << "Произведение элементов массива " << a.get_mul() << endl;
  121.         cout << "Разница между минимальным и максимальным элементом " << a.get_abs() << endl;
  122.         a.mul(2);
  123.         cout << "Массив, умноженный на 2\n";
  124.         a.out();
  125.         cout << "Копирование массива\n";
  126.         array b(1, 2);
  127.         b.copy(a);
  128.         b.out();
  129.         cout<< "Добавка элемента в конец занятой части массива\n";
  130.         b.push_back(-999);
  131.         b.out();
  132.     }
  133.     if(1){
  134.         cout<<"\nТест Complex\n";
  135.         complex a(5, 6);
  136.         complex b(3,8);
  137.         a.print();
  138.         b.print();
  139.         cout<<"a=a+b\n";
  140.         a.plus(b);
  141.         a.print();
  142.         cout<<"a=a-b\n";
  143.         a.minus(b);
  144.         a.print();
  145.         cout<<"a=a*b\n";
  146.         a.mul(b);
  147.         a.print();
  148.         cout<<"a=a/b\n";
  149.         a.del(b);
  150.         a.print();
  151.     }
  152.     return 0;
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement