Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Program lab2;
- uses crt;
- const nmax = 10;
- type matr = array[1..nmax, 1..nmax] of integer;
- type mas = array [1..nmax] of integer;
- procedure Task;
- begin
- writeln('Гриценко Дмитрий Игоревич. Группа 6102. Вариант №6');
- writeln();
- writeln('Задание:');
- writeln('Получить одномерный массив');
- writeln('элементами которого будут номера последних отрицательных элементов строк матрицы');
- writeln('В полученном векторе решить задачу поиска');
- writeln('номера последнего четного элемента');
- writeln('Отсортировать в матрице');
- writeln('строки по убыванию значений элементов в последнем столбце');
- writeln();
- end;
- procedure InputMatr(var a: matr; n,m: integer); {ввод матрицы с клавиатуры}
- var i,j : integer;
- begin
- for i:=1 to n do
- for j:=1 to m do begin
- gotoxy (5*j, 15+i);
- readln(a[i,j])
- end;
- end;
- procedure GetMas(var a: matr; n,m: integer; var b: mas); {получение одномерного массива элементами которого будут номера последних отрицательных элементов строк матрицы}
- var i,j: integer;
- begin
- for i:=1 to n do begin
- j:=m;
- while (j>0) and (a[i,j]>=0) do begin
- j:=j-1;
- end;
- if j>0 then
- b[i]:=j
- else b[i]:=0;
- end;
- end;
- procedure ShowMas(var b: mas; n: integer); {Вывод массива на экран правее исходной матрицы}
- var i,j:integer;
- begin
- for i:=1 to n do begin
- gotoxy(55, 15+i);
- write(b[i]);
- end;
- gotoxy(2, 18+i);
- end;
- Function Search(var n: integer; b: mas):real; {функция поиска номера последнего четного элемента}
- var i:integer;
- begin
- i:=n;
- while (i>0) and (b[i] mod 2<>0) do
- i:=i-1;
- if (i>0) then
- Search:=i
- else Search:=0
- end;
- procedure SortMatr(var a:matr; n,m:integer); {сортировка исходной матрицы сортировкой Шелла}
- const t=5; h:array[1..t] of integer=(9,5,3,2,1);
- var l,i,j,k,v:integer;
- begin
- for l:=1 to t do begin
- k:=h[l];
- for i:=1 to n-k do
- if a[i,m] < a[i+k,m] then
- for j:=1 to m do begin
- v:=a[i,j];a[i,j]:=a[i+k,j];a[i+k,j]:=v;
- end;
- end;
- end;
- procedure GetMatr(var a:matr;n,m:integer); {вывод отсортированной матрицы правее массива}
- var i,j:integer;
- begin
- for i:=1 to n do
- for j:=1 to m do begin
- gotoxy (5*j+60,15+i);
- write(a[i,j]);
- end;
- gotoxy(2,30);
- end;
- var n,m:integer; a:matr; b:mas;
- begin
- Task;
- writeln('Введите количество строк');readln(n);
- writeln('Введите количество столбцов');readln(m);
- InputMatr(a,n,m);
- GetMas(a,n,m,b);
- ShowMas(b,n);
- writeln('Номер последнего четного элемента массива: ', Search(n,b));
- SortMatr(a,n,m);
- GetMatr(a,n,m);
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement