Построение вектора из элементов матрицы - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Помогите найти в чем проблема Пусть дана матрица А(n*n). Постройте вектор, каждый элемент которого равен наибольшему количеству равных элементов в соответствующей строке матрицы А. Воспользуйтесь функцией, которая определяет это количество в i-строке матрицы А
program qwe;
const
  nmax=20;
type
  tVec=array [1..nmax] of integer;
  tMas=array [1..nmax,1..nmax] of integer;
 
function MaxEq(m: tmas; n, r: integer): integer;
var
  i, j, c,p: integer;
  b: tVec;
begin
  for i:=1 to n do begin
    b[i]:=1;
    for j:=i+1 to n do if m[r,i]=m[r,j] then inc(b[i]);
  end;
  c:=b[1];
  for i:=2 to n do if b[i]>c then c:=b[i];
  MaxEq:=c;
end;
 
var
  n,m, i, j: integer;
  a: tMas;
  v: tVec;
begin
    Write('Введите размерность:');
    ReadLn(n,m);
  WriteLn('Введите элементы матрицы:');
  for i:=1 to n do
   begin
   for j:=1 to m do
    Read(a[i,j]);
    end;
  writeln('Матрица*');
  for i:=1 to n do
   begin
    for j:=1 to m do
     write(a[i,j]:4 );
     writeln;
     end;
  writeln('Вектор');
  for i:=1 to n do begin
    v[i]:=MaxEq(a,n,i);
    end;
  for i:=1 to n do begin
   if v[i]=1 then v[i]:=0;
   write(v[i]:4)
  end; WriteLn;
end.

Решение задачи: «Построение вектора из элементов матрицы»

textual
Листинг программы
program qwe;
 
type
  tVec=array of integer;
  tMas=array of tvec;
 
 
function MaxEq(m: tmas; i:dword): dword;
 
procedure swap( var a, b:integer );
var
  temp : integer;
begin
  temp := a;
  a := b;
  b := temp;
end;
 
procedure BubbleSort( var a: array of integer );
var
  n, newn, i:integer;
begin
  n := high( a );
  repeat
    newn := 0;
    for i := 1 to n   do
      begin
        if a[ i - 1 ] > a[ i ] then
          begin
            swap( a[ i - 1 ], a[ i ]);
            newn := i ;
          end;
      end ;
    n := newn;
  until n = 0;
end;
 
var
  v:tvec;
  j,p:dword;
  t:integer;
begin
  SetLength(v,length(m));
  for j:=0 to length(v) do v[j]:=0;
  BubbleSort(m[i]);
  t:=m[0,i]; j:=1; p:=0;
  while j<>length(m) do
  begin
    if m[i,j-1]=m[i,j] then inc(v[p]) else inc(p);
    inc(j);
  end;
  BubbleSort(v);
  MaxEq:=v[length(v)-1]+1;
end;
 
var
  n, i, j: integer;
 // m:dword;
  a: tMas;
  v: tVec;
begin
  randomize;
//    Write('Введите размерность:');
//    ReadLn(n,m);
   n:=8;
  SetLength(a,n);
  SetLength(v,n);
  WriteLn('Введите элементы матрицы:');
  for i:=0 to n-1 do
   begin
     SetLength(a[i],n);
   for j:=0 to n-1 do
///    Read(a[i,j]);
      a[i,j]:=Random(3);
    end;
  writeln('Матрица*');
  for i:=0 to n-1 do
   begin
    for j:=0 to n-1 do
     write(a[i,j]:4 );
     writeln;
     end;
  writeln('Вектор');
  for i:=0 to n-1 do begin
    v[i]:=MaxEq(a,i);
    end;
  for i:=0 to n-1 do begin
   if v[i]=1 then v[i]:=0;
   write(v[i]:4)
  end; WriteLn;
  readln;
end.

Объяснение кода листинга программы

Список действий в коде:

  1. Объявление типов данных для матрицы и вектора.
  2. Создание функции для поиска максимального элемента в строке матрицы.
  3. Создание процедуры для перестановки элементов в матрице.
  4. Создание процедуры для сортировки элементов в матрице.
  5. Инициализация вектора нулями.
  6. Сортировка элементов в матрице с помощью процедуры BubbleSort.
  7. Инициализация переменных для цикла.
  8. Проход по всем элементам матрицы и добавление единицы к индексу максимального элемента в соответствующем векторе.
  9. Сортировка элементов в каждом векторе с помощью процедуры BubbleSort.
  10. Вывод максимальных значений вектора.
  11. Ввод размера матрицы и заполнение ее элементами.
  12. Вывод матрицы на экран.
  13. Вычисление максимальных значений в каждой строке матрицы и запись их в вектор.
  14. Вывод значений вектора на экран.
  15. Ввод данных для матрицы и вектора.
  16. Завершение работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.333 из 5
Похожие ответы