Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Lab_11.cpp
- #include "stdafx.h"
- #include <iostream>
- #include <ctime>
- using namespace std;
- template <typename T>
- class Vector
- {
- public:
- Vector(int s, T k = 0)
- {
- size = s;
- data = new T[size];
- for (int i = 0; i<size; i++)
- data[i] = k;
- }
- //конструктор копирования
- Vector(const Vector<T>&a)
- {
- size = a.size;
- data = new int[size];
- for (int i = 0; i<size; i++)
- data[i] = a.data[i];
- }
- ~Vector()
- {
- delete[]data;
- data = 0;
- }
- //оператор присваивания
- Vector<T> &operator=(const Vector<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 << "Error" << endl;
- }
- //операция для сложения векторов
- Vector<T> operator+(const Vector<T> &k)
- {
- Vector<T> temp(size);
- for (int i = 0; i < size; i++)
- temp.data[i] = data[i] + k.data[i];
- return temp;
- }
- //операция для добавления константы
- Vector<T> operator+(int value)
- {
- Vector<T> temp(size);
- for (int i = 0; i < size; i++)
- temp.data[i] = data[i] + value;
- return temp;
- }
- //перегруженные операции ввода-вывода
- template <typename J>
- friend ostream& operator<<(ostream& out, Vector<J> &a)
- {
- for (int i = 0; i<a.size; ++i)
- out << a.data[i] << " ";
- return out;
- }
- template <typename J>
- friend istream& operator >> (istream& in, Vector<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 Time
- {
- public:
- Time() {};
- Time(T1 f, T2 s)
- {
- Minutes = f;
- Seconds = s;
- }
- T1 Minutes;
- T2 Seconds;
- ~Time() { Minutes = 0; Seconds = 0; };
- //перегруженные операции ввода-вывода
- template <class J1, class J2>
- friend ostream& operator << (ostream& out, Time<J1, J2> &a)
- {
- out << a.Minutes << ":" << a.Seconds;
- return out;
- }
- template <class J1, class J2>
- friend istream& operator >> (istream& in, Time<J1, J2> &a)
- {
- cout << "Минуты:";
- in >> a.Minutes;
- cout << "Секунды:";
- in >> a.Seconds;
- return in;
- }
- };
- int main()
- {
- setlocale(LC_ALL, "rus");
- srand(time(NULL));
- int size;
- cout << "Введите размерность вектора A и B: ";
- cin >> size;
- Vector<int> A(size);
- cout << "Введите " << size << " чисел вектора A\n";
- cin >> A;
- cout << "Введенный вектор A: " << A << endl;
- int value;
- cout << "---Добавление к вектору А константы---" << endl;
- cout << "Введите число:";
- cin >> value;
- A = A+value;
- cout << "Вектор A после добавления константы: " << A << endl;
- Vector<int> B(size);
- cout << "Введите " << size << " чисел вектора B\n";
- cin >> B;
- cout << "---Вектор B после добавления к нему вектора А---" << endl;
- B = B + A;
- cout << B << endl;
- cout << "---Ввод чисел для Time(int, int)---" << endl;
- Time<int, int> MyTime;
- cin >> MyTime;
- cout << MyTime;
- cout << endl;
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment