Guest User

Untitled

a guest
Oct 23rd, 2019
90
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <Windows.h>
  3. #define N 25
  4. using namespace std;
  5.  
  6. // Функция ввода матрицы
  7. int Enter_Matrix(int Array[][N], int& m, int& n)
  8. {
  9. // Ввод размерности матрицы и проверки её на отрицательность
  10. printf("\n Введи размерности матрицы: ");
  11. while (1)
  12. {
  13. scanf_s("%d %d", &m, &n);
  14. if ((n > 1) && (n <= N) && (m > 1)) break;
  15. else printf(" Неверный ввод! Повторите: ");
  16. }
  17. // Ввод матрицы через пробел
  18. printf(" Введите матрицу:\n");
  19. for (int i = 0; i < m; i++)
  20. for (int j = 0; j < n; j++)
  21. scanf_s("%d", &Array[i][j]);
  22. return Array[m][n];
  23. }
  24.  
  25. // Функция вывода матрицы
  26. void Print_Matrix(int Array[][N], int m, int n)
  27. {
  28. printf("\n Результат выполнения:\n");
  29. for (int i = 0; i < m; i++)
  30. {
  31. for (int j = 0; j < n; j++)
  32. printf("%3d ", Array[i][j]);
  33. printf("\n");
  34. }
  35. }
  36.  
  37. // Функция, переставляющая строки и столбцы
  38. int Matrix(int Array[][N], int m, int n, int&s_max, int&c_max)
  39. {
  40. int Max = Array[0][0];
  41. // Определение индексов максимального элемента матрицы
  42. for (int i = 0; i < m; i++)
  43. for (int j = 0; j < n; j++)
  44. {
  45. if (Array[i][j] > Max)
  46. {
  47. Max = Array[i][j];
  48. s_max = i;
  49. c_max = j;
  50. }
  51. }
  52. // Перемещение строк
  53. for (int j = 0; j < n; j++)
  54. {
  55. int t = Array[0][j];
  56. Array[0][j] = Array[s_max][j];
  57. Array[s_max][j] = t;
  58. }
  59. // Перемещение столбцов
  60. for (int i = 0; i < m; i++)
  61. {
  62. int t = Array[i][0];
  63. Array[i][0] = Array[i][c_max];
  64. Array[i][c_max] = t;
  65. }
  66. return Array[m][n];
  67. }
  68.  
  69. int main()
  70. {
  71. // Подключение русского языка
  72. SetConsoleCP(1251);
  73. SetConsoleOutputCP(1251);
  74.  
  75. int Array[N][N], m = 0, n = 0, s_max = 0, c_max = 0;
  76. printf(" Дана матрица размером M*N.\n Программа переставляет строки и столбцы местами таким образом, чтобы максимальный элемент матрицы оказался в левом-верхнем углу.\n");
  77. Enter_Matrix(Array, m, n); // Ввод матрицы
  78. Matrix(Array, m, n, s_max, c_max); // Перемещение строк и столбцов
  79. Print_Matrix(Array, m, n); // Вывод готовой матрицы
  80. return 0;
  81. }
RAW Paste Data