Ћекции.ќрг


ѕоиск:




 атегории:

јстрономи€
Ѕиологи€
√еографи€
ƒругие €зыки
»нтернет
»нформатика
»стори€
 ультура
Ћитература
Ћогика
ћатематика
ћедицина
ћеханика
ќхрана труда
ѕедагогика
ѕолитика
ѕраво
ѕсихологи€
–елиги€
–иторика
—оциологи€
—порт
—троительство
“ехнологи€
“ранспорт
‘изика
‘илософи€
‘инансы
’ими€
Ёкологи€
Ёкономика
Ёлектроника

 

 

 

 


ѕример 4.8.2-9. Ќаписать процедуру, котора€ из матрицы х(n,m), €вл€ющейс€ входным параметром, получает транспонированную к ней матрицу y(m, n).




јлгоритм и процедура приведены на рис. 4.8.2-9.

ƒл€ решени€ поставленной задачи в алгоритме необходимо реализовать вложенные циклы перебора всех элементов исходной матрицы х(,). “ранспонирование матрицы осуществл€етс€ путем перестановки (обмена) индексов транспонированной матрицы по отношению к исходной.

 

Sub Pr829(ByRef x(,) As Single, _ ByRef y(,) As Single) Dim ArrayRank, n, m, j, i As Integer ArrayRank = x.Rank n = x.GetLength(ArrayRank - 2) - 1 m = x.GetLength(ArrayRank - 1) - 1 ReDim y(m,n) For i = 0 To n For j = 0 To m y(j,i) = x(i,j) Next j Next i End Sub

 

–ис. 4.8.2-9. ѕрограммный код процедуры Pr829()

ѕримера 4.8.2-9

 

ѕример 4.8.2-10.Ќаписать процедуру, котора€ вычисл€ет алгебраическое произ≠ведение матрицы х(n,m) на матрицу y(m,n).

јлгоритм и процедура решени€ задачи представлены на рис. 4.8.2-10.

ѕроизведением матрицы x(n,m) на матрицу y(m,k) называетс€ матрица p(m,k), в которой элемент, сто€щий на пересечении i -й строки и j -го столбца, равен произведению i -го вектора-строки матрицы x(n,m) на j -й вектор-столбец матрицы y(m,k).

ѕроизведением вектора-строки a(n) на вектор-столбец b с одинаковым числом элементов n называетс€ сумма произведений соответствующих элементов этих векторов . “аким образом, произведение двух матриц можно записать следующим образом:

Sub Pr8210(ByRef x(,) As Single _ ByRef y(,) As Single _ ByRef p(,) As Single) Dim nx, mx, ky, j, i, k As Integer Dim XRank, YRank As Integer Dim s As Single XRank = x.Rank: YRank = y.Rank mx = x.GetLength(0)- 1 nx = x.GetLength(1)- 1 ny = y.GetLength(0)- 1 ky = y.GetLength(1)- 1 If XRank=2 And YRank=2 And nx=ny Then ReDim p(mx,ky) For i = 0 To mx For j = 0 To ky s = 0 For k = 0 To nx S = s + x(i,k) * y(k,j) Next k p(i,j)= s Next j Next i vivodSngMac19(p, ListBox1) Else TextBox1.Text="ѕроверь размерности" End If End Sub

–ис. 4.8.2-10. ѕрограммный код процедуры Pr8210()

ѕримера 4.8.2-10

 

ƒл€ формировани€ такой матрицы необходимо организовать вложенные циклы: внешний цикл, измен€ющий номер строки от 0 до m, и внутренний цикл, измен€ющий номер столбца от 0 до k. ƒл€ вычислени€ произведени€ текущей строки матрицы x(i,t) на текущий столбец матрицы y(t,j) в теле внутреннего цикла требуетс€ еще один цикл, параметр которого мен€етс€ от 0 до n.

Ќа рис. 4.8.2-10 представлен общий алгоритм вычислени€ алгебраического произведени€ двух матриц размерами (mx*nx) и
(nx*ky). ¬ программу добавлена проверка на соответствие количества столбцов первой матрицы количеству строк второй матрицы, причем в схеме алгоритма она отсутствует.

 

ѕример 4.8.2-11. —оздать проект, в котором формируетс€ двумерный массив x, состо€щий из четырех строк и четырех столбцов, по правилу: x(i,j)=2*(i-2)2-(j-2)2, а затем определ€етс€ максимальный элемент среди элементов, лежащих ниже главной диагонали, а также минимальный элемент, расположенный выше главной диагонали. Ќайденные максимальный и минимальный элементы необходимо помен€ть местами.

