fork download
  1.  
  2.  
  3. #include <iostream>
  4. #include <math.h>
  5. const int m_SizeMatrix = 5;
  6. const int m_Z = 5;
  7.  
  8. int GetIndex(int row, int col, int rows = m_SizeMatrix)
  9. {
  10. return col*rows + row;
  11. }
  12.  
  13. int main()
  14. {
  15. int matrix[m_SizeMatrix*m_SizeMatrix];
  16. for (int index=0; index<m_SizeMatrix*m_SizeMatrix; ++index)
  17. matrix[index] =round(fabs(sin(index)*10000)) + 10000;
  18. std::cout << "Matrix:\n";
  19. for (int row=0; row<m_SizeMatrix; ++row)
  20. {
  21. for (int col=0; col<m_SizeMatrix; ++col)
  22. std::cout << matrix[GetIndex(row, col)] << " ";
  23. std::cout << "\n";
  24. }
  25.  
  26. int min = matrix[m_SizeMatrix]; // Берем первый элемент выше диоганали
  27. int max = matrix[1]; // Берем первый элемент ниже диоганали
  28. //Найти минимальный элемент, лежащий выше главной диагонали, и максимальный элемент, лежащий ниже главной диагонали.
  29. for (int col=0; col<m_SizeMatrix; ++col)
  30. for (int row=0; row<m_SizeMatrix; ++row)
  31. {
  32. if (row < col && min > matrix[GetIndex(row, col)])
  33. min = matrix[GetIndex(row, col)];
  34. if (row > col && max > matrix[GetIndex(row, col)])
  35. max = matrix[GetIndex(row, col)];
  36. }
  37. std::cout << "1. min:"<<min<<"\n";
  38. std::cout << "1. max:"<<max<<"\n\n";
  39.  
  40. //Меняя местами столбцы матрицы, отсортировать по возрастанию ее первую строку.
  41. for (int col=0; col<m_SizeMatrix; ++col)
  42. {
  43. int mincol = col;
  44. for (int col2=col+1; col2<m_SizeMatrix; ++col2)
  45. if (matrix[GetIndex(0, col2)]<matrix[GetIndex(0, mincol)])
  46. mincol = col2;
  47. if (mincol != col)
  48. for (int row=0; row<m_SizeMatrix; ++row)
  49. {
  50. int mem = matrix[GetIndex(row, col)];
  51. matrix[GetIndex(row, col)] = matrix[GetIndex(row, mincol)];
  52. matrix[GetIndex(row, mincol)] = mem;
  53. }
  54. }
  55. std::cout << "2. Matrix:\n";
  56. for (int row=0; row<m_SizeMatrix; ++row)
  57. {
  58. for (int col=0; col<m_SizeMatrix; ++col)
  59. std::cout << matrix[GetIndex(row, col)] << " ";
  60. std::cout << "\n";
  61. }
  62.  
  63. //Добавить Z столбцов в конец матрицы.
  64. int newMatrix[m_SizeMatrix*m_SizeMatrix + m_Z*m_SizeMatrix];
  65. for (int index=0; index<(m_SizeMatrix + m_Z)*m_SizeMatrix; ++index)
  66. {
  67. if (index<m_SizeMatrix*m_SizeMatrix)
  68. newMatrix[index] = matrix[index];
  69. else
  70. newMatrix[index] =round(fabs(sin(index)*10000)) + 10000;
  71. }
  72.  
  73. std::cout << "3. Matrix:\n";
  74. for (int row=0; row<m_SizeMatrix; ++row)
  75. {
  76. for (int col=0; col<m_SizeMatrix+m_Z; ++col)
  77. std::cout << newMatrix[GetIndex(row, col)] << " ";
  78. std::cout << "\n";
  79. }
  80.  
  81. }
  82.  
Success #stdin #stdout 0s 3340KB
stdin
Standard input is empty
stdout
Matrix:
10000 19589 15440 16503 19129 
18415 12794 20000 12879 18367 
19093 16570 15366 19614 10089 
11411 19894 14202 17510 18462 
17568 14121 19906 11499 19056 
1. min:10089
1. max:11411

2. Matrix:
10000 15440 16503 19129 19589 
18415 20000 12879 18367 12794 
19093 15366 19614 10089 16570 
11411 14202 17510 18462 19894 
17568 19906 11499 19056 14121 
3. Matrix:
10000 15440 16503 19129 19589 11324 19880 14282 17451 18509 
18415 20000 12879 18367 12794 17626 14040 19918 11586 19018 
19093 15366 19614 10089 16570 19564 15514 16435 19165 11236 
11411 14202 17510 18462 19894 12709 19999 12964 18318 17683 
17568 19906 11499 19056 14121 16636 15291 19638 10177 19538