Advertisement
Xom9ik

Lab_11/6 var (IIl semester)

Dec 10th, 2017
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.17 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include <ctime>
  4.  
  5. using namespace std;
  6.  
  7. template <typename T>
  8. class Vector
  9. {
  10. public:
  11.     Vector(int s, T k = 0)
  12.     {
  13.         size = s;
  14.         data = new T[size];
  15.         for (int i = 0; i < size; i++)
  16.             data[i] = k;
  17.     }
  18.     //конструктор копирования
  19.     Vector(const Vector<T> &a)
  20.     {
  21.         size = a.size;
  22.         data = new int[size];
  23.         for (int i = 0; i<size; i++)
  24.             data[i] = a.data[i];
  25.     }
  26.     ~Vector()
  27.     {
  28.         delete[]data;
  29.         data = 0;
  30.     }
  31.     int len()
  32.     {
  33.         return size;
  34.     }
  35.     //оператор присваивания
  36.     Vector<T> &operator = (const Vector<T> &a)
  37.     {
  38.         if (this == &a)
  39.             return *this;
  40.         size = a.size;
  41.         if (data != 0)
  42.             delete[]data;
  43.         data = new int[size];
  44.         for (int i = 0; i<size; i++)
  45.             data[i] = a.data[i];
  46.         return *this;
  47.     }
  48.     //операция доступа по индексу
  49.     T &operator[](int index)
  50.     {
  51.         if (index < size)
  52.             return data[index];
  53.         else
  54.             cout << "Ошибка" << endl;
  55.     }
  56.     int &operator() ()
  57.     {
  58.         return size;
  59.     }
  60.     //операция для сложения векторов
  61.     Vector<T> operator+(Vector<T> add)
  62.     {
  63.         Vector<T> temp(size+add.size);
  64.         for (int i = 0; i < size; i++)
  65.             temp.data[i] = data[i];
  66.         for (int i = size; i < size + add.size; i++)
  67.             temp.data[i] = add.data[i- size];
  68.         size += add.size;
  69.         return temp;
  70.     }
  71.     //перегруженные операции ввода-вывода
  72.     template <typename J>
  73.     friend ostream& operator << (ostream& out, Vector<J> &a)
  74.     {
  75.         for (int i = 0; i < a.size; ++i)
  76.             out << a.data[i] << " ";
  77.         return out;
  78.     }
  79.     template <typename J>
  80.     friend istream& operator >> (istream& in, Vector<J> &a)
  81.     {
  82.         for (int i = 0; i< a.size; ++i)
  83.             in >> a.data[i];
  84.         return in;
  85.     }
  86.  
  87. private:
  88.     int size;
  89.     T *data;
  90. };
  91.  
  92. template <class T1, class T2>
  93. class Cash
  94. {
  95. public:
  96.     Cash() {};
  97.     Cash(T1 f, T2 s)
  98.     {
  99.         Money = f;
  100.         Coin = s;
  101.     }
  102.     T1 Money;
  103.     T2 Coin;
  104.     ~Cash() { Money = 0; Coin = 0; };
  105.     //перегруженные операции ввода-вывода
  106.     template <class J1, class J2>
  107.     friend ostream& operator << (ostream& out, Cash<J1, J2> &a)
  108.     {
  109.         out << a.Money << "," << a.Coin;
  110.         return out;
  111.     }
  112.     template <class J1, class J2>
  113.     friend istream& operator >> (istream& in, Cash<J1, J2> &a)
  114.     {
  115.         cout << "Рубли:";
  116.         in >> a.Money;
  117.         cout << "Монеты:";
  118.         in >> a.Coin;
  119.         return in;
  120.     }
  121. };
  122.  
  123. int main()
  124. {
  125.     setlocale(LC_ALL, "rus");
  126.     int size;
  127.     cout << "Введите размерность вектора A и B: ";
  128.     cin >> size;
  129.  
  130.     Vector<int> A(size);
  131.     cout << "Введите " << size << " чисел вектора A\n";
  132.     cin >> A;
  133.     cout << "Введенный вектор A: " << A << endl;
  134.  
  135.     Vector<int> B(size);
  136.     cout << "Введите " << size << " чисел вектора B\n";
  137.     cin >> B;
  138.     B = B + A;
  139.     cout << "---Вектор B после добавления к нему вектора А---" << endl;
  140.     cout << B << endl;
  141.  
  142.     cout << "Размерность вектора B стала =" << B() << endl;
  143.  
  144.     cout << "---Ввод чисел для Cash(int, int)---" << endl;
  145.     Cash<int, int> MyCash;
  146.     cin >> MyCash;
  147.     cout << MyCash;
  148.     cout << endl;
  149.     system("pause");
  150. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement