Advertisement
Guest User

laba2

a guest
Oct 19th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 3.22 KB | None | 0 0
  1. Program lab2;
  2. uses crt;
  3. const nmax = 10;
  4. type matr = array[1..nmax, 1..nmax] of integer;
  5. type mas = array [1..nmax] of integer;
  6.  
  7. procedure Task;
  8.   begin
  9.     writeln('Гриценко Дмитрий Игоревич. Группа 6102. Вариант №6');
  10.     writeln();
  11.     writeln('Задание:');
  12.     writeln('Получить одномерный массив');
  13.     writeln('элементами которого будут номера последних отрицательных элементов строк матрицы');
  14.     writeln('В полученном векторе решить задачу поиска');
  15.     writeln('номера последнего четного элемента');
  16.     writeln('Отсортировать в матрице');
  17.     writeln('строки по убыванию значений элементов в последнем столбце');
  18.     writeln();
  19.   end;
  20.  
  21. procedure InputMatr(var a: matr; n,m: integer); {ввод матрицы с клавиатуры}
  22.  var i,j : integer;
  23.  begin
  24.   for i:=1 to n do
  25.    for j:=1 to m do begin
  26.     gotoxy (5*j, 15+i);
  27.     readln(a[i,j])
  28.    end;
  29.  end;
  30.  
  31. procedure GetMas(var a: matr; n,m: integer; var b: mas); {получение одномерного массива элементами которого будут номера последних отрицательных элементов строк матрицы}
  32.  var i,j: integer;
  33.  begin
  34.   for i:=1 to n do begin
  35.    j:=m;
  36.    while (j>0) and (a[i,j]>=0) do begin
  37.     j:=j-1;
  38.    end;
  39.    if j>0 then
  40.     b[i]:=j
  41.    else b[i]:=0;
  42.   end;
  43.  end;
  44.  
  45. procedure ShowMas(var b: mas; n: integer); {Вывод массива на экран правее исходной матрицы}
  46.  var i,j:integer;
  47.  begin
  48.  for i:=1 to n do begin
  49.    gotoxy(55, 15+i);
  50.    write(b[i]);
  51.   end;
  52.   gotoxy(2, 18+i);
  53.  end;
  54.  
  55. Function Search(var n: integer; b: mas):real; {функция поиска номера последнего четного элемента}
  56.  var i:integer;
  57.  begin
  58.   i:=n;
  59.   while (i>0) and (b[i] mod 2<>0) do
  60.    i:=i-1;
  61.   if (i>0) then
  62.    Search:=i
  63.   else Search:=0
  64.  end;
  65.  
  66. procedure SortMatr(var a:matr; n,m:integer); {сортировка исходной матрицы сортировкой Шелла}
  67.  const t=5; h:array[1..t] of integer=(9,5,3,2,1);
  68.  var l,i,j,k,v:integer;
  69.  begin
  70.   for l:=1 to t do begin
  71.    k:=h[l];
  72.    for i:=1 to n-k do
  73.     if a[i,m] < a[i+k,m] then
  74.     for j:=1 to m do begin
  75.      v:=a[i,j];a[i,j]:=a[i+k,j];a[i+k,j]:=v;
  76.     end;
  77.    end;
  78.  end;
  79.  
  80. procedure GetMatr(var a:matr;n,m:integer); {вывод отсортированной матрицы правее массива}
  81.  var i,j:integer;
  82.  begin
  83.   for i:=1 to n do
  84.    for j:=1 to m do begin
  85.     gotoxy (5*j+60,15+i);
  86.     write(a[i,j]);
  87.    end;
  88.    gotoxy(2,30);
  89.  end;
  90.  
  91. var n,m:integer; a:matr; b:mas;
  92. begin
  93.  Task;
  94.  writeln('Введите количество строк');readln(n);
  95.  writeln('Введите количество столбцов');readln(m);
  96.  InputMatr(a,n,m);
  97.  GetMas(a,n,m,b);
  98.  ShowMas(b,n);
  99.  writeln('Номер последнего четного элемента массива: ', Search(n,b));
  100.  SortMatr(a,n,m);
  101.  GetMatr(a,n,m);
  102. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement