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