View difference between Paste ID: h19XuN7j and bSQtHWiE
SHOW: | | - or go back to the newest paste.
1-
#pragma once
1+
2
#include <iostream>
3
#include <iostream>
4
#include <string>
5
#include <iomanip>
6
#include <exception>
7
8
9
10
namespace labworks
11
{
12
	class MyException : public std::exception {
13
	private:
14
		int _id;
15
		std::string msg;
16
	public:
17
		MyException(const char *Message, int ID) 
18
		: _id(ID)
19
		, msg(Message)
20
		{
21
		}
22
		const char*  what() const throw() override 
23
		{
24
			return msg.c_str();
25
		}
26
		
27
		int ID() const
28
		{
29
			return _id;
30
		}
31
	};
32
	
33
	class Matrix
34
	{
35
	private:
36
		int _rows;
37
		int _cols;
38
		int _id;
39
		double* _elements;
40
		static int s_count;
41
	public:
42
		Matrix();
43
		Matrix(double Skalar);
44
		Matrix(const Matrix& A);
45
		Matrix(Matrix&& A) noexcept;
46
47
		explicit Matrix(int Rows);
48
		Matrix(int Rows, double Value);
49
		Matrix(int Rows, int Cols);
50
		Matrix(int Rows, int Cols, double Value);
51
52
		Matrix(int Rows, double(*func) (int, int));
53
		Matrix(int Rows, int Cols, double(*func) (int, int));
54
		Matrix(int Rows, const double* Massive, int Size = -1, bool iter = false);
55
		Matrix(int Rows, int Cols, const double* Massive, int Size = -1, bool iter = false);
56
57
		int GetRows() const;
58
		int GetCols() const;
59
		int GetId() const;
60
		static int GetCount();
61-
			class MyException;
61+
62
63
		int SetRows(int Rows);
64
		int SetCols(int Cols);
65
		int SetSize(int Rows, int Cols);
66
67
		bool MultCheck(const Matrix& B) const;
68
		bool SummCheck(const Matrix& B) const;
69
		double SearchMax() const;
70
		double SearchMin() const;
71
72
73
		//operator peregruzki
74
		Matrix& operator = (const Matrix& A);
75
		Matrix& operator += (const Matrix& A);
76
		Matrix& operator -= (const Matrix& A);
77
		Matrix& operator *= (const Matrix& A);
78
		Matrix& operator *= (double Skalar);
79
		Matrix& operator = (double Skalar);
80
81
		class Pointer
82
		{
83
		public:
84
			
85
			Pointer(double* A, int Size, int ID) :
86
				a(A), size(Size), id(ID)
87
			{
88
			}
89
			double operator [] (int i) const
90
			{
91
				if (size > i)
92
					return a[i];
93
				else
94
					throw MyException("Array index out of bounds!", id);
95
			}
96
			double& operator [] (int i)
97
			{
98
				if (size > i)
99
					return a[i];
100
				else
101
					throw MyException("Array index out of bounds!", id);
102
			}
103
104
			double* a;
105
			int size;
106-
		MyException(const char *Message, int ID) :
106+
107-
			std::exception(Message), _id(ID)
107+
108
109
		Pointer operator[] (int index);
110
		const Pointer operator[] (int index) const;
111
		double& operator() (int i, int j);
112
		double operator() (int i, int j) const;
113
		friend std::ostream& operator <<(std::ostream& s, const Matrix& A);
114
115
		~Matrix();
116
117
	};
118
119
	Matrix operator + (const Matrix& A, const Matrix& B);
120
	Matrix operator - (const Matrix& A, const Matrix& B);
121
	Matrix operator * (const Matrix& A, const Matrix& B);
122
	Matrix operator * (const Matrix& A, double Skalar);
123
	Matrix operator * (double Skalar, const Matrix& A);
124
125
	
126
}