Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2017, 15:33   #1
topchik
Новичок
Джуниор
 
Регистрация: 22.10.2017
Сообщений: 2
По умолчанию написать комментарий к каждой строчке

program lab3;

const nmax=10;

type matrix=array[0..nmax-1,0..nmax-1] of integer;

var n:integer;
a:matrix;

procedure inputn(var n:integer); //Ввод размера матрицы
begin {inputn}
repeat
writeln('Введите размер квадратной матрицы (1<=n<=10):');
readln(n);
until n<=10;
end; {inputn}

procedure printM(a:matrix; n:integer); //Вывод матрицы на экран
var i,j:integer;
begin {printM}
for i:=0 to n-1 do begin
for j:=0 to n-1 do
write(a[i,j]:4);
writeln;
end;
end; {printM}

procedure randommatrix(var a:matrix; n:integer); //Заполнение матрицы СЧ
var i,j:integer;
begin {randommatrix}
randomize;
for i:=0 to n-1 do
for j:=0 to n-1 do
a[i,j]:=random(sqr(n)-1)+1;
end; {randommatrix}

procedure Coordinates(k, n :integer; var i, j :integer); //Вычисление координат элемента в матрице,заполненной по схеме
var m,p:integer;
begin {Coordinates}
m:=n div 2;
if n mod 2 = 0 then
if ((n*n)/2 > k) then begin
i := n - 1 - k div m;
if i mod 2 = 0 then
j := n - 1 - k mod n
else
j := k mod n;
end
else begin
i := k div m - n;
if i mod 2 = 0 then
j := n - 1 - k mod n
else
j := k mod n;
end
else begin
if ((((n*n) div 2)+m) >= k) then begin
i := n - 1 - k div (m + 1);
if i mod 2 <> 0 then
j := n - k mod (n+1)
else
j := k mod (n+1);
end
else begin
i := (k - ((m + 1) * n)) div m;
if i mod 2 <> 0 then begin
p:=k mod m;
if p <> 0 then
j := m + p
else
j:= n-1;
end
else begin
p:=k mod m;
if p <> 0 then
j := n - p
else
j:=m+1;
end;
end;
end;
end; {Coordinates}

procedure fillmatrix(var a: matrix ; n:integer);
var i,j,k:integer;
begin {fillmatrix}
for k:=0 to n*n-1 do begin
coordinates(k,n,i,j);
//writeln(' ',k:3,i:3,j:3);
a[i,j]:=k;
end;
end; {fillmatrix}

procedure InsertSortEnd(var a: matrix; n:integer); //Сортировка вставками с конца массива
var
i, j, i1, j1, i2, j2, m, buf, k: integer;
begin {InsertSortEnd}
for k := n*n-2 downto 0 do begin
coordinates(k,n,i,j);
buf := a[i,j];
m := k + 1;
coordinates(m,n,i1,j1);
while (m <= (n*n-1)) and (a[i1,j1] < buf) do
begin
coordinates(m-1,n,i2,j2);
//writeln(i2,' ',j2);
a[i2,j2] := a[i1,j1];
m := m + 1;
coordinates(m,n,i1,j1);
end;
//writeln(i2,' ',j2);
a[i2,j2] := buf;
end;
end; {InsertSortEnd}

begin
inputn(n);
//writeln('Заполненная по схеме матрица имеет вид:');
//fillmatrix(a,n);
//printM(a,n);
randommatrix(a,n);
writeln('Исходная матрица имеет вид:');
printM(a,n);
InsertSortEnd(a,n);
writeln('Отсортированная матрица имеет вид:');
printM(a,n);
end.
topchik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пожалуйста,помогите написать коментарий к каждой строчке. ivan6799 Помощь студентам 1 15.10.2016 19:15
Помогите написать программы на С++. Желательно к каждой команде комментарий. Каждое задание отдельная программа vadres Помощь студентам 0 19.12.2013 18:46
Как автоматически применить формулу к каждой строчке диапазона lioon Microsoft Office Excel 3 24.10.2013 13:40
Коментарии к каждой строчке ganster Общие вопросы C/C++ 10 09.07.2012 22:42
К каждой строчке добавляется фраза Dominatorsha Общие вопросы Delphi 1 30.05.2011 16:21