ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Алгоритмы и программыНекоторые свойства матриц: ЗАДАЧА. Найти сумму элементов матрицы, лежащих выше главной диагонали. В матрице n строк и m столбцов.
s:=0; for i:=1 to n do for j:=1 to m do if j>i then s:=s+a[i,j]; MessageDlg('S=' +FloatToStrF(s,ffFixed,5,3),MtInformation,[mbOk],0);
Еще один вариант решения задачи
s:=0; for i:=1 to n do for j:=i+1 to m do s:=s+a[i,j]; ЗАДАЧА. Вычислить количество положительных элементов квадратной матрицы, расположенных по ее периметру и на диагоналях. Напомним, что в квадратной матрице число строк равно числу столбцов. Для i =1, n Ai,i – элемент главной диагонали. Аi,n-i+1 – элемент побочной диагонали. Элементы, находящиеся по периметру матрицы: А1,i – первая строка, АN,i – последняя строка, Аi,1 – первый столбец, Аi,N – последний столбец.
k:=0; for i:=1 to n do begin if (a[i,i]>0) then k:=k+1; if a[i,n-i+1]>0 then k:=k+1; end; for i:=2 to n-1 do begin if (a[1,i]>0) then k:=k+1; if (a[n,i]>0) then k:=k+1; if (a[i,1]>0) then k:=k+1; if (a[i,n]>0) then k:=k+1; end; if (n mod 2 <>0) and (a[(n div 2)+1,(n div 2)+1]>0) then k:=k-1; MessageDlg('K='+IntToStr(K), MtInformation,[mbOk],0); ЗАДАЧА. Преобразовать исходную матрицу так, чтобы первый элемент каждой строки был заменен средним арифметическим элементов этой строки.
procedure TForm1.BitBtn1Click(Sender: TObject); type matrica=array[1..20,1..20] of real; const n=4;m=4; var a:matrica; i,j: integer; s: real; begin for i:=1 to n do for j:=1 to m do A[i,j]:=StrToInt( StringGrid1.Cells[i,j]); for i:=1 to n do begin S:=0; for j:=1 to m do S:=S+ a[i,j]; a[i,1]:=S; end; //Вывод измененной матрицы. for i:=1 to n do for j:=1 to m do StringGrid1.Cells[i,j]:= FloatToStr(a[i,j]); end; ЗАДАЧА. Задана матрица A (n, m). Сформировать вектор P (m), в который записать номера строк максимальных элементов каждого столбца.
procedure TForm1.Button1Click(Sender: TObject); type massiv=array [1..15] of byte; matr=array [1..15,1..15] of real; const n=4;m=4; var i,j: byte; n_max: byte; max: real; a: matr; p: massiv; begin for i:=1 to n do for j:=1 to m do A[i,j]:=StrToInt( StringGrid1.Cells[i,j]); for j:=1 to m do begin max:= a[1,j]; n_max:=1; for i:=2 to m do if a[i,j] > max then begin max:=a[i,j]; n_max:=i; end; p[j]:=n_max; end; for j:=1 to m do StringGrid2.Cells[0,j]:= FloatToStr(p[j]); end; ЗАДАЧА. Написать программу умножения двух матриц A (n, m) и B (m, L). Например, необходимо перемножить две матрицы . Воспользовавшись правилом «строка на столбец», получим матрицу: В общем виде формула для нахождения элемента Cij матрицы имеет вид: , где i = 1, N и j = 1, L. Проводить операцию умножения можно только в том случае, если количество строк левой матрицы совпадает с количеством столбцов правой. Кроме того, A ´ B ¹ B ´ A. Не нашли, что искали? Воспользуйтесь поиском:
|