Advertisement
Guest User

Untitled

a guest
Dec 13th, 2018
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 2.77 KB | None | 0 0
  1. program Laba_6;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6.   SysUtils;
  7.  
  8. Var
  9.   n,i,j,k,j1,i1,count,max,size:Integer;
  10.   flag:Boolean;
  11.   mas:array of array of Integer;
  12.   answer:array of Integer;
  13. {n - размерность массива
  14. }
  15.  
  16. begin
  17.   flag:=False;
  18. //Ввод длинны массива
  19.   while not flag do
  20.   begin
  21.     write('Input size of the array: ');
  22.     readln(i);
  23. //Проверка корректности ввода
  24.     if (i>0) then
  25.     begin
  26.       writeln('-------------------------------------');
  27.       j:=i;
  28.       SetLength(mas,i,j);  //Объявление длинны массива
  29.       flag:=True;
  30.     end
  31.     else
  32.       writeln('Icorrect input. Try again!');
  33.   end;
  34.   SetLength(answer,i*i);
  35.   max:=0;
  36. //Ввод
  37.   write('Input one by one array of ',i*i,' elements: ');
  38.   n:=0;
  39.   k:=0;
  40.   while n<i do
  41.   begin
  42.     while k<j do
  43.     begin
  44.       read(mas[n][k]);
  45.       if mas[n][k] > max then
  46.         max:=mas[n][k];
  47.       k:=k+1;
  48.     end;
  49.     n:=n+1;
  50.     k:=0;
  51.   end;
  52.   j1:=0;
  53.   i1:=0;
  54.   size:=1;
  55.   while max div 10 > 0 do      //Поиск длинны самого крупного элемента матрицы
  56.   begin
  57.     size:=size+1;
  58.     max:=max div 10;
  59.   end;
  60.  
  61.   count:=0;
  62.   answer[count]:=mas[i1,j1];
  63.   count:=count+1;
  64.   while count<i*i do
  65.   begin
  66.  
  67.     //Сдвиг вниз
  68.     if i1+1<=i-1 then
  69.     begin
  70.       i1:=i1+1;
  71.       answer[count]:=mas[i1,j1];
  72.       count:=count+1;
  73.     end
  74.     else   //Сдвиг вправо
  75.     begin
  76.       j1:=j1+1;
  77.       answer[count]:=mas[i1,j1];
  78.       count:=count+1;
  79.     end;
  80.     //Диагональ вверх и вправо
  81.     while (i1-1>=0) and (j1+1<=j-1) do
  82.     begin
  83.       i1:=i1-1;
  84.       j1:=j1+1;
  85.       answer[count]:=mas[i1,j1];
  86.       count:=count+1;
  87.     end;
  88.     //Сдвиг вправо
  89.     if j1+1<=j-1 then
  90.     begin
  91.       j1:=j1+1;
  92.       answer[count]:=mas[i1,j1];
  93.       count:=count+1;
  94.     end
  95.     else  //Сдвиг вниз
  96.     begin
  97.       i1:=i1+1;
  98.       answer[count]:=mas[i1,j1];
  99.       count:=count+1;
  100.     end;
  101.     //По диагонали вниз и влево
  102.     while (i1+1<=i-1) and (j1-1>=0) do
  103.     begin
  104.       i1:=i1+1;
  105.       j1:=j1-1;
  106.       answer[count]:=mas[i1,j1];
  107.       count:=count+1;
  108.     end;
  109.    end;
  110. readln;
  111.   writeln('-------------------------------------');
  112. {Вывод массива для себя любимого}
  113.   n:=0;
  114.   k:=0;
  115.   while n<i do
  116.   begin
  117.     while k<j do
  118.     begin
  119.       write(mas[n][k]:size,' '); //Горжусь
  120.       k:=k+1;
  121.     end;
  122.     writeln;
  123.     n:=n+1;
  124.     k:=0;
  125.   end;
  126.  
  127. //Вывод массива ответа чисел
  128.   writeln('-------------------------------------');
  129.   n:=0;
  130.   while n<count do
  131.   begin
  132.     write(answer[n],' ');
  133.     n:=n+1;
  134.   end;
  135.  
  136. readln;
  137. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement