Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <iostream>
- #include <ctime>
- using namespace std;
- template <typename T>
- class Multiplicity
- {
- public:
- Multiplicity(int s, T k = 0)
- {
- size = s;
- data = new T[size];
- for (int i = 0; i < size; i++)
- data[i] = k;
- }
- //конструктор копирования
- Multiplicity(const Multiplicity<T> &a)
- {
- size = a.size;
- data = new int[size];
- for (int i = 0; i<size; i++)
- data[i] = a.data[i];
- }
- ~Multiplicity()
- {
- delete[]data;
- data = 0;
- }
- int len()
- {
- return size;
- }
- //оператор присваивания
- Multiplicity<T> &operator = (const Multiplicity<T> &a)
- {
- if (this == &a)
- return *this;
- size = a.size;
- if (data != 0)
- delete[]data;
- data = new int[size];
- for (int i = 0; i<size; i++)
- data[i] = a.data[i];
- return *this;
- }
- //операция доступа по индексу
- T &operator[](int index)
- {
- if (index < size)
- return data[index];
- else
- cout << "Ошибка" << endl;
- }
- int &operator() ()
- {
- return size;
- }
- //операция проверки на равенство двух множеств
- bool operator == (Multiplicity<T> tmpMulticipility)
- {
- bool temp = false;
- for (int i = 0; i < size; i++)
- if (data[i] == tmpMulticipility.data[i])
- temp = true;
- else
- return false;
- return temp;
- }
- //операция проверки принадлежности числа множеству
- bool operator > (int value)
- {
- for (int i = 0; i < size; i++)
- if (data[i] == value)
- return true;
- else if(i==size-1)
- return false;
- }
- //перегруженные операции ввода-вывода
- template <typename J>
- friend ostream& operator << (ostream& out, Multiplicity<J> &a)
- {
- for (int i = 0; i < a.size; ++i)
- out << a.data[i] << " ";
- return out;
- }
- template <typename J>
- friend istream& operator >> (istream& in, Multiplicity<J> &a)
- {
- for (int i = 0; i< a.size; ++i)
- in >> a.data[i];
- return in;
- }
- private:
- int size;
- T *data;
- };
- template <class T1, class T2>
- class Cash
- {
- public:
- Cash() {};
- Cash(T1 f, T2 s)
- {
- Money = f;
- Coin = s;
- }
- T1 Money;
- T2 Coin;
- ~Cash() { Money = 0; Coin = 0; };
- //перегруженные операции ввода-вывода
- template <class J1, class J2>
- friend ostream& operator << (ostream& out, Cash<J1, J2> &a)
- {
- out << a.Money << "," << a.Coin;
- return out;
- }
- template <class J1, class J2>
- friend istream& operator >> (istream& in, Cash<J1, J2> &a)
- {
- cout << "Рубли:";
- in >> a.Money;
- cout << "Монеты:";
- in >> a.Coin;
- return in;
- }
- };
- int main()
- {
- setlocale(LC_ALL, "rus");
- int size;
- cout << "Введите размерность множества A и B: ";
- cin >> size;
- Multiplicity<int> A(size);
- cout << "Введите " << size << " чисел множества A\n";
- cin >> A;
- cout << "Введенный множество A: " << A << endl;
- Multiplicity<int> B(size);
- cout << "Введите " << size << " чисел множества B\n";
- cin >> B;
- cout << "---Проверка множеств A и B---" << endl;
- cout << "Результат проверки = " << (A == B) << endl;
- int value;
- cout << "Введите число для приверки принадлежности числа множеству: ";
- cin >> value;
- cout << "Наличие " << value << " в множестве A = " << (A > value) << endl;
- cout << "Наличие " << value << " в множестве B = " << (B > value) << endl;
- cout << "---Ввод чисел для Cash(int, int)---" << endl;
- Cash<int, int> MyCash;
- cin >> MyCash;
- cout << MyCash;
- cout << endl;
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement