Advertisement
Guest User

Max Bychkov1919

a guest
Dec 7th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.66 KB | None | 0 0
  1.  
  2.  
  3. #include <iostream>
  4. #include <windows.h>
  5. #include <algorithm>
  6. #include<math.h>
  7. #include <cstdlib>
  8.  
  9. using namespace std;
  10.  
  11.  
  12.  
  13. int main()
  14. {
  15. short m;
  16. setlocale(LC_ALL, "rus");
  17. short a, b, c, d, e;
  18. short i,j;
  19. int x[5][5];
  20. cout << "Введите число М[2,5]=";
  21. while (!(cin >> m) || cin.get() != '\n' || (m > 5 || m < 2))
  22. {
  23. cin.clear();//Очищает поток
  24. cin.sync();//Удаляем данные из буфера
  25. cin.ignore(cin.rdbuf()->in_avail());
  26. cout << "Введите число М[2,5]=";
  27.  
  28. }
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36. if (m == 2)
  37. {
  38. cout << "Введите 1ое значение матрицы[1,100]= ";
  39. while (!(cin >> a) || cin.get() != '\n' || (a > 100 || a < 1))
  40. {
  41. cin.clear();//Очищает поток
  42. cin.sync();//Удаляем данные из буфера
  43. cin.ignore(cin.rdbuf()->in_avail());
  44. cout << "Не верный ввод!!! Введите число[1,100] : ";
  45.  
  46. }
  47. x[0][0] = a;
  48.  
  49. cout << "Введите 2ое значение матрицы[1,100]= ";
  50.  
  51. while (!(cin >> b) || cin.get() != '\n' || (b > 100 || b < 1))
  52. {
  53. cin.clear();//Очищает поток
  54. cin.sync();//Удаляем данные из буфера
  55. cin.ignore(cin.rdbuf()->in_avail());
  56. cout << "Не верный ввод!!! Введите число[1,100] : ";
  57.  
  58. }
  59.  
  60. x[0][1] = b;
  61.  
  62. cout << "Введите 3e значение матрицы[1,100]= ";
  63.  
  64. while (!(cin >> c) || cin.get() != '\n' || (c > 100 || c < 1))
  65. {
  66. cin.clear();//Очищает поток
  67. cin.sync();//Удаляем данные из буфера
  68. cin.ignore(cin.rdbuf()->in_avail());
  69. cout << "Не верный ввод!!! Введите число[1,100] : ";
  70.  
  71. }
  72.  
  73. x[1][0] = c;
  74.  
  75. cout << "Введите 4e значение матрицы[1,100]= ";
  76.  
  77. while (!(cin >> d) || cin.get() != '\n' || (d > 100 || d < 1))
  78. {
  79. cin.clear();//Очищает поток
  80. cin.sync();//Удаляем данные из буфера
  81. cin.ignore(cin.rdbuf()->in_avail());
  82. cout << "Не верный ввод!!! Введите число[1,100] : ";
  83.  
  84. }
  85.  
  86. x[1][1] = d;
  87. }
  88.  
  89.  
  90. if (m == 3)
  91. {
  92. cout << "Введите 1ое значение матрицы[1,100]= ";
  93. while (!(cin >> a) || cin.get() != '\n' || (a > 100 || a < 1))
  94. {
  95. cin.clear();//Очищает поток
  96. cin.sync();//Удаляем данные из буфера
  97. cin.ignore(cin.rdbuf()->in_avail());
  98. cout << "Не верный ввод!!! Введите число[1,100] : ";
  99.  
  100. }
  101. x[0][0] = a;
  102.  
  103. cout << "Введите 2ое значение матрицы[1,100]= ";
  104.  
  105. while (!(cin >> b) || cin.get() != '\n' || (b > 100 || b < 1))
  106. {
  107. cin.clear();//Очищает поток
  108. cin.sync();//Удаляем данные из буфера
  109. cin.ignore(cin.rdbuf()->in_avail());
  110. cout << "Не верный ввод!!! Введите число[1,100] : ";
  111.  
  112. }
  113.  
  114. x[0][1] = b;
  115.  
  116. cout << "Введите 3e значение матрицы[1,100]= ";
  117.  
  118. while (!(cin >> c) || cin.get() != '\n' || (c > 100 || c < 1))
  119. {
  120. cin.clear();//Очищает поток
  121. cin.sync();//Удаляем данные из буфера
  122. cin.ignore(cin.rdbuf()->in_avail());
  123. cout << "Не верный ввод!!! Введите число[1,100] : ";
  124.  
  125. }
  126.  
  127. x[0][2] = c;
  128. for ( i = 1; i < 3; i++)
  129. {
  130. for(j = 0; j < 3; j++)
  131. {
  132. x[i][j] = rand() % 100;
  133. }
  134. }
  135. }
  136.  
  137. if (m == 4)
  138. {
  139. cout << "Введите 1ое значение матрицы[1,100]= ";
  140. while (!(cin >> a) || cin.get() != '\n' || (a > 100 || a < 1))
  141. {
  142. cin.clear();//Очищает поток
  143. cin.sync();//Удаляем данные из буфера
  144. cin.ignore(cin.rdbuf()->in_avail());
  145. cout << "Не верный ввод!!! Введите число[1,100] : ";
  146.  
  147. }
  148. x[0][0] = a;
  149.  
  150. cout << "Введите 2ое значение матрицы[1,100]= ";
  151.  
  152. while (!(cin >> b) || cin.get() != '\n' || (b > 100 || b < 1))
  153. {
  154. cin.clear();//Очищает поток
  155. cin.sync();//Удаляем данные из буфера
  156. cin.ignore(cin.rdbuf()->in_avail());
  157. cout << "Не верный ввод!!! Введите число[1,100] : ";
  158.  
  159. }
  160.  
  161. x[0][1] = b;
  162.  
  163. cout << "Введите 3e значение матрицы[1,100]= ";
  164.  
  165. while (!(cin >> c) || cin.get() != '\n' || (c > 100 || c < 1))
  166. {
  167. cin.clear();//Очищает поток
  168. cin.sync();//Удаляем данные из буфера
  169. cin.ignore(cin.rdbuf()->in_avail());
  170. cout << "Не верный ввод!!! Введите число[1,100] : ";
  171.  
  172. }
  173.  
  174. x[0][2] = c;
  175.  
  176. cout << "Введите 4e значение матрицы[1,100]= ";
  177.  
  178. while (!(cin >> d) || cin.get() != '\n' || (d > 100 || d < 1))
  179. {
  180. cin.clear();//Очищает поток
  181. cin.sync();//Удаляем данные из буфера
  182. cin.ignore(cin.rdbuf()->in_avail());
  183. cout << "Не верный ввод!!! Введите число[1,100] : ";
  184.  
  185. }
  186.  
  187. x[0][3] = d;
  188.  
  189. for ( i = 1; i < 4; i++)
  190. {
  191. for (j = 0; j < 4; j++)
  192. {
  193. x[i][j] = rand() % 100;
  194. }
  195. }
  196. }
  197.  
  198. if (m == 5)
  199. {
  200. cout << "Введите 1ое значение матрицы[1,100]= ";
  201. while (!(cin >> a) || cin.get() != '\n' || (a > 100 || a < 1))
  202. {
  203. cin.clear();//Очищает поток
  204. cin.sync();//Удаляем данные из буфера
  205. cin.ignore(cin.rdbuf()->in_avail());
  206. cout << "Не верный ввод!!! Введите число[1,100] : ";
  207.  
  208. }
  209. x[0][0] = a;
  210.  
  211. cout << "Введите 2ое значение матрицы[1,100]= ";
  212.  
  213. while (!(cin >> b) || cin.get() != '\n' || (b > 100 || b < 1))
  214. {
  215. cin.clear();//Очищает поток
  216. cin.sync();//Удаляем данные из буфера
  217. cin.ignore(cin.rdbuf()->in_avail());
  218. cout << "Не верный ввод!!! Введите число[1,100] : ";
  219.  
  220. }
  221.  
  222. x[0][1] = b;
  223.  
  224. cout << "Введите 3e значение матрицы[1,100]= ";
  225.  
  226. while (!(cin >> c) || cin.get() != '\n' || (c > 100 || c < 1))
  227. {
  228. cin.clear();//Очищает поток
  229. cin.sync();//Удаляем данные из буфера
  230. cin.ignore(cin.rdbuf()->in_avail());
  231. cout << "Не верный ввод!!! Введите число[1,100] : ";
  232.  
  233. }
  234.  
  235. x[0][2] = c;
  236.  
  237. cout << "Введите 4e значение матрицы[1,100]= ";
  238.  
  239. while (!(cin >> d) || cin.get() != '\n' || (d > 100 || d < 1))
  240. {
  241. cin.clear();//Очищает поток
  242. cin.sync();//Удаляем данные из буфера
  243. cin.ignore(cin.rdbuf()->in_avail());
  244. cout << "Не верный ввод!!! Введите число[1,100] : ";
  245.  
  246. }
  247.  
  248. x[0][3] = d;
  249.  
  250. cout << "Введите 5e значение матрицы[1,100]= ";
  251.  
  252. while (!(cin >> e) || cin.get() != '\n' || (d > 100 || d < 1))
  253. {
  254. cin.clear();//Очищает поток
  255. cin.sync();//Удаляем данные из буфера
  256. cin.ignore(cin.rdbuf()->in_avail());
  257. cout << "Не верный ввод!!! Введите число[1,100] : ";
  258.  
  259. }
  260.  
  261. x[0][4] = e;
  262.  
  263. for ( i = 1; i < 5; i++)
  264. {
  265. for (j = 0; j < 5; j++)
  266. {
  267. x[i][j] = rand() % 100;
  268. }
  269. }
  270. }
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281. for ( i = 0; i < m; i++) //Вывести матрицу
  282. {
  283. for ( j = 0; j < m; j++)
  284. {
  285. cout << " [" << x[i][j] << "] ";
  286. if (j == m - 1)cout << "\n"<<endl;
  287. }
  288. }
  289.  
  290. for (short k = 0; k < m*m*m ; k++)
  291. {
  292.  
  293. for ( i = 0; i < m; i++)
  294. {
  295. for ( j = 0; j < m; j++)
  296. {
  297. if ((i + j == m - 1) || (i + j < m - 1)) //лежит на побочной диагонали или лежит выше побочной диагонали
  298. {
  299.  
  300. if (j + i + 1 != m)
  301. {
  302. if ( x[i][j] > x[i][j + 1] )
  303. {
  304. short tmp = x[i][j + 1];
  305. x[i][j + 1] = x[i][j];
  306. x[i][j] = tmp;
  307. }
  308. }
  309. else {
  310. if ((x[i + 1][0] < x[i][j]) && (i != m - 1))
  311. {
  312. short tmp = x[i + 1][0];
  313. x[i + 1][0] = x[i][j];
  314. x[i][j] = tmp;
  315. }
  316. }
  317. }
  318. else //лежит ниже побочной диагонали
  319. {
  320. x[i][j] = x[i][j] * -1;
  321. }
  322.  
  323. }
  324. }
  325. }
  326.  
  327.  
  328.  
  329.  
  330. if (m == 2 || m == 4)
  331. {
  332. for ( i = 0; i < m; i++)
  333. {
  334. for ( j = 0; j < m; j++)
  335. {
  336. if (i + j > m - 1)
  337. {
  338. x[i][j] = x[i][j] * -1;
  339. }
  340. }
  341. }
  342. }
  343.  
  344.  
  345. cout << endl;
  346.  
  347.  
  348. for ( i = 0; i < m; i++) //Вывод матрицы
  349. {
  350. for ( j = 0; j < m; j++)
  351. {
  352. cout << " [" <<x[i][j] << "] ";
  353. if (j == m - 1)cout << "\n"<<endl;
  354. }
  355. }
  356. system("pause");
  357. return 0;
  358. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement