~riderius/matrix

d59dd5216723d2afa9eba06674cbaeceda9bb925 — RIDERIUS 6 months ago 61df88e main
Release 1.1.0

- Added method "Matrix::set".
- Added ex01.cpp. About ex01.cpp: Menu with Matrix methods in Russian language.
4 files changed, 119 insertions(+), 0 deletions(-)

M CMakeLists.txt
A ex01.cpp
M matrix.cpp
M matrix.hpp
M CMakeLists.txt => CMakeLists.txt +4 -0
@@ 4,5 4,9 @@ project(matrix_class)
set(CMAKE_CXX_STANDARD 17)

add_library(matrix_lib STATIC matrix.cpp)

add_executable(ex00 ex00.cpp)
target_link_libraries(ex00 matrix_lib)

add_executable(ex01 ex01.cpp)
target_link_libraries(ex01 matrix_lib)

A ex01.cpp => ex01.cpp +101 -0
@@ 0,0 1,101 @@
#include "matrix.hpp"
#include <iostream>
#include <vector>

int main(void) {
    using std::cin;
    using std::cout;
    using std::vector;
    vector<Matrix> matrixs(2);
    for(int i = 1; i < matrixs.size() + 1; ++i) {
        int n, m;
        cout << "Введите размер " << i << "-ой матрицы: ";
        cin >> n >> m;
        vector<vector<int>> tmp_vec(n, vector<int>(m));
        cout << "Введите матрицу: \n";
        for(int j = 0; j < n; ++j) {
            for(int k = 0; k < m; ++k) {
                cin >> tmp_vec[j][k];
            }
        }
        matrixs[i - 1].set(n, m, tmp_vec);
        cout << '\n';
    }
    int type = -1, id = -1;
    while(id != 1 && id != 2) {
        if(id != -1) {
            cout << "Выбрана некоректная матрица. Попробуйте ещё раз.\n";
        }
        cout << "Выберите матрицу:\n"
            << "1) Первая матрица\n"
            << "2) Вторая матрица\n";
        cin >> --id;
    }
    while(type != 8) {
        cout << "Выберите операцию:\n"
            << "1) Вывести матрицу на экран\n"
            << "2) Изменить элемент матрицы\n"
            << "3) Сбросить матрицу\n"
            << "4) Сложить матрицы\n"
            << "5) Умножить матрицу на число\n"
            << "6) Умножить матрицу на матрицу\n"
            << "7) Сменить выбранную матрицу\n"
            << "8) Выйти\n";
        cin >> type;
        if(type == 1) {
            matrixs[id].read();
        }
        else if(type == 2) {
            int i, j;
            cout << "Введите координаты элемента, начинающиеся с нуля: ";
            cin >> i >> j;
            int num;
            cout << "Введите новый элемент: ";
            cin >> num;
            matrixs[id].push(i, j, num);
        }
        else if(type == 3) {
            int n, m;
            cout << "Введите размер матрицы: ";
            cin >> n >> m;
            vector<vector<int>> tmp_vec(n, vector<int>(m));
            cout << "Введите матрицу: \n";
            for(int i = 0; i < n; ++i) {
                for(int j = 0; j < m; ++j) {
                    cin >> tmp_vec[i][j];
                }
            }
            matrixs[id].set(n, m, tmp_vec);
            cout << '\n';           
        }
        else if(type == 4) {
            matrixs[id] = matrixs[0] + matrixs[1];
            matrixs[id].read();
        }
        else if(type == 5) {
            int num;
            cout << "Введите число: ";
            cin >> num;
            matrixs[id] * num;
        }
        else if(type == 6) {
            matrixs[id] = matrixs[0] * matrixs[1];
            matrixs[id].read();
        }
        else if(type == 7) {
            if(id == 0) {
                id = 1;
            }
            else {
                id = 0;
            }
        }
        else if(type == 8) {
            break;
        }
        else {
            cout << "Выбран некоректный тип операции. Попробуйте снова.";
        }
    }
    return 0;
}

M matrix.cpp => matrix.cpp +13 -0
@@ 144,3 144,16 @@ int Matrix::m(void) {
std::vector<std::vector<int>> Matrix::get_matrix(void) {
    return matrix;
}

void Matrix::set(int n, int m, std::vector<std::vector<int>> new_matrix) {
    n_ = n;
    m_ = m;
    matrix.clear();
    matrix.resize(n_);
    for(int i = 0; i < n_; i++) {
        matrix[i].resize(m_);
        for(int j = 0; j < m_; j++) {
            matrix[i][j] = new_matrix[i][j];
        }
    }
}

M matrix.hpp => matrix.hpp +1 -0
@@ 21,5 21,6 @@ public:
    int n(void);
    int m(void);
    std::vector<std::vector<int>> get_matrix(void);
    void set(int n, int m, std::vector<std::vector<int>> new_matrix);
};
#endif