Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program Laba_6;
- {$APPTYPE CONSOLE}
- uses
- SysUtils;
- Var
- n,i,j,k,j1,i1,count,max,size:Integer;
- flag:Boolean;
- mas:array of array of Integer;
- answer:array of Integer;
- {n - размерность массива
- }
- begin
- flag:=False;
- //Ввод длинны массива
- while not flag do
- begin
- write('Input size of the array: ');
- readln(i);
- //Проверка корректности ввода
- if (i>0) then
- begin
- writeln('-------------------------------------');
- j:=i;
- SetLength(mas,i,j); //Объявление длинны массива
- flag:=True;
- end
- else
- writeln('Icorrect input. Try again!');
- end;
- SetLength(answer,i*i);
- max:=0;
- //Ввод
- write('Input one by one array of ',i*i,' elements: ');
- n:=0;
- k:=0;
- while n<i do
- begin
- while k<j do
- begin
- read(mas[n][k]);
- if mas[n][k] > max then
- max:=mas[n][k];
- k:=k+1;
- end;
- n:=n+1;
- k:=0;
- end;
- j1:=0;
- i1:=0;
- size:=1;
- while max div 10 > 0 do //Поиск длинны самого крупного элемента матрицы
- begin
- size:=size+1;
- max:=max div 10;
- end;
- count:=0;
- answer[count]:=mas[i1,j1];
- count:=count+1;
- while count<i*i do
- begin
- //Сдвиг вниз
- if i1+1<=i-1 then
- begin
- i1:=i1+1;
- answer[count]:=mas[i1,j1];
- count:=count+1;
- end
- else //Сдвиг вправо
- begin
- j1:=j1+1;
- answer[count]:=mas[i1,j1];
- count:=count+1;
- end;
- //Диагональ вверх и вправо
- while (i1-1>=0) and (j1+1<=j-1) do
- begin
- i1:=i1-1;
- j1:=j1+1;
- answer[count]:=mas[i1,j1];
- count:=count+1;
- end;
- //Сдвиг вправо
- if j1+1<=j-1 then
- begin
- j1:=j1+1;
- answer[count]:=mas[i1,j1];
- count:=count+1;
- end
- else //Сдвиг вниз
- begin
- i1:=i1+1;
- answer[count]:=mas[i1,j1];
- count:=count+1;
- end;
- //По диагонали вниз и влево
- while (i1+1<=i-1) and (j1-1>=0) do
- begin
- i1:=i1+1;
- j1:=j1-1;
- answer[count]:=mas[i1,j1];
- count:=count+1;
- end;
- end;
- readln;
- writeln('-------------------------------------');
- {Вывод массива для себя любимого}
- n:=0;
- k:=0;
- while n<i do
- begin
- while k<j do
- begin
- write(mas[n][k]:size,' '); //Горжусь
- k:=k+1;
- end;
- writeln;
- n:=n+1;
- k:=0;
- end;
- //Вывод массива ответа чисел
- writeln('-------------------------------------');
- n:=0;
- while n<count do
- begin
- write(answer[n],' ');
- n:=n+1;
- end;
- readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement