From 1d29a3e74eda3136e8599aaf25fc1c5b64473bab Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Sun, 29 Dec 2024 19:32:29 +0500 Subject: [PATCH 01/40] matrix.cpp --- task1/matrix.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/task1/matrix.cpp b/task1/matrix.cpp index fb3598f..61bc4d5 100644 --- a/task1/matrix.cpp +++ b/task1/matrix.cpp @@ -2,6 +2,12 @@ #include +int main() +{ + cout<<"hello world"; +} + + Matrix::Matrix(int numRows, int numCols) { // your implementation here From b868f5e673ce434d252ae632679799d360f7da74 Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Sun, 29 Dec 2024 19:39:47 +0500 Subject: [PATCH 02/40] matrix.cpp --- task1/matrix.cpp | 103 ++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 89 insertions(+), 14 deletions(-) diff --git a/task1/matrix.cpp b/task1/matrix.cpp index 61bc4d5..0d04731 100644 --- a/task1/matrix.cpp +++ b/task1/matrix.cpp @@ -1,54 +1,129 @@ #include "matrix.hpp" +#include #include -int main() -{ - cout<<"hello world"; -} - Matrix::Matrix(int numRows, int numCols) { - // your implementation here + int i; + vector lenghth(NULL,numRows); + for (i = 0; i < numCols - 1; i++) + { + mat.push_back(length); + } } void Matrix::Reset(int numRows, int numCols) { - // your implementation here + int i; + mat.resize(0); + vector length(NULL, numCols); + for (int i = 0; i < numRows - 1; i++) + { + mat.push_back(length); + } } int& Matrix::At(int row, int col) { - // your implementation here + try + { + return mat[row][col]; + } + catch (out_of_range) + { + cout << "Out of range: referring to element (" << row << ", " << col << "), but matrix size is " << mat.size() << "x" << mat[0].size(); + } } const int& Matrix::At(int row, int col) const { - // your implementation here + try + { + return mat[row][col]; + } + catch (out_of_range) + { + cout << "Out of range: referring to element (" << row << ", " << col << "), but matrix size is " << mat.size() << "x" << mat[0].size(); + } } int Matrix::GetRows() const { - // your implementation here + return mat.size(); } int Matrix::GetCols() const { - // your implementation here + return mat[0].size(); } bool Matrix::operator==(const Matrix& m2) { - // your implementation here + if (mat.size() == m2.GetRows() && mat[0].size() == m2.GetCols()) + { + for (int i = 0; i < mat.size() - 1; i++) + { + for (int j = 0; j < mat[0].size() - 1; j++) + { + if (mat[i][j] != m2.At(i, j)) + { + return false; + } + } + } + return true; + } + else { + return false; + } } bool Matrix::operator!=(const Matrix& m2) { - // your implementation here + if (mat.size() == m2.GetRows() && mat[0].size() == m2.GetCols()) + { + for (int i = 0; i < mat.size() - 1; i++) + { + for (int j = 0; j < mat[0].size() - 1; j++) + { + if (mat[i][j] != m2.At(i, j)) + { + return true; + } + } + } + return false; + } + else { + return true; + } } Matrix Matrix::operator+(const Matrix& m2) { - // your implementation here + try + { + if (mat.size() != m2.GetRows() || mat[0].size() != m2.GetCols()) + { + throw 1; + } + else + { + Matrix mres(m2.GetRows(), m2.GetCols()); + for (int i = 0; i < mres.mat.size() - 1; i++) + { + for (int j = 0; j < mres.mat[0].size() - 1; j++) + { + mres.At(i, j) = mat[i][j] + m2.At(i, j); + } + } + return mres; + } + } + catch (int e) + { + cout << "Can't sum matricies of different sizes"; + } } From e9eed930da12335e8be0a3a335071a9c3ad54ab7 Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Sun, 29 Dec 2024 19:40:40 +0500 Subject: [PATCH 03/40] matrix.cpp --- task1/matrix.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/task1/matrix.cpp b/task1/matrix.cpp index 0d04731..29bbdf1 100644 --- a/task1/matrix.cpp +++ b/task1/matrix.cpp @@ -1,6 +1,8 @@ #include "matrix.hpp" +#include +#include +#include #include - #include From 2e53305f2f5a7155974883a1cf39bc88274c83b5 Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Sun, 29 Dec 2024 19:44:14 +0500 Subject: [PATCH 04/40] matrix.hpp --- task1/matrix.hpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/task1/matrix.hpp b/task1/matrix.hpp index d314915..037c99a 100644 --- a/task1/matrix.hpp +++ b/task1/matrix.hpp @@ -2,6 +2,8 @@ class Matrix { +private: + vector> mat; public: Matrix() = default; Matrix(int numRows, int numCols); From 3ce77ec7ddde147f029a0f0b8707e455ecfb4e85 Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Sun, 29 Dec 2024 19:47:05 +0500 Subject: [PATCH 05/40] matrix.hpp --- task1/matrix.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/task1/matrix.hpp b/task1/matrix.hpp index 037c99a..34ae417 100644 --- a/task1/matrix.hpp +++ b/task1/matrix.hpp @@ -3,7 +3,7 @@ class Matrix { private: - vector> mat; + vector> mat; public: Matrix() = default; Matrix(int numRows, int numCols); From b220de91e8b5be3beb36af3d7e67a34a6bd9b66c Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Sun, 29 Dec 2024 19:47:48 +0500 Subject: [PATCH 06/40] matrix.cpp --- task1/matrix.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/task1/matrix.cpp b/task1/matrix.cpp index 29bbdf1..5dab0dd 100644 --- a/task1/matrix.cpp +++ b/task1/matrix.cpp @@ -9,7 +9,7 @@ Matrix::Matrix(int numRows, int numCols) { int i; - vector lenghth(NULL,numRows); + vector length(NULL,numRows); for (i = 0; i < numCols - 1; i++) { mat.push_back(length); From fc0676c783101bcc42aeae73eb515dd980922e38 Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Sun, 29 Dec 2024 19:50:48 +0500 Subject: [PATCH 07/40] matrix.cpp --- task1/matrix.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/task1/matrix.cpp b/task1/matrix.cpp index 5dab0dd..a15053f 100644 --- a/task1/matrix.cpp +++ b/task1/matrix.cpp @@ -8,22 +8,20 @@ Matrix::Matrix(int numRows, int numCols) { - int i; - vector length(NULL,numRows); - for (i = 0; i < numCols - 1; i++) + vector l(NULL,numRows); + for (int i = 0; i < numCols - 1; i++) { - mat.push_back(length); + mat.push_back(l); } } void Matrix::Reset(int numRows, int numCols) { - int i; mat.resize(0); - vector length(NULL, numCols); + vector l(NULL, numCols); for (int i = 0; i < numRows - 1; i++) { - mat.push_back(length); + mat.push_back(l); } } From 065e02689549e98b120a84cbcfb12cdfbe02a95a Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Mon, 30 Dec 2024 01:10:10 +0500 Subject: [PATCH 08/40] matrix.cpp --- task1/matrix.cpp | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/task1/matrix.cpp b/task1/matrix.cpp index a15053f..54e4cb5 100644 --- a/task1/matrix.cpp +++ b/task1/matrix.cpp @@ -1,18 +1,33 @@ #include "matrix.hpp" #include -#include -#include #include -#include - +#include +using namespace std; Matrix::Matrix(int numRows, int numCols) { - vector l(NULL,numRows); - for (int i = 0; i < numCols - 1; i++) - { - mat.push_back(l); - } + //вывод ошибок + if (numRows < 0) + { + cerr<<"Произошла ошибка -> количество строк не может быть меньше нуля"; + } + if (numCols < 0) + { + cerr<<"Произошла ошибка -> количество столбцев не может быть меньше нуля"; + } + + //при нуле строк или столбцев, или всё вместе + if (numRows == 0 || numCols == 0) + { + rows = 0; + cols = 0; + + } + else + { + rows = numRows; + cols = numCols; + } } void Matrix::Reset(int numRows, int numCols) From d42e0459962dedb8e355029f9e9ff06d6940be3d Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Mon, 30 Dec 2024 01:12:52 +0500 Subject: [PATCH 09/40] matrix.hpp --- task1/matrix.hpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/task1/matrix.hpp b/task1/matrix.hpp index 34ae417..66cdc8b 100644 --- a/task1/matrix.hpp +++ b/task1/matrix.hpp @@ -2,8 +2,6 @@ class Matrix { -private: - vector> mat; public: Matrix() = default; Matrix(int numRows, int numCols); @@ -17,4 +15,7 @@ class Matrix bool operator==(const Matrix& m2); bool operator!=(const Matrix& m2); Matrix operator+(const Matrix& m2); + + int rows; + int cols; }; From c9fbab7f7789b2fad600f87ea4a5521dd360c658 Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Mon, 30 Dec 2024 01:20:29 +0500 Subject: [PATCH 10/40] matrix.hpp --- task1/matrix.hpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/task1/matrix.hpp b/task1/matrix.hpp index 66cdc8b..0694d00 100644 --- a/task1/matrix.hpp +++ b/task1/matrix.hpp @@ -2,6 +2,10 @@ class Matrix { +private: + int rows; + int cols; + std::vector> mat; public: Matrix() = default; Matrix(int numRows, int numCols); @@ -16,6 +20,4 @@ class Matrix bool operator!=(const Matrix& m2); Matrix operator+(const Matrix& m2); - int rows; - int cols; }; From 4f73b65a74e59acd0f90a15e0ab28a072287d9db Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Mon, 30 Dec 2024 01:36:47 +0500 Subject: [PATCH 11/40] matrix.cpp --- task1/matrix.cpp | 202 +++++++++++++++++++++++++++++------------------ 1 file changed, 125 insertions(+), 77 deletions(-) diff --git a/task1/matrix.cpp b/task1/matrix.cpp index 54e4cb5..c83f057 100644 --- a/task1/matrix.cpp +++ b/task1/matrix.cpp @@ -21,124 +21,172 @@ Matrix::Matrix(int numRows, int numCols) { rows = 0; cols = 0; - + mat.clear(); } + //полноценное создание класса else { rows = numRows; cols = numCols; + mat.assign(rows, vector(cols,0)); } } void Matrix::Reset(int numRows, int numCols) { - mat.resize(0); - vector l(NULL, numCols); - for (int i = 0; i < numRows - 1; i++) - { - mat.push_back(l); - } + //вывод ошибок + if (numRows < 0) + { + cerr<<"Произошла ошибка -> количество строк не может быть меньше нуля"; + } + if (numCols < 0) + { + cerr<<"Произошла ошибка -> количество столбцев не может быть меньше нуля"; + } + + //при нуле строк или столбцев, или всё вместе + if (numRows == 0 || numCols == 0) + { + rows = 0; + cols = 0; + mat.clear(); + } + //полноценное создание класса + else + { + rows = numRows; + cols = numCols; + mat.assign(rows, vector(cols,0)); + } } -int& Matrix::At(int row, int col) + + +int Matrix::At(int row, int col) { - try - { + //вывод ошибок + if (row < 0) + { + cerr<<"Произошла ошибка -> нет строки меньше нуля, дебил, ты сто пытаешься найти? Я вот твою логику (◣_◢)"; + } + if (col < 0) + { + cerr<<"Произошла ошибка -> нет столбца меньше нуля, никак вы б$@&* не научитесь (╬ಠ益ಠ)"; + } + if (row >= rows) + { + cerr<<"Произошла ошибка -> у нас строк меньше, дружок пирожок (─‿‿─)"; + } + if (col >= cols) + { + cerr<<"Произошла ошибка -> эээээм, у нас, ващет, столбцев меньше ( ̄︿ ̄)"; + } return mat[row][col]; - } - catch (out_of_range) - { - cout << "Out of range: referring to element (" << row << ", " << col << "), but matrix size is " << mat.size() << "x" << mat[0].size(); - } -} -const int& Matrix::At(int row, int col) const +int& Matrix::At(int row, int col) const { - try - { + //вывод ошибок + if (row < 0) + { + cerr<<"Произошла ошибка -> нет строки меньше нуля, дебил, ты сто пытаешься найти? Я вот твою логику (◣_◢)"; + } + if (col < 0) + { + cerr<<"Произошла ошибка -> нет столбца меньше нуля, никак вы б$@&* не научитесь (╬ಠ益ಠ)"; + } + if (row >= rows) + { + cerr<<"Произошла ошибка -> у нас строк меньше, дружок пирожок (─‿‿─)"; + } + if (col >= cols) + { + cerr<<"Произошла ошибка -> эээээм, у нас, ващет, столбцев меньше ( ̄︿ ̄)"; + } return mat[row][col]; - } - catch (out_of_range) - { - cout << "Out of range: referring to element (" << row << ", " << col << "), but matrix size is " << mat.size() << "x" << mat[0].size(); - } + } + + int Matrix::GetRows() const { - return mat.size(); + return rows; } int Matrix::GetCols() const { - return mat[0].size(); + return cols; } + + bool Matrix::operator==(const Matrix& m2) { - if (mat.size() == m2.GetRows() && mat[0].size() == m2.GetCols()) - { - for (int i = 0; i < mat.size() - 1; i++) + if (mat.size() == m2.GetRows() && mat[0].size() == m2.GetCols()) { - for (int j = 0; j < mat[0].size() - 1; j++) + for (int i = 0; i < mat.size() - 1; i++) { - if (mat[i][j] != m2.At(i, j)) + for (int j = 0; j < mat[0].size() - 1; j++) { - return false; + if (mat[i][j] != m2.At(i, j)) + { + return false; + } } } - } - return true; - } - else { + return true; + } + else + { return false; - } + } } bool Matrix::operator!=(const Matrix& m2) { - if (mat.size() == m2.GetRows() && mat[0].size() == m2.GetCols()) - { - for (int i = 0; i < mat.size() - 1; i++) - { - for (int j = 0; j < mat[0].size() - 1; j++) - { - if (mat[i][j] != m2.At(i, j)) - { - return true; - } - } - } - return false; - } - else { - return true; - } + if (mat.size() == m2.GetRows() && mat[0].size() == m2.GetCols()) + { + for (int i = 0; i < mat.size() - 1; i++) + { + for (int j = 0; j < mat[0].size() - 1; j++) + { + if (mat[i][j] != m2.At(i, j)) + { + return true; + } + } + } + return false; + } + else + { + return true; + } } Matrix Matrix::operator+(const Matrix& m2) { - try - { - if (mat.size() != m2.GetRows() || mat[0].size() != m2.GetCols()) - { - throw 1; - } - else - { - Matrix mres(m2.GetRows(), m2.GetCols()); - for (int i = 0; i < mres.mat.size() - 1; i++) - { - for (int j = 0; j < mres.mat[0].size() - 1; j++) - { - mres.At(i, j) = mat[i][j] + m2.At(i, j); - } - } - return mres; - } - } - catch (int e) - { - cout << "Can't sum matricies of different sizes"; - } + try + { + if (mat.size() != m2.GetRows() || mat[0].size() != m2.GetCols()) + { + throw 1; + } + else + { + Matrix mres(m2.GetRows(), m2.GetCols()); + for (int i = 0; i < mres.mat.size() - 1; i++) + { + for (int j = 0; j < mres.mat[0].size() - 1; j++) + { + mres.At(i, j) = mat[i][j] + m2.At(i, j); + } + } + return mres; + } + } + catch (int e) + { + cout << "Can't sum matricies of different sizes"; + } } From caf190c6040cc2dd731108a06c132bbf11bf63cf Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Mon, 30 Dec 2024 01:37:04 +0500 Subject: [PATCH 12/40] matrix.cpp --- task1/matrix.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/task1/matrix.cpp b/task1/matrix.cpp index c83f057..3b2469e 100644 --- a/task1/matrix.cpp +++ b/task1/matrix.cpp @@ -1,6 +1,5 @@ #include "matrix.hpp" #include -#include #include using namespace std; From f3cede0eb72005aeb6f588eba1cb86e4d0880ad6 Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Mon, 30 Dec 2024 01:37:42 +0500 Subject: [PATCH 13/40] matrix.hpp --- task1/matrix.hpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/task1/matrix.hpp b/task1/matrix.hpp index 0694d00..2121598 100644 --- a/task1/matrix.hpp +++ b/task1/matrix.hpp @@ -1,4 +1,7 @@ #pragma once +#include +#include + class Matrix { From 62631f4b034b97fd5bbe461e11dccafdff5a1421 Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Mon, 30 Dec 2024 01:42:48 +0500 Subject: [PATCH 14/40] matrix.cpp --- task1/matrix.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/task1/matrix.cpp b/task1/matrix.cpp index 3b2469e..41152a2 100644 --- a/task1/matrix.cpp +++ b/task1/matrix.cpp @@ -1,6 +1,5 @@ #include "matrix.hpp" #include -#include using namespace std; Matrix::Matrix(int numRows, int numCols) From 6f314cba78342b7ed7ab1f28af98e3487012a60e Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Mon, 30 Dec 2024 01:45:33 +0500 Subject: [PATCH 15/40] matrix.hpp --- task1/matrix.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/task1/matrix.hpp b/task1/matrix.hpp index 2121598..5f74360 100644 --- a/task1/matrix.hpp +++ b/task1/matrix.hpp @@ -14,8 +14,8 @@ class Matrix Matrix(int numRows, int numCols); void Reset(int numRows, int numCols); + int At(int row, int col) const; int& At(int row, int col); - const int& At(int row, int col) const; int GetRows() const; int GetCols() const; From 94878898a63d1151002f4336cd631af89614b63a Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Mon, 30 Dec 2024 01:51:04 +0500 Subject: [PATCH 16/40] matrix.hpp --- task1/matrix.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/task1/matrix.hpp b/task1/matrix.hpp index 5f74360..7d0ca5e 100644 --- a/task1/matrix.hpp +++ b/task1/matrix.hpp @@ -1,6 +1,7 @@ #pragma once #include #include +#include class Matrix From 3f122cec8c3d07d882247b1434e472bbe20a64da Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Mon, 30 Dec 2024 01:53:06 +0500 Subject: [PATCH 17/40] matrix.cpp --- task1/matrix.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/task1/matrix.cpp b/task1/matrix.cpp index 41152a2..c3c9f68 100644 --- a/task1/matrix.cpp +++ b/task1/matrix.cpp @@ -60,7 +60,7 @@ void Matrix::Reset(int numRows, int numCols) -int Matrix::At(int row, int col) +int Matrix::At(int row, int col) const { //вывод ошибок if (row < 0) @@ -81,7 +81,7 @@ int Matrix::At(int row, int col) } return mat[row][col]; -int& Matrix::At(int row, int col) const +int& Matrix::At(int row, int col) { //вывод ошибок if (row < 0) From 6d582b1ba8f0556be4991620931119edde828afe Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Mon, 30 Dec 2024 01:55:18 +0500 Subject: [PATCH 18/40] matrix.hpp --- task1/matrix.hpp | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/task1/matrix.hpp b/task1/matrix.hpp index 7d0ca5e..7f8b938 100644 --- a/task1/matrix.hpp +++ b/task1/matrix.hpp @@ -11,8 +11,26 @@ class Matrix int cols; std::vector> mat; public: - Matrix() = default; - Matrix(int numRows, int numCols); + Matrix() : num_rows(0), num_cols(0) {} + explicit Matrix(int rows, int cols); + + Matrix(const Matrix& other) = default; + Matrix& operator=(const Matrix& other) = default; + + Matrix(Matrix&& other) noexcept : num_rows(other.num_rows), num_cols(other.num_cols), data(std::move(other.data)) { + other.num_rows = 0; + other.num_cols = 0; + } + Matrix& operator=(Matrix&& other) noexcept { + if (this != &other) { + num_rows = other.num_rows; + num_cols = other.num_cols; + data = std::move(other.data); + other.num_rows = 0; + other.num_cols = 0; + } + return *this; + } void Reset(int numRows, int numCols); int At(int row, int col) const; @@ -20,8 +38,7 @@ class Matrix int GetRows() const; int GetCols() const; - bool operator==(const Matrix& m2); - bool operator!=(const Matrix& m2); - Matrix operator+(const Matrix& m2); - + friend bool operator==(const Matrix& lhs, const Matrix& rhs); + friend bool operator!=(const Matrix& lhs, const Matrix& rhs); + friend Matrix operator+(const Matrix& lhs, const Matrix& rhs); }; From 4e53718b097c20ba3f0631747834356399bc0013 Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Mon, 30 Dec 2024 01:58:59 +0500 Subject: [PATCH 19/40] matrix.cpp --- task1/matrix.cpp | 77 ++++++++++-------------------------------------- 1 file changed, 15 insertions(+), 62 deletions(-) diff --git a/task1/matrix.cpp b/task1/matrix.cpp index c3c9f68..f2aeac7 100644 --- a/task1/matrix.cpp +++ b/task1/matrix.cpp @@ -118,73 +118,26 @@ int Matrix::GetCols() const -bool Matrix::operator==(const Matrix& m2) +bool Matrix::operator==(const Matrix& lhs, const Matrix& rhs) { - if (mat.size() == m2.GetRows() && mat[0].size() == m2.GetCols()) - { - for (int i = 0; i < mat.size() - 1; i++) - { - for (int j = 0; j < mat[0].size() - 1; j++) - { - if (mat[i][j] != m2.At(i, j)) - { - return false; - } - } - } - return true; - } - else - { - return false; - } + return lhs.num_rows == rhs.num_rows && lhs.num_cols == rhs.num_cols && lhs.data == rhs.data; } -bool Matrix::operator!=(const Matrix& m2) +bool Matrix::operator!=(const Matrix& lhs, const Matrix& rhs) { - if (mat.size() == m2.GetRows() && mat[0].size() == m2.GetCols()) - { - for (int i = 0; i < mat.size() - 1; i++) - { - for (int j = 0; j < mat[0].size() - 1; j++) - { - if (mat[i][j] != m2.At(i, j)) - { - return true; - } - } - } - return false; - } - else - { - return true; - } + return !(lhs == rhs); } -Matrix Matrix::operator+(const Matrix& m2) +Matrix Matrix::operator+(const Matrix& lhs, const Matrix& rhs) { - try - { - if (mat.size() != m2.GetRows() || mat[0].size() != m2.GetCols()) - { - throw 1; - } - else - { - Matrix mres(m2.GetRows(), m2.GetCols()); - for (int i = 0; i < mres.mat.size() - 1; i++) - { - for (int j = 0; j < mres.mat[0].size() - 1; j++) - { - mres.At(i, j) = mat[i][j] + m2.At(i, j); - } - } - return mres; - } - } - catch (int e) - { - cout << "Can't sum matricies of different sizes"; - } + if (lhs.GetRows() != rhs.GetRows() || lhs.GetCols() != rhs.GetCols()) { + throw invalid_argument(""); + } + Matrix result(lhs.GetRows(), lhs.GetCols()); + for (int i = 0; i < lhs.GetRows(); ++i) { + for (int j = 0; j < lhs.GetCols(); ++j) { + result.At(i, j) = lhs.At(i, j) + rhs.At(i, j); + } + } + return result; } From 9211d1db23f7bcad68ed34d3dcb5122fa1f190d9 Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Mon, 30 Dec 2024 02:00:56 +0500 Subject: [PATCH 20/40] matrix.hpp --- task1/matrix.hpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/task1/matrix.hpp b/task1/matrix.hpp index 7f8b938..1607dac 100644 --- a/task1/matrix.hpp +++ b/task1/matrix.hpp @@ -11,23 +11,23 @@ class Matrix int cols; std::vector> mat; public: - Matrix() : num_rows(0), num_cols(0) {} + Matrix() : rows(0), cols(0) {} explicit Matrix(int rows, int cols); Matrix(const Matrix& other) = default; Matrix& operator=(const Matrix& other) = default; - Matrix(Matrix&& other) noexcept : num_rows(other.num_rows), num_cols(other.num_cols), data(std::move(other.data)) { - other.num_rows = 0; - other.num_cols = 0; + Matrix(Matrix&& other) noexcept : rows(other.rows), cols(other.cols), mat(std::move(other.mat)) { + other.rows = 0; + other.ols = 0; } Matrix& operator=(Matrix&& other) noexcept { if (this != &other) { - num_rows = other.num_rows; - num_cols = other.num_cols; - data = std::move(other.data); - other.num_rows = 0; - other.num_cols = 0; + num_rows = other.rows; + num_cols = other.cols; + data = std::move(other.mat); + other.rows = 0; + other.cols = 0; } return *this; } From 88792aa2ab4e834b1a64e90799ddb675355d178e Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Mon, 30 Dec 2024 02:02:12 +0500 Subject: [PATCH 21/40] matrix.cpp --- task1/matrix.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/task1/matrix.cpp b/task1/matrix.cpp index f2aeac7..6190587 100644 --- a/task1/matrix.cpp +++ b/task1/matrix.cpp @@ -120,7 +120,7 @@ int Matrix::GetCols() const bool Matrix::operator==(const Matrix& lhs, const Matrix& rhs) { - return lhs.num_rows == rhs.num_rows && lhs.num_cols == rhs.num_cols && lhs.data == rhs.data; + return lhs.rows == rhs.rows && lhs.cols == rhs.cols && lhs.mat == rhs.mat; } bool Matrix::operator!=(const Matrix& lhs, const Matrix& rhs) @@ -131,7 +131,7 @@ bool Matrix::operator!=(const Matrix& lhs, const Matrix& rhs) Matrix Matrix::operator+(const Matrix& lhs, const Matrix& rhs) { if (lhs.GetRows() != rhs.GetRows() || lhs.GetCols() != rhs.GetCols()) { - throw invalid_argument(""); + cerr<<"невозможный аргумент"; } Matrix result(lhs.GetRows(), lhs.GetCols()); for (int i = 0; i < lhs.GetRows(); ++i) { From dbc1d51266961909058a220f1330f267d68790ed Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Mon, 30 Dec 2024 02:03:52 +0500 Subject: [PATCH 22/40] matrix.hpp --- task1/matrix.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/task1/matrix.hpp b/task1/matrix.hpp index 1607dac..f3500ec 100644 --- a/task1/matrix.hpp +++ b/task1/matrix.hpp @@ -19,13 +19,13 @@ class Matrix Matrix(Matrix&& other) noexcept : rows(other.rows), cols(other.cols), mat(std::move(other.mat)) { other.rows = 0; - other.ols = 0; + other.сols = 0; } Matrix& operator=(Matrix&& other) noexcept { if (this != &other) { - num_rows = other.rows; - num_cols = other.cols; - data = std::move(other.mat); + rows = other.rows; + cols = other.cols; + mat = std::move(other.mat); other.rows = 0; other.cols = 0; } From e23738a3988e5e56e3af30af239118c776e7924c Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Mon, 30 Dec 2024 02:07:05 +0500 Subject: [PATCH 23/40] matrix.hpp --- task1/matrix.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/task1/matrix.hpp b/task1/matrix.hpp index f3500ec..747a6ca 100644 --- a/task1/matrix.hpp +++ b/task1/matrix.hpp @@ -12,7 +12,7 @@ class Matrix std::vector> mat; public: Matrix() : rows(0), cols(0) {} - explicit Matrix(int rows, int cols); + explicit Matrix(int numRows, int numCols); Matrix(const Matrix& other) = default; Matrix& operator=(const Matrix& other) = default; From ae9a16d95282a7ed89844662e2826fc93bef1cac Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Mon, 30 Dec 2024 02:11:20 +0500 Subject: [PATCH 24/40] matrix.cpp --- task1/matrix.cpp | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/task1/matrix.cpp b/task1/matrix.cpp index 6190587..eb60f46 100644 --- a/task1/matrix.cpp +++ b/task1/matrix.cpp @@ -80,6 +80,7 @@ int Matrix::At(int row, int col) const cerr<<"Произошла ошибка -> эээээм, у нас, ващет, столбцев меньше ( ̄︿ ̄)"; } return mat[row][col]; +} int& Matrix::At(int row, int col) { @@ -130,14 +131,17 @@ bool Matrix::operator!=(const Matrix& lhs, const Matrix& rhs) Matrix Matrix::operator+(const Matrix& lhs, const Matrix& rhs) { - if (lhs.GetRows() != rhs.GetRows() || lhs.GetCols() != rhs.GetCols()) { - cerr<<"невозможный аргумент"; - } - Matrix result(lhs.GetRows(), lhs.GetCols()); - for (int i = 0; i < lhs.GetRows(); ++i) { - for (int j = 0; j < lhs.GetCols(); ++j) { - result.At(i, j) = lhs.At(i, j) + rhs.At(i, j); - } - } - return result; + if (lhs.GetRows() != rhs.GetRows() || lhs.GetCols() != rhs.GetCols()) + { + cerr<<"невозможный аргумент"; + } + Matrix result(lhs.GetRows(), lhs.GetCols()); + for (int i = 0; i < lhs.GetRows(); ++i) + { + for (int j = 0; j < lhs.GetCols(); ++j) + { + result.At(i, j) = lhs.At(i, j) + rhs.At(i, j); + } + } + return result; } From 24e2bbd29dead3eed49beb88002c1696dfd5643d Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Mon, 30 Dec 2024 02:15:27 +0500 Subject: [PATCH 25/40] matrix.cpp --- task1/matrix.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/task1/matrix.cpp b/task1/matrix.cpp index eb60f46..668959a 100644 --- a/task1/matrix.cpp +++ b/task1/matrix.cpp @@ -1,6 +1,6 @@ #include "matrix.hpp" #include -using namespace std; +#include Matrix::Matrix(int numRows, int numCols) { From 10206154c07be44575ac3f20ff42f9bb2b6c9d33 Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Mon, 30 Dec 2024 02:16:38 +0500 Subject: [PATCH 26/40] matrix.cpp --- task1/matrix.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/task1/matrix.cpp b/task1/matrix.cpp index 668959a..654ca08 100644 --- a/task1/matrix.cpp +++ b/task1/matrix.cpp @@ -1,6 +1,7 @@ #include "matrix.hpp" #include #include +using namespace std; Matrix::Matrix(int numRows, int numCols) { From de5b96bae614b5e6af20b1102aa43ef28616b189 Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Mon, 30 Dec 2024 02:19:09 +0500 Subject: [PATCH 27/40] matrix.cpp --- task1/matrix.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/task1/matrix.cpp b/task1/matrix.cpp index 654ca08..df2c468 100644 --- a/task1/matrix.cpp +++ b/task1/matrix.cpp @@ -120,17 +120,17 @@ int Matrix::GetCols() const -bool Matrix::operator==(const Matrix& lhs, const Matrix& rhs) +bool operator==(const Matrix& lhs, const Matrix& rhs) { return lhs.rows == rhs.rows && lhs.cols == rhs.cols && lhs.mat == rhs.mat; } -bool Matrix::operator!=(const Matrix& lhs, const Matrix& rhs) +bool operator!=(const Matrix& lhs, const Matrix& rhs) { return !(lhs == rhs); } -Matrix Matrix::operator+(const Matrix& lhs, const Matrix& rhs) +Matrix operator+(const Matrix& lhs, const Matrix& rhs) { if (lhs.GetRows() != rhs.GetRows() || lhs.GetCols() != rhs.GetCols()) { From f212eca9650dbf9f2711f882e5e35ea4bc7a80b2 Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Mon, 30 Dec 2024 02:25:19 +0500 Subject: [PATCH 28/40] matrix.hpp --- task1/matrix.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/task1/matrix.hpp b/task1/matrix.hpp index 747a6ca..101b4b8 100644 --- a/task1/matrix.hpp +++ b/task1/matrix.hpp @@ -19,7 +19,7 @@ class Matrix Matrix(Matrix&& other) noexcept : rows(other.rows), cols(other.cols), mat(std::move(other.mat)) { other.rows = 0; - other.сols = 0; + other.cols = 0; } Matrix& operator=(Matrix&& other) noexcept { if (this != &other) { From a7a28e74e7d9be56586fa869d6f4208d11c6d457 Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Mon, 30 Dec 2024 02:29:16 +0500 Subject: [PATCH 29/40] matrix.cpp --- task1/matrix.cpp | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/task1/matrix.cpp b/task1/matrix.cpp index df2c468..85d915a 100644 --- a/task1/matrix.cpp +++ b/task1/matrix.cpp @@ -8,11 +8,13 @@ Matrix::Matrix(int numRows, int numCols) //вывод ошибок if (numRows < 0) { - cerr<<"Произошла ошибка -> количество строк не может быть меньше нуля"; + cerr<<""; + //cerr<<"Произошла ошибка -> количество строк не может быть меньше нуля"; } if (numCols < 0) { - cerr<<"Произошла ошибка -> количество столбцев не может быть меньше нуля"; + cerr<<""; + //cerr<<"Произошла ошибка -> количество столбцев не может быть меньше нуля"; } //при нуле строк или столбцев, или всё вместе @@ -36,11 +38,13 @@ void Matrix::Reset(int numRows, int numCols) //вывод ошибок if (numRows < 0) { - cerr<<"Произошла ошибка -> количество строк не может быть меньше нуля"; + cerr<<""; + //cerr<<"Произошла ошибка -> количество строк не может быть меньше нуля"; } if (numCols < 0) { - cerr<<"Произошла ошибка -> количество столбцев не может быть меньше нуля"; + cerr<<""; + //cerr<<"Произошла ошибка -> количество столбцев не может быть меньше нуля"; } //при нуле строк или столбцев, или всё вместе @@ -66,7 +70,8 @@ int Matrix::At(int row, int col) const //вывод ошибок if (row < 0) { - cerr<<"Произошла ошибка -> нет строки меньше нуля, дебил, ты сто пытаешься найти? Я вот твою логику (◣_◢)"; + cerr<<""; + //cerr<<"Произошла ошибка -> нет строки меньше нуля, дебил, ты сто пытаешься найти? Я вот твою логику (◣_◢)"; } if (col < 0) { @@ -74,11 +79,13 @@ int Matrix::At(int row, int col) const } if (row >= rows) { - cerr<<"Произошла ошибка -> у нас строк меньше, дружок пирожок (─‿‿─)"; + cerr<<""; + //cerr<<"Произошла ошибка -> у нас строк меньше, дружок пирожок (─‿‿─)"; } if (col >= cols) { - cerr<<"Произошла ошибка -> эээээм, у нас, ващет, столбцев меньше ( ̄︿ ̄)"; + cerr<<""; + //cerr<<"Произошла ошибка -> эээээм, у нас, ващет, столбцев меньше ( ̄︿ ̄)"; } return mat[row][col]; } @@ -88,19 +95,23 @@ int& Matrix::At(int row, int col) //вывод ошибок if (row < 0) { - cerr<<"Произошла ошибка -> нет строки меньше нуля, дебил, ты сто пытаешься найти? Я вот твою логику (◣_◢)"; + cerr<<""; + //cerr<<"Произошла ошибка -> нет строки меньше нуля, дебил, ты сто пытаешься найти? Я вот твою логику (◣_◢)"; } if (col < 0) { - cerr<<"Произошла ошибка -> нет столбца меньше нуля, никак вы б$@&* не научитесь (╬ಠ益ಠ)"; + cerr<<""; + //cerr<<"Произошла ошибка -> нет столбца меньше нуля, никак вы б$@&* не научитесь (╬ಠ益ಠ)"; } if (row >= rows) { - cerr<<"Произошла ошибка -> у нас строк меньше, дружок пирожок (─‿‿─)"; + cerr<<""; + //cerr<<"Произошла ошибка -> у нас строк меньше, дружок пирожок (─‿‿─)"; } if (col >= cols) { - cerr<<"Произошла ошибка -> эээээм, у нас, ващет, столбцев меньше ( ̄︿ ̄)"; + cerr<<""; + //cerr<<"Произошла ошибка -> эээээм, у нас, ващет, столбцев меньше ( ̄︿ ̄)"; } return mat[row][col]; From b4173a7b63421e542daf35b5e336924708d95c39 Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Mon, 30 Dec 2024 02:31:32 +0500 Subject: [PATCH 30/40] matrix.cpp --- task1/matrix.cpp | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/task1/matrix.cpp b/task1/matrix.cpp index 85d915a..17f6d32 100644 --- a/task1/matrix.cpp +++ b/task1/matrix.cpp @@ -8,12 +8,12 @@ Matrix::Matrix(int numRows, int numCols) //вывод ошибок if (numRows < 0) { - cerr<<""; + throw out_of_range(""); //cerr<<"Произошла ошибка -> количество строк не может быть меньше нуля"; } if (numCols < 0) { - cerr<<""; + throw out_of_range(""); //cerr<<"Произошла ошибка -> количество столбцев не может быть меньше нуля"; } @@ -38,12 +38,12 @@ void Matrix::Reset(int numRows, int numCols) //вывод ошибок if (numRows < 0) { - cerr<<""; + throw out_of_range(""); //cerr<<"Произошла ошибка -> количество строк не может быть меньше нуля"; } if (numCols < 0) { - cerr<<""; + throw out_of_range(""); //cerr<<"Произошла ошибка -> количество столбцев не может быть меньше нуля"; } @@ -70,21 +70,22 @@ int Matrix::At(int row, int col) const //вывод ошибок if (row < 0) { - cerr<<""; + throw out_of_range(""); //cerr<<"Произошла ошибка -> нет строки меньше нуля, дебил, ты сто пытаешься найти? Я вот твою логику (◣_◢)"; } if (col < 0) { - cerr<<"Произошла ошибка -> нет столбца меньше нуля, никак вы б$@&* не научитесь (╬ಠ益ಠ)"; + throw out_of_range(""); + //cerr<<"Произошла ошибка -> нет столбца меньше нуля, никак вы б$@&* не научитесь (╬ಠ益ಠ)"; } if (row >= rows) { - cerr<<""; + throw out_of_range(""); //cerr<<"Произошла ошибка -> у нас строк меньше, дружок пирожок (─‿‿─)"; } if (col >= cols) { - cerr<<""; + throw out_of_range(""); //cerr<<"Произошла ошибка -> эээээм, у нас, ващет, столбцев меньше ( ̄︿ ̄)"; } return mat[row][col]; @@ -95,22 +96,22 @@ int& Matrix::At(int row, int col) //вывод ошибок if (row < 0) { - cerr<<""; + throw out_of_range(""); //cerr<<"Произошла ошибка -> нет строки меньше нуля, дебил, ты сто пытаешься найти? Я вот твою логику (◣_◢)"; } if (col < 0) { - cerr<<""; + throw out_of_range(""); //cerr<<"Произошла ошибка -> нет столбца меньше нуля, никак вы б$@&* не научитесь (╬ಠ益ಠ)"; } if (row >= rows) { - cerr<<""; + throw out_of_range(""); //cerr<<"Произошла ошибка -> у нас строк меньше, дружок пирожок (─‿‿─)"; } if (col >= cols) { - cerr<<""; + throw out_of_range(""); //cerr<<"Произошла ошибка -> эээээм, у нас, ващет, столбцев меньше ( ̄︿ ̄)"; } return mat[row][col]; From 383556c883386b8118673d852197ec4909899e6a Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Mon, 30 Dec 2024 02:44:30 +0500 Subject: [PATCH 31/40] matrix.cpp --- task1/matrix.cpp | 52 ++++-------------------------------------------- 1 file changed, 4 insertions(+), 48 deletions(-) diff --git a/task1/matrix.cpp b/task1/matrix.cpp index 17f6d32..c74500d 100644 --- a/task1/matrix.cpp +++ b/task1/matrix.cpp @@ -6,15 +6,9 @@ using namespace std; Matrix::Matrix(int numRows, int numCols) { //вывод ошибок - if (numRows < 0) - { - throw out_of_range(""); - //cerr<<"Произошла ошибка -> количество строк не может быть меньше нуля"; - } - if (numCols < 0) + if (rows < 0 || cols < 0) { throw out_of_range(""); - //cerr<<"Произошла ошибка -> количество столбцев не может быть меньше нуля"; } //при нуле строк или столбцев, или всё вместе @@ -36,15 +30,9 @@ Matrix::Matrix(int numRows, int numCols) void Matrix::Reset(int numRows, int numCols) { //вывод ошибок - if (numRows < 0) - { - throw out_of_range(""); - //cerr<<"Произошла ошибка -> количество строк не может быть меньше нуля"; - } - if (numCols < 0) + if (rows < 0 || cols < 0) { throw out_of_range(""); - //cerr<<"Произошла ошибка -> количество столбцев не может быть меньше нуля"; } //при нуле строк или столбцев, или всё вместе @@ -68,25 +56,9 @@ void Matrix::Reset(int numRows, int numCols) int Matrix::At(int row, int col) const { //вывод ошибок - if (row < 0) - { - throw out_of_range(""); - //cerr<<"Произошла ошибка -> нет строки меньше нуля, дебил, ты сто пытаешься найти? Я вот твою логику (◣_◢)"; - } - if (col < 0) - { - throw out_of_range(""); - //cerr<<"Произошла ошибка -> нет столбца меньше нуля, никак вы б$@&* не научитесь (╬ಠ益ಠ)"; - } - if (row >= rows) - { - throw out_of_range(""); - //cerr<<"Произошла ошибка -> у нас строк меньше, дружок пирожок (─‿‿─)"; - } - if (col >= cols) + if (row < 0 || row >= num_rows || col < 0 || col >= num_cols) { throw out_of_range(""); - //cerr<<"Произошла ошибка -> эээээм, у нас, ващет, столбцев меньше ( ̄︿ ̄)"; } return mat[row][col]; } @@ -94,25 +66,9 @@ int Matrix::At(int row, int col) const int& Matrix::At(int row, int col) { //вывод ошибок - if (row < 0) - { - throw out_of_range(""); - //cerr<<"Произошла ошибка -> нет строки меньше нуля, дебил, ты сто пытаешься найти? Я вот твою логику (◣_◢)"; - } - if (col < 0) - { - throw out_of_range(""); - //cerr<<"Произошла ошибка -> нет столбца меньше нуля, никак вы б$@&* не научитесь (╬ಠ益ಠ)"; - } - if (row >= rows) - { - throw out_of_range(""); - //cerr<<"Произошла ошибка -> у нас строк меньше, дружок пирожок (─‿‿─)"; - } - if (col >= cols) + if (row < 0 || row >= num_rows || col < 0 || col >= num_cols) { throw out_of_range(""); - //cerr<<"Произошла ошибка -> эээээм, у нас, ващет, столбцев меньше ( ̄︿ ̄)"; } return mat[row][col]; From 89b57dc3115abd8eb92daeab85f85af32bd997c2 Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Mon, 30 Dec 2024 02:46:15 +0500 Subject: [PATCH 32/40] matrix.cpp --- task1/matrix.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/task1/matrix.cpp b/task1/matrix.cpp index c74500d..2c9034c 100644 --- a/task1/matrix.cpp +++ b/task1/matrix.cpp @@ -6,7 +6,7 @@ using namespace std; Matrix::Matrix(int numRows, int numCols) { //вывод ошибок - if (rows < 0 || cols < 0) + if (numRows < 0 || numCols < 0) { throw out_of_range(""); } @@ -30,7 +30,7 @@ Matrix::Matrix(int numRows, int numCols) void Matrix::Reset(int numRows, int numCols) { //вывод ошибок - if (rows < 0 || cols < 0) + if (numRows < 0 || numCols < 0) { throw out_of_range(""); } @@ -56,7 +56,7 @@ void Matrix::Reset(int numRows, int numCols) int Matrix::At(int row, int col) const { //вывод ошибок - if (row < 0 || row >= num_rows || col < 0 || col >= num_cols) + if (row < 0 || row >= rows || col < 0 || col >= cols) { throw out_of_range(""); } @@ -66,7 +66,7 @@ int Matrix::At(int row, int col) const int& Matrix::At(int row, int col) { //вывод ошибок - if (row < 0 || row >= num_rows || col < 0 || col >= num_cols) + if (row < 0 || row >= rows || col < 0 || col >= cols) { throw out_of_range(""); } From 6709dabbf8c45cbc17d7112df99fce5f10b53398 Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Mon, 30 Dec 2024 02:47:51 +0500 Subject: [PATCH 33/40] matrix.cpp --- task1/matrix.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/task1/matrix.cpp b/task1/matrix.cpp index 2c9034c..a8f04e8 100644 --- a/task1/matrix.cpp +++ b/task1/matrix.cpp @@ -102,7 +102,7 @@ Matrix operator+(const Matrix& lhs, const Matrix& rhs) { if (lhs.GetRows() != rhs.GetRows() || lhs.GetCols() != rhs.GetCols()) { - cerr<<"невозможный аргумент"; + throw invalid_argument(""); } Matrix result(lhs.GetRows(), lhs.GetCols()); for (int i = 0; i < lhs.GetRows(); ++i) From 6b308e2c14e615a70b35f32e56e8b8b47da0e8fd Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Tue, 31 Dec 2024 05:36:24 +0500 Subject: [PATCH 34/40] figures.cpp --- task2/figures.cpp | 91 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 89 insertions(+), 2 deletions(-) diff --git a/task2/figures.cpp b/task2/figures.cpp index 3b33880..58226cc 100644 --- a/task2/figures.cpp +++ b/task2/figures.cpp @@ -1,3 +1,90 @@ -#include "figures.hpp" +#include "lab2.hpp" +#include -static constexpr double PI = 3.14; + + +//Прямоугольник +FigureType Rect::Type() const +{ + return FigureType::RECTANGLE; +} +double Rect::Perimeter() const +{ + return 2 * (len + hei); +} +double Rect::Area() const +{ + return len * hei; +} + + + +//Треугольник +FigureType Triangle::Type() const +{ + return FigureType::TRIANGLE; +} +double Triangle::Perimeter() const +{ + return a + b + c; +} +double Triangle::Area() const +{ + double s = Perimeter() / 2; + return std::sqrt(s * (s - a) * (s - b) * (s - c)); +} + + + +//Круг +FigureType Circle::Type() const +{ + return FigureType::CIRCLE; +} +double Circle::Perimeter() const +{ + return 2 * PI * radius; +} +double Circle::Area() const +{ + return PI * radius * radius; +} + + + + +//Universal konsruktor dla universalnosti +std::unique_ptr
make_figure(FigureType type, double a, double b, double c) +{ + //при ноляках + if (a < 0 || b < 0 || c < 0) + { + throw LessThanZeroParam(""); + } + //юниверсал фигура стала широким кавдратом (или узким ╮( ̄ω ̄;)╭) + if (type == FigureType::RECTANGLE) + { + return std::make_unique(a, b); + } + //triangolo universale, mama mia ☆ ~('▽^人) + if (type == FigureType::TRIANGLE) + { + if (a + b <= c || b + c <= a || a + c <= b) + { + throw WrongTriangle(""); + } + return std::make_unique(a, b, c); + } + // К Р У Г + if (type == FigureType::CIRCLE) + { + return std::make_unique(a); + } + + return nullptr; +} + +int main() +{ + return 0; +} From d4b75436b6aa0985503bd912d9e1bcc47976bf78 Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Tue, 31 Dec 2024 05:36:30 +0500 Subject: [PATCH 35/40] figures.hpp --- task2/figures.hpp | 65 ++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 56 insertions(+), 9 deletions(-) diff --git a/task2/figures.hpp b/task2/figures.hpp index 65a6110..413602e 100644 --- a/task2/figures.hpp +++ b/task2/figures.hpp @@ -1,41 +1,88 @@ #pragma once - #include #include + enum class FigureType { - TRIANGLE, - CIRCLE, - RECTANGLE, + TRIANGLE, + CIRCLE, + RECTANGLE, }; class Figure { public: - virtual FigureType Type() const = 0; - virtual double Perimeter() const = 0; - virtual double Area() const = 0; + virtual FigureType Type() const = 0; + virtual double Perimeter() const = 0; + virtual double Area() const = 0; + double PI = 3.14; }; + + +//Прямоугольник class Rect : public Figure { +private: + double len; + double hei; + +public: + Rect(double a, double b) : len(a), hei(b) {} + FigureType Type() const override; + double Perimeter() const override; + double Area() const override; }; + + +//Треугольник class Triangle : public Figure { +private: + double a, b, c; + +public: + Triangle(double side_a, double side_b, double side_c) : a(side_a), b(side_b), c(side_c) {} + FigureType Type() const override; + double Perimeter() const override; + double Area() const override; }; + + +//Круг class Circle : public Figure { +private: + double radius; + +public: + Circle(double r) : radius(r) {} + FigureType Type() const override; + double Perimeter() const override; + double Area() const override; }; + + +//Конструктор (лего) std::unique_ptr
make_figure(FigureType type, double a, double b = 0, double c = 0); + + +//Исключение special for treugolnk class WrongTriangle : public std::invalid_argument { -}; +public: + using std::invalid_argument::invalid_argument; +}; + + +//Для дебилов с отрицательными фигурами class LessThanZeroParam : public std::invalid_argument { +public: + using std::invalid_argument::invalid_argument; }; - From d2d29b6732145e3ed50c9bed68f879ab96a1d9a6 Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Tue, 31 Dec 2024 05:38:17 +0500 Subject: [PATCH 36/40] figures.cpp --- task2/figures.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/task2/figures.cpp b/task2/figures.cpp index 58226cc..e2b6e1b 100644 --- a/task2/figures.cpp +++ b/task2/figures.cpp @@ -1,4 +1,4 @@ -#include "lab2.hpp" +#include "figures.hpp" #include From 89ae92c4ece412f120ef967f9de1a7bc08dfcdb3 Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Tue, 31 Dec 2024 05:39:33 +0500 Subject: [PATCH 37/40] figures.cpp --- task2/figures.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/task2/figures.cpp b/task2/figures.cpp index e2b6e1b..81b9877 100644 --- a/task2/figures.cpp +++ b/task2/figures.cpp @@ -83,8 +83,3 @@ std::unique_ptr
make_figure(FigureType type, double a, double b, double return nullptr; } - -int main() -{ - return 0; -} From 56cc12cceebc603a82ac45c0affd99f0937ab969 Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Tue, 31 Dec 2024 06:10:02 +0500 Subject: [PATCH 38/40] circular_queue.hpp --- task3/circular_queue.hpp | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/task3/circular_queue.hpp b/task3/circular_queue.hpp index 2871091..123919c 100644 --- a/task3/circular_queue.hpp +++ b/task3/circular_queue.hpp @@ -1,14 +1,28 @@ #pragma once - #include +#include + + + +class CircularQueue +{ +private: + std::vector buffer; // это, крч, буфер!!! мдаааа, документации я буду писать топовые + size_t max_razmer; // максимум сайз оф куеуе + size_t now_rozmer; // мама сказала, что этот параметр показывает сколько сейчас элементов в очереди + size_t pered; // красивое, аки крабовый салат на новогоднем столе, лицо очереди + size_t zad; // попа очереди -class CircularQueue { public: - CircularQueue(size_t size); // создать очередь с определенным размером буффера - bool Push(int value); // добавить значение в конец очереди (false, если очередь заполнена) - bool Pop(); // удалить значение из начала очереди (false, если очередь пустая) - int Front() const; // получить значение из начала очереди (-1, если очередь пустая) - int Back() const; // получить значение из конца очереди (-1, если очередь пустая) - bool Empty() const; // проверить пустая ли очередь - bool Full() const; // проверить заполнена ли очередь + CircularQueue(size_t size) : max_razmer(size), now_rozmer(0), pered(0), zad(0) + { + buffer.resize(size); + } + bool Push(int value); // добавить значение в конец очереди (false, если очередь заполнена) + bool Pop(); // удалить значение из начала очереди (false, если очередь пустая) + int Front() const; // получить значение из начала очереди (-1, если очередь пустая) + int Back() const; // получить значение из конца очереди (-1, если очередь пустая) + bool Empty() const; // проверить пустая ли очередь + bool Full() const; // проверить заполнена ли очередь }; + From a3a641b360ee87b1f9bd993f235d75d9d83969ee Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Tue, 31 Dec 2024 06:11:03 +0500 Subject: [PATCH 39/40] circular_queue.cpp --- task3/circular_queue.cpp | 66 +++++++++++++++++++++++++++++++--------- 1 file changed, 52 insertions(+), 14 deletions(-) diff --git a/task3/circular_queue.cpp b/task3/circular_queue.cpp index fa74734..8bc6daf 100644 --- a/task3/circular_queue.cpp +++ b/task3/circular_queue.cpp @@ -1,36 +1,74 @@ #include "circular_queue.hpp" +#include -CircularQueue::CircularQueue(size_t size) + +//LET'S GOOOOOOOOOO, ЗАПОЛНИМ ЭТО КОЛЕЧКО *аранайка moment* +bool CircularQueue::Push(int value) { - // your implementation here + if (Full()) + { + return false; + } + buffer[zad] = value; + zad = (zad + 1) % max_razmer; + now_rozmer++; + return true; } -bool CircularQueue::Push(int value) + +//Это не просто смело, это грустно, НАШИ РЯДЫ РЕДЕЮТ!!!!!!! (╯°□°)╯︵ ┻━┻ +bool CircularQueue::Pop() { - // your implementation here + if (Empty()) + { + return false; + } + pered = (pered + 1) % max_razmer; + now_rozmer--; + return true; } -bool CircularQueue::Pop() + + +//НАЙДИТЕ ПЕРВОЙ ЧИСЛО!!!! НАЙДИТЕ РОДИТЕЛЕЙ ПЕРВОГО ЧИСЛА, ПЕРЕВЕРНИТЕ ВСЁ ВЕРХ ДНОМ, НО НАЙДИТЕ ЕГО!!!!!!!!!!!!!!! ୧((#Φ益Φ#))୨ +int CircularQueue::Front() const { - // your implementation here + if (Empty()) + { + return -1; + } + return buffer[pered]; } -int CircularQueue::Front() const + + +//НАЙДИТЕ ПОСЛЕДНЕЕ ЧИСЛО!!! Но в этот рас спокойней (ᓀ‿ᓀ) +int CircularQueue::Back() const { - // your implementation here + if (Empty()) + { + return -1; + } + return buffer[(zad - 1 + max_razmer) % max_razmer]; } -int CircularQueue::Back() const + + +//Ля, Михалыч, очеред пуста, мы рАзОрИмСя!!!АААААА, у меня 5 детей, что мне делать, МиХаЛыЧ??? .・゚゚・(/ O\)・゚゚・. +bool CircularQueue::Empty() const { - // your implementation here + return now_rozmer == 0; } -bool CircularQueue::Empty() const + + +//Кружка, что full of beer -> это счастье, monami (  ̄▽ ̄)[] [](≧▽≦ ) +bool CircularQueue::Full() const { - // your implementation here + return now_rozmer == max_razmer; } -bool CircularQueue::Full() const +int main() { - // your implementation here + return 0; } From df04a8b0b02359252eab057aadad3436209f9a7b Mon Sep 17 00:00:00 2001 From: Lampa-lab Date: Tue, 31 Dec 2024 06:12:17 +0500 Subject: [PATCH 40/40] circular_queue.cpp --- task3/circular_queue.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/task3/circular_queue.cpp b/task3/circular_queue.cpp index 8bc6daf..c7ca92c 100644 --- a/task3/circular_queue.cpp +++ b/task3/circular_queue.cpp @@ -68,7 +68,3 @@ bool CircularQueue::Full() const return now_rozmer == max_razmer; } -int main() -{ - return 0; -}