Advertisement
lil_SV

Alina_Lab1

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