task1.cpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #include <iostream>
  2. #include <stdexcept>
  3. void add_column(int** matrix, int rows, int cols, int* column, int position, int**& new_matrix) {
  4. if (rows != cols) {
  5. throw std::invalid_argument("Количество элементов в новом столбце должно совпадать с количеством строк матрицы.");
  6. }
  7. new_matrix = new int*[rows];
  8. for (int i = 0; i < rows; ++i) {
  9. new_matrix[i] = new int[cols + 1];
  10. for (int j = 0; j < position; ++j) {
  11. new_matrix[i][j] = matrix[i][j];
  12. }
  13. new_matrix[i][position] = column[i];
  14. for (int j = position; j < cols; ++j) {
  15. new_matrix[i][j + 1] = matrix[i][j];
  16. }
  17. }
  18. }
  19. int main() {
  20. int rows = 3, cols = 3;
  21. int** matrix = new int*[rows];
  22. for (int i = 0; i < rows; ++i) {
  23. matrix[i] = new int[cols];
  24. }
  25. matrix[0][0] = 1; matrix[0][1] = 2; matrix[0][2] = 3;
  26. matrix[1][0] = 4; matrix[1][1] = 5; matrix[1][2] = 6;
  27. matrix[2][0] = 7; matrix[2][1] = 8; matrix[2][2] = 9;
  28. int column[] = {10, 11, 12};
  29. int position = 1;
  30. int** new_matrix;
  31. add_column(matrix, rows, cols, column, position, new_matrix);
  32. for (int i = 0; i < rows; ++i) {
  33. for (int j = 0; j < cols + 1; ++j) {
  34. std::cout << new_matrix[i][j] << " ";
  35. }
  36. std::cout << std::endl;
  37. }
  38. for (int i = 0; i < rows; ++i) {
  39. delete[] matrix[i];
  40. delete[] new_matrix[i];
  41. }
  42. delete[] matrix;
  43. delete[] new_matrix;
  44. return 0;
  45. }