Skip to content

Лазуткин М.К. 1, 2 #15

Лазуткин М.К. 1, 2

Лазуткин М.К. 1, 2 #15

Workflow file for this run

#include <iostream>
#include <vector>
#include <stdexcept>
using namespace std;
class Matrix {
private:

Check failure on line 7 in .github/workflows/c-cpp.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/c-cpp.yml

Invalid workflow file

You have an error in your yaml syntax on line 7
vector<vector<int>>data;
int num_rows;
int num_cols;
public:
Matrix() : num_rows(0), num_cols(0) {
}
Matrix(int rows, int cols) : num_rows(rows), num_cols(cols) {
if (rows < 0 || cols < 0) {
throw out_of_range("Out of range");
}
data.resize(rows, vector<int>(cols, 0));
}
Matrix(const Matrix& other) : num_rows(other.num_rows), num_cols(other.num_cols), data(other.data) {
}
Matrix(Matrix&& other) noexcept : num_rows(other.num_rows), num_cols(other.num_cols), data(move(other.data)) {
other.num_rows = 0;
other.num_cols = 0;
}
void Reset(int rows, int cols) {
if (rows < 0 || cols < 0) {
throw out_of_range("Out of range");
}
num_rows = rows;
num_cols = cols;
data.assign(rows, vector<int>(cols, 0));
}
int At(int row, int col) const {
if (row < 0 || row >= num_rows || col < 0 || col >= num_cols) {
throw out_of_range("Index out of bounds");
}
return data[row][col];
}
int& At(int row, int col) {
if (row < 0 || row >= num_rows || col < 0 || col >= num_cols) {
throw out_of_range("Index out of bounds");
}
return data[row][col];
}
int GetRows() const {
return num_rows;
}
int GetCols() const {
return num_cols;
}
friend istream& operator>>(istream& is, Matrix& matrix) {
int rows, cols;
is >> rows >> cols;
matrix.Reset(rows, cols);
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
is >> matrix.At(i, j);
}
}
return is;
}
friend ostream& operator<<(ostream& os, const Matrix& matrix) {
os << matrix.num_rows << " " << matrix.num_cols << "\n";
for (int i = 0; i < matrix.num_rows; ++i)