2.cpp 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #include <iostream>
  2. using namespace std;
  3. int** create_matrix(int rows, int cols){ // создание матрицы
  4. int **matrix = new int *[rows]; // создание массива matrix с размером rows
  5. for (int i = 0; i < rows; i++){ // цикл от 0 до rows
  6. matrix[i] = new int [cols]; // создание массива с размером cols в текущем элементе
  7. }
  8. return matrix; // возвращение созданной матрицы
  9. }
  10. void input_matrix_elements(int **matrix, int rows, int cols){ // ввод элементов матрицы
  11. cout << endl << "Input elements of matrix: " << endl;
  12. for (int i = 0; i < rows; i++){
  13. for (int j = 0; j < cols; j++){
  14. cin >> matrix[i][j];
  15. }
  16. cout << endl;
  17. }
  18. }
  19. void output_matrix(int **matrix, int rows, int cols){ // вывод элментов матрицы
  20. for (int i = 0; i < rows; i++){
  21. for (int j = 0; j < cols; j++){
  22. cout << matrix[i][j] << "\t";
  23. }
  24. cout << endl;
  25. }
  26. }
  27. int** matrix_transposition(int **matrix, int rows, int cols){ // транспонирование матрицы
  28. int **new_matrix = create_matrix(cols, rows); // создание матрицы new_matrix с размером cols на rows
  29. for (int i = 0; i < rows; i++){ // цикл от 0 до rows
  30. for (int j = 0; j < cols; j++){ // цикл от 0 до cols
  31. new_matrix[j][i] = matrix[i][j]; // присваиваем элементу new_matrix под индексами [j][i] значение matrix под индексами [i][j]
  32. }
  33. }
  34. return new_matrix; // возвращаем транспонированную матрицу
  35. }
  36. void delete_matrix(int **matrix, int iterations){ // удаление матрицы
  37. for (int i = 0; i < iterations; i++){ // цикл от 0 до iterations
  38. delete[] matrix[i]; // удаление текущего элемента матрицы
  39. }
  40. delete[] matrix; // удаление матрицы
  41. }
  42. int main(){
  43. int rows, cols; // строки и столбцы матрицы
  44. // ввод размера матрицы
  45. cout << "Input rows of matrix: " << endl;
  46. cin >> rows;
  47. cout << "Input cols of matrix: " << endl;
  48. cin >> cols;
  49. // если размер меньше 0, то завершаем программу
  50. if ((rows < 1) || (cols < 1)){
  51. cout << "Size cannot be less than 1." << endl;
  52. return 0;
  53. }
  54. // инициализация матрицы с указанными размерами
  55. int **matrix = create_matrix(rows, cols);
  56. // ввод матрицы
  57. input_matrix_elements(matrix, rows, cols);
  58. // вывод матрицы
  59. cout << endl << "Entered matrix: " << endl;
  60. output_matrix(matrix, rows, cols);
  61. // Транспонирование введённой матрицы
  62. int **new_matrix = matrix_transposition(matrix, rows, cols);
  63. // вывод полученной матрицы
  64. cout << endl << "Transposed matrix: " << endl;
  65. output_matrix(new_matrix, cols, rows);
  66. // очистка ОЗУ
  67. delete_matrix(matrix, rows);
  68. delete_matrix(new_matrix, cols);
  69. // завершение программы
  70. return 0;
  71. }