‘ормирование значений элементов двумерного массива x(,) по заданной формуле и их вывод в виде матрицы производ€тс€ с помощью вложенных циклов. ¬ переменных xmin и xmax в цикле фиксируютс€ минимальный и мак≠симальный элементы массива, в переменных imin, jmin и imax, jmax Ц их координаты (номер строки и номер столбца).

ѕрограммный код проекта представлен на рис. 4.8.2-11.

 

Option Strict On Option Explicit On Public Class Form1 '‘ормирование двумерного массива x(,) Sub Form(ByRef x(,) As Single) Dim i, j, m As Integer m = x.GetLength(0) - 1 For i = 0 To m For j = 0 To m x(i, j) = CSng(2 * (i - 2) ^ 2 - (j - 2) ^ 2) Next Next End Sub 'ѕроцедура форматного вывода двумерного массива в ListBox Sub vivod1(ByRef x(,) As Single, ByRef LB As ListBox) Dim i, j, m, n As Integer Dim z, z1 As String m = x.GetLength(0) Ц 1: n = x.GetLength(1) - 1 LB.Items.Clear() For i = 0 To m z = "" For j = 0 To n z1 = Format(x(i, j),"0.000") If x(i, j) < 0 Then z1 = Space(2) + z1 Else z1 = Space(3) + z1 End If z = z + z1 Next LB.Items.Add(z) Next End Sub 'ѕроцедура вывода результата в TextBox Sub vivod3(ByVal Z As Double, ByRef T As TextBox) T.Text = CStr(Z) End Sub 'ѕроцедура вывода данных типа Integer в TextBox Sub vivod4(ByVal Z As Integer, ByVal T As TextBox) T.Text = CStr(Z) End Sub 'Ќахождение max элемента и его индексов, 'лежащих ниже главной диагонали Sub MaxN(ByRef x(,) As Single, ByRef xmax As Single, _ ByRef imax As Integer, ByRef jmax As Integer) Dim i, j, m As Integer m = x.GetLength(0) - 1 imax = 1: jmax = 0: xmax = x(1, 0) For i = 0 To m For j = 0 To i - 1 If x(i, j) > xmax Then xmax = x(i, j): imax = i: jmax = j End If Next Next End Sub 'Ќахождение min элемента и его индексов, 'лежащих выше главной диагонали Sub MinV(ByRef x(,) As Single, ByRef xmin As Single, _ ByRef imin As Integer, ByRef jmin As Integer) Dim i, j, m As Integer m = x.GetLength(0) - 1 imin = 0: jmin = 1: xmin = x(0, 1) For i = 0 To m For j = i + 1 To m If x(i, j) < xmin Then xmin = x(i, j): imin = i: jmin = j End If Next Next End Sub 'ќбмен max и min элементов Sub Ob(ByRef x(,) As Single, _ ByVal imax As Integer, ByVal jmax As Integer, _ ByVal imin As Integer, ByVal jmin As Integer) Dim r As Single r = x(imax, jmax): x(imax, jmax) = x(imin, jmin) x(imin, jmin) = r End Sub 'ќсновна€ процедура Sub Pr8211(ByRef x(,) As Single, ByRef xmin As Single, _ ByRef xmax As Single) Dim imin, jmin, imax, jmax As Integer Form(x) '‘ормирование двумерного массива x(,) vivod1(x, ListBox1) MaxN(x, xmax, imax, jmax) vivod3(xmax, TextBox1) vivod4(imax, TextBox2) vivod4(jmax, TextBox3) MinV(x, xmin, imin, jmin) vivod3(xmin, TextBox4) vivod4(imin, TextBox5) vivod4(jmin, TextBox6) Ob(x, imax, jmax, imin, jmin) vivod1(x, ListBox2) '¬ывод преобразованного массива End Sub Private Sub Button1_Click(sender As Object, _ e As EventArgs) Handles Buton1.Click Dim xx(3, 3) As Single Dim xm1, xm2 As Single Pr8211(xx, xm1, xm2) End Sub End Class

 

–ис. 4.8.2-11. ѕрограммный код проекта ѕример 4.8.2-11

 

 


“естовые задани€

1. ƒвумерный массив Ц это массив, у которого количество индексов равно

1) 2

2) 4

3) 3

4) любому целому числу

2. »ндексами двумерного массива могут быть:

1) любые целочисленные выражени€;

2) выражени€ любого типа

3) только целочисленные переменные

4) переменные любого типа





ѕоделитьс€ с друзь€ми:


ƒата добавлени€: 2016-11-24; ћы поможем в написании ваших работ!; просмотров: 313 | Ќарушение авторских прав


ѕоиск на сайте:

Ћучшие изречени€:

—тудент может не знать в двух случа€х: не знал, или забыл. © Ќеизвестно
==> читать все изречени€...

1862 - | 1472 -


© 2015-2024 lektsii.org -  онтакты - ѕоследнее добавление

√ен: 0.013 с.