Построение вектора из элементов матрицы - 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.
Объяснение кода листинга программы
Список действий в коде:
- Объявление типов данных для матрицы и вектора.
- Создание функции для поиска максимального элемента в строке матрицы.
- Создание процедуры для перестановки элементов в матрице.
- Создание процедуры для сортировки элементов в матрице.
- Инициализация вектора нулями.
- Сортировка элементов в матрице с помощью процедуры BubbleSort.
- Инициализация переменных для цикла.
- Проход по всем элементам матрицы и добавление единицы к индексу максимального элемента в соответствующем векторе.
- Сортировка элементов в каждом векторе с помощью процедуры BubbleSort.
- Вывод максимальных значений вектора.
- Ввод размера матрицы и заполнение ее элементами.
- Вывод матрицы на экран.
- Вычисление максимальных значений в каждой строке матрицы и запись их в вектор.
- Вывод значений вектора на экран.
- Ввод данных для матрицы и вектора.
- Завершение работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д