Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- class matrix
- {
- private:
- int **Arr;
- int rows;
- int columns;
- public:
- matrix(); //констурктор
- ~matrix(); //деструкор
- int **pntArr;
- int pntRows;
- int pntColumns;
- void input(); // ввод
- void print(); // вывод
- int getrows();
- int getcolumns();
- int getElement();
- int prisv();
- int ret();
- void del();
- bool summMatrix(matrix matr2); //функция суммы
- bool multMatrix(matrix matr2); //функция произведения
- bool transp(); // функция транспонирования
- double getElement(int row, int col);
- };
- matrix::matrix()
- {
- }
- matrix::~matrix()
- {
- }
- void matrix::input()
- {
- std::cout << "Введите количество строк: ";
- std::cin >> rows;
- std::cout << "Введите количество столбцов: ";
- std::cin >> columns;
- Arr = new int*[rows];
- for (int i = 0; i < rows; i++)
- {
- Arr[i] = new int[columns];
- }
- for (int i = 0; i < rows; i++)
- {
- for (int j = 0; j < columns; j++)
- {
- Arr[i][j] = rand() % 10; //заполняет матрицу рандомно от 0 до 9
- }
- }
- }
- void matrix::print()
- {
- for (int i = 0; i < rows; i++)
- {
- for (int j = 0; j < columns; j++)
- {
- std::cout << Arr[i][j] << "\t";
- }
- std::cout << "\n";
- }
- }
- int matrix::getrows()
- {
- return rows;
- }
- int matrix::getcolumns()
- {
- return columns;
- }
- int matrix::getElement()
- {
- pntRows = rows;
- pntColumns = columns;
- pntArr = new int*[pntRows];
- for (int i = 0; i < pntRows; i++)
- {
- pntArr[i] = new int[pntColumns];
- }
- for (int i = 0; i < pntRows; i++)
- for (int j = 0; j < pntColumns; j++)
- {
- pntArr[i][j] = Arr[i][j];
- }
- return 0;
- }
- int matrix::prisv()
- {
- pntRows = rows;
- pntColumns = columns;
- for (int i = 0; i < pntRows; i++)
- {
- for (int j = 0; j < pntColumns; j++)
- {
- pntArr[i][j] = Arr[i][j];
- }
- }
- return 0;
- }
- int matrix::ret()
- {
- rows = pntRows;
- columns = pntColumns;
- for (int i = 0; i < rows; i++)
- {
- for (int j = 0; j < columns; j++)
- {
- Arr[i][j] = pntArr[i][j];
- }
- }
- return 0;
- }
- void matrix::del() // Очищение
- {
- for (int i = 0; i < rows; i++)
- {
- delete[]Arr[i];
- }
- delete[]Arr;
- for (int i = 0; i < pntRows; i++)
- {
- delete[]pntArr[i];
- }
- delete[]pntArr;
- }
- bool matrix::summMatrix(matrix matrB)
- {
- if ((rows == matrB.rows) & (columns == matrB.columns))
- {
- int s1[10][10];
- for (int a = 0; a < rows; a++)
- {
- for (int b = 0; b < columns; b++)
- {
- s1[a][b] = Arr[a][b];
- }
- }
- std::cout << "Сумма матриц: \n";
- for (int i = 0; i < rows; i++)
- {
- for (int j = 0; j < columns; j++)
- {
- s1[i][j] += matrB.Arr[i][j];
- }
- }
- for (int i = 0; i < rows; i++)
- {
- for (int j = 0; j < columns; j++)
- {
- std::cout << s1[i][j] << "\t";
- }
- std::cout << "\n";
- }
- return true;
- }
- std::cout << "Ошибка!";
- return false;
- }
- bool matrix::multMatrix(matrix matrB)
- {
- if (columns == matrB.rows)
- {
- double **c = new double*[rows];
- c = new double*[rows];
- for (int i = 0; i < rows; i++)
- {
- c[i] = new double[matrB.columns];
- for (int j = 0; j < matrB.columns; j++)
- {
- c[i][j] = 0;
- for (int k = 0; k < columns; k++)
- c[i][j] += Arr[i][k] * matrB.Arr[k][j];
- }
- }
- std::cout << "Произведение матриц:" << std::endl;
- for (int i = 0; i < rows; i++)
- {
- for (int j = 0; j < matrB.columns; j++)
- std::cout << c[i][j] << "\t";
- std::cout << std::endl;
- }
- for (int i = 0; i < rows; i++) // очистка
- {
- delete[] c[i];
- }
- return true;
- }
- std::cout << "Ошибка!";
- return false;
- }
- bool matrix::transp()
- {
- if (rows == columns) {
- std::cout << "Tранспонированная матрица A: \n";
- int arr1[10][10];
- int t = rows;
- rows = columns;
- columns = t;
- for (int i = 0; i < rows; i++)
- {
- for (int j = 0; j < columns; j++)
- {
- arr1[i][j] = Arr[j][i];
- Arr[j][i] = arr1[i][j];
- }
- }
- for (int i = 0; i < rows; i++)
- {
- for (int j = 0; j < columns; j++)
- {
- std::cout << arr1[i][j] << "\t"; // вывод трансп
- }
- std::cout << "\n";
- }
- return false;
- }
- else {
- std::cout << "Ошибка!";
- }
- }
- int main()
- {
- setlocale(LC_ALL, "Russian");
- matrix matrA, matrB;
- std::cout << "Введите размеры для матрицы A: \n";
- matrA.input();
- matrA.getElement();
- matrA.print();
- std::cout << "Введите размеры для матрицы B:";
- matrB.input();
- matrB.print();
- matrA.summMatrix(matrB); // сумма матриц
- matrA.multMatrix(matrB); // произведение матриц
- matrA.transp();
- matrA.del();
- matrB.del();
- getchar();
- getchar();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement