Advertisement
Guest User

Untitled

a guest
Mar 26th, 2019
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.34 KB | None | 0 0
  1. #include "pch.h"
  2. #include <iostream>
  3. #include <ctime>
  4. using namespace std; // все как обычно
  5.  
  6. class vvod { // объявление класса
  7. protected: // переменные, которые будем передавать во второй класс
  8. int n;
  9. int **array;
  10. public:
  11. vvod(){} // конструктор по умолчанию
  12. vvod(int **array) { // конструктор с параметром
  13. this->array = array;
  14. }
  15. ~vvod() { // деструктор
  16. for (int i = 0; i < n; i++) {
  17. delete[] array[i];
  18. }
  19. delete[] array;
  20. }
  21. void setarray() { // выделение памяти под массив
  22. cout << "Введите размер квадратной матрицы: ";
  23. cin >> n;
  24. cout << endl;
  25. array = new int*[n];
  26. for (int i = 0; i < n; i++) {
  27. array[i] = new int[n];
  28. }
  29. }
  30. void zapolnenie() { // рандомное заполнение массива, ничего необычного
  31. for (int i = 0; i < n; i++) {
  32. for (int j = 0; j < n; j++) {
  33. array[i][j] = rand() % 30;
  34. }
  35. }
  36. }
  37. void showarray() { // вывод массива на экран, тоже все как обычно
  38. cout << "Массив:" << endl;
  39. for (int i = 0; i < n; i++) {
  40. for (int j = 0; j < n; j++) {
  41. cout << array[i][j] << "\t";
  42. }
  43. cout << endl;
  44. }
  45. }
  46. };
  47.  
  48. class solution : public vvod { // класс наследователь
  49. private:
  50. int i1, j1, sum = 0, temp, max = -1; // переменные, которые будем использовать здесь
  51. public:
  52. solution(){} // конструктор по умолчанию
  53. solution(int i1, int j1, int temp, int sum, int **array, int max) : vvod(array) { // конструктор с параметром
  54. this->i1 = i1;
  55. this->j1 = j1;
  56. this->sum = sum;
  57. this->temp = temp;
  58. this->max = max;
  59. }
  60. void fun() { // метод основной, я ничего не менял почти, кроме того, что за изначальный максимум взял -1
  61. for (int i = 0; i < n; i++) {
  62. for (int j = 0; j < n; j++) {
  63. if (array[i][j] > max) {
  64. max = array[i][j]; // без этой строки оно не работало
  65. i1 = i;
  66. j1 = j;
  67. }
  68. }
  69. }
  70. if (j1 > i1)
  71. {
  72. cout << "Максимальный элемент расположен выше главной диагонали, транспанируем матрицу:" << endl;
  73. for (int i = 0; i < n; i++) {
  74. for (int j = 1; j < n; j++) {
  75. temp = array[i][j];
  76. array[i][j] = array[j][i];
  77. array[j][i] = temp; // дальше все как у тебя в решении было
  78. }
  79. }
  80. showarray();
  81. }
  82. else if (j1 < i1)
  83. {
  84. for (int i = 0; i < n; i++) {
  85. sum += array[i][j1];
  86. sum += array[i1][i];
  87. }
  88. sum -= array[i1][j1];
  89. cout << "Элемент находится ниже главной диагонали, сумма элементов строки и столбца = " << sum;
  90. }
  91. else if(j1 == i1)
  92. {
  93. cout << "Элемент на главной диагонали";
  94. }
  95. }
  96. };
  97.  
  98.  
  99. int main()
  100. {
  101. setlocale(LC_ALL, "Russian");
  102. srand(time(NULL)); //
  103. solution obj; // создание объекта класса
  104. obj.setarray(); // вызов методов
  105. obj.zapolnenie();
  106. obj.showarray();
  107. obj.fun();
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement