Guest User

Untitled

a guest
Jan 21st, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 7.00 KB | None | 0 0
  1. program MaxMinStol;
  2.  
  3. type
  4.   mass = array [1..5, 1..5] of integer;
  5.  
  6. procedure Input(var A, B: mass);
  7. var
  8.   i, j, m, n: integer;
  9. begin
  10.   writeln('Первая матрица');
  11.   randomize;
  12.   for i := 1 to 5 do  
  13.   begin
  14.     for j := 1 to 5 do
  15.     begin
  16.       A[i, j] := random(5); write(A[i, j]:3)
  17.     end;
  18.     writeln;
  19.   end;
  20.   writeln;
  21.   writeln('Вторая матрица');
  22.   for m := 1 to 5 do  
  23.   begin
  24.     for n := 1 to 5 do
  25.     begin
  26.       B[m, n] := random(5); write(B[m, n]:3)
  27.     end;
  28.     writeln;
  29.   end;
  30. end;
  31.  
  32. procedure Mult(var A, B, C: mass);
  33. var
  34.   k, l: integer;
  35. begin
  36.   for k := 1 to 5 do
  37.   begin
  38.     for l := 1 to 5 do
  39.     begin
  40.       C[k,l]:= A[k, 1] * B[1, l] + A[k, 2] * B[2, l] + A[k, 3] * B[3, l] + A[k, 4] * B[4, l] + A[k, 5] * B[5, l];
  41.       write(C[k,l]:3)
  42.     end;
  43.     writeln;
  44.   end;
  45. end;
  46.  
  47. procedure Obmen(var A: mass);
  48. var
  49.   max,min,maxi,mini,i, j, k: integer;
  50. begin
  51.   max := A[1, 1]; min := A[1, 1]; maxi := 1; mini := 1;
  52.   for j := 1 to 5 do
  53.     for i := 1 to 5 do
  54.     begin
  55.       if A[i, j] > max then begin max := A[i, j]; maxi := j; end;
  56.       if A[i, j] < min then begin min := A[i, j]; mini := j; end;
  57.     end;
  58.   for i := 1 to 5 do
  59.   begin
  60.     k := A[i, mini]; A[i, mini] := A[i, maxi]; A[i, maxi] := k;
  61.   end;
  62.   writeln('Максимальный элемент = ', max, ' в столбце ', maxi);
  63.   writeln('Минимальный элемент = ', min, ' в столбце ', mini);
  64.   writeln;
  65.   writeln('Обмен столбцами:');
  66.   for i := 1 to 5 do
  67.   begin
  68.     for j := 1 to 5 do
  69.       write(A[i, j]:3);
  70.     writeln;
  71.   end;
  72. end;
  73.  
  74. procedure Snake(var A: mass);
  75. var
  76.   i, j: integer;
  77. begin
  78.   writeln('Вывод массива змейкой:');
  79.   for i := 1 to 5 do
  80.   begin
  81.     if i mod 2 <> 0 then for j := 1 to 5 do
  82.         write(A[i, j]:3);
  83.     if i mod 2 = 0 then for j := 5 downto 1 do
  84.         write(A[i, j]:3);
  85.     writeln;
  86.   end;
  87. end;
  88.  
  89. function Sumnadgl(A: mass): integer;
  90. var
  91.   i, j, s: integer;
  92. begin
  93.   write('Сумма чисел над главной диагональю - ');
  94.   s := 0;
  95.   for j := 1 to 5 do
  96.     for i := 1 to 5 do
  97.       if j > i then s := s + A[i, j];
  98.   writeln(s);
  99. end;
  100.  
  101. function Sumpodgl(A: mass): integer;
  102. var
  103.   i, j, s: integer;
  104. begin
  105.   write('Сумма чисел под главной диагональю - ');
  106.   s := 0;
  107.   for j := 1 to 5 do
  108.     for i := 1 to 5 do
  109.       if j < i then s := s + A[i, j];
  110.   writeln(s);
  111. end;
  112.  
  113. function Sumnagl(A: mass): integer;
  114. var
  115.   i, j, s: integer;
  116. begin
  117.   write('Сумма чисел на главной диагонали - ');
  118.   s := 0;
  119.   for j := 1 to 5 do
  120.     for i := 1 to 5 do
  121.       if j = i then s := s + A[i, j];
  122.   writeln(s);
  123. end;
  124.  
  125. function Sumnadpob(A: mass): integer;
  126. var
  127.   i, j, s: integer;
  128. begin
  129.   write('Сумма чисел над побочной диагональю - ');
  130.   s := 0;
  131.   for j := 1 to 5 do
  132.     for i := 1 to 5 do
  133.       if i + j < 6 then s := s + A[i, j];
  134.   writeln(s);
  135. end;
  136.  
  137. function Sumpodpob(A: mass): integer;
  138. var
  139.   i, j, s: integer;
  140. begin
  141.   write('Сумма чисел под побочной диагональю - ');
  142.   s := 0;
  143.   for j := 1 to 5 do
  144.     for i := 1 to 5 do
  145.       if i + j > 6 then s := s + A[i, j];
  146.   writeln(s);
  147. end;
  148.  
  149. function Sumnapob(A: mass): integer;
  150. var
  151.   i, j, s: integer;
  152. begin
  153.   write('Сумма чисел на побочной диагонали - ');
  154.   s := 0;
  155.   for j := 1 to 5 do
  156.     for i := 1 to 5 do
  157.       if i + j = 6 then s := s + A[i, j];
  158.   writeln(s);
  159. end;
  160.  
  161. procedure Spiral(var A: mass);
  162. var
  163.   i, j, p: integer;
  164. begin
  165.   writeln('Вывод массива спиралью');
  166.   for p := 1 to 5 do
  167.   begin
  168.     for j := p to 6 - p do write(A[p, j]:3);
  169.     for i := p + 1 to 6 - p do write(A[i, 6 - p]:3);
  170.     for j := 5 - p downto p do write(A[6 - p, j]:3);
  171.     for i := 5 - p downto p + 1 do write(A[i, p]:3);
  172.   end;
  173.   writeln;
  174. end;
  175.  
  176. procedure Sort(var A:mass);
  177. var
  178. p, T, i, j: integer;
  179. begin
  180. writeln('Сортировка массива по четным\нечетным столбцам');
  181.   for j := 1 to 5 do
  182.   begin
  183.     if j mod 2 <> 0 then
  184.       for p := 1 to 4 do
  185.         for i := 1 to 4 do
  186.           if A[i, j] < A[i + 1, j]  then
  187.           begin
  188.             T := A[i, j]; A[i, j] := A[i + 1, j]; A[i + 1, j] := T;
  189.           end;
  190.     if j mod 2 = 0 then
  191.       for p := 1 to 4 do
  192.         for i := 1 to 4 do
  193.           if A[i, j] > A[i + 1, j]  then
  194.           begin
  195.             T := A[i, j]; A[i, j] := A[i + 1, j]; A[i + 1, j] := T;
  196.           end;
  197.   end;
  198.   for i := 1 to 5 do
  199.   begin
  200.     for j := 1 to 5 do
  201.       write(A[i, j]:3);
  202.     writeln;
  203.   end;
  204. end;
  205.  
  206. var
  207.   A, B, C: mass;  n: integer;
  208.  
  209. begin
  210. writeln('Добро пожаловать в программу "Двумерный массив"');
  211. writeln('Нажмите 1, чтобы ввести 2 рандомных двумерных массива');
  212. writeln('Нажмите 2, чтобы найти в первом массиве максимальный и минимальный элементы и поменять местами их столбцы');
  213. writeln('Нажмите 3, чтобы вывести первый массив змейкой');
  214. writeln('Нажмите 4, чтобы вывести первый массив спиралью');
  215. writeln('Нажмите 5, чтобы найти в первом массиве сумму чисел над главной диагональю');
  216. writeln('Нажмите 6, чтобы найти в первом массиве сумму чисел под главной диагональю');
  217. writeln('Нажмите 7, чтобы найти в первом массиве сумму чисел на главной диагонали');
  218. writeln('Нажмите 8, чтобы найти в первом массиве сумму чисел над побочной диагональю');
  219. writeln('Нажмите 9, чтобы найти в первом массиве сумму чисел под побочной диагональю');
  220. writeln('Нажмите 10, чтобы найти в первом массиве сумму чисел на побочной диагонали');
  221. writeln('Нажмите 11, чтобы сортировать первый массив по четным\нечетным столбцам');
  222. writeln('Нажмите 12, чтобы вычислить произведение двух матриц');
  223. writeln('Нажмите 13, чтобы закончить работу с программой');
  224. while (true) do
  225. begin
  226. readln(n);
  227. if n=1 then Input(A, B);
  228. if n=2 then Obmen(A);
  229. if n=3 then Snake(A);
  230. if n=4 then Spiral(A);
  231. if n=5 then Sumnadgl(A);
  232. if n=6 then Sumpodgl(A);
  233. if n=7 then Sumnagl(A);
  234. if n=8 then Sumnadpob(A);
  235. if n=9 then Sumpodpob(A);
  236. if n=10 then Sumnapob(A);
  237. if n=11 then Sort(A);
  238. if n=12 then begin writeln('Произведение матриц'); Mult(A,B,C); end;
  239. if n=13 then  break;
  240. end;
  241.  
  242.  writeln('До встречи!');
  243. end.
Add Comment
Please, Sign In to add comment