Лекция № 30
Пример 36. Заменить элементы, находящиеся на диагоналях квадратной матрицы на нули.
Решение. Главная диагональ квадратных матриц – это элементы, у которых номер строки и номер столбца совпадают.
Sub Sortirovka()
Dim n As Integer,
Dim i As Integer, j As Integer
Dim Mass() As Integer
n = InputBox("Введите размер квадратной матрицы")
ReDim Mass(n, n)
Dim str_msg As String, str_msg1 As String
str_msg = "": str_msg1 = ""
'ввод массива и подготовка вывода на печать
For i = 1 To n
For j = 1 To n
Mass(i, j) = InputBox("Введите значение для " & "элемента (" & i & "," & j & ") ", "Ввод элементов массива; строка " & i)
str_msg = str_msg & Mass(i, j) & ","
Next j
str_msg = str_msg & Chr(13)
Next i
'замена диагональных элементов на нули
For i = 1 To n
Mass(i, i) = 0
Mass(i, n - i + 1) = 0
Next i
'подготовка к печати отсортированного массива
For i = 1 To n
For j = 1 To n
str_msg1 = str_msg1 & Mass(i, j) & ","
Next j
str_msg1 = str_msg1 & Chr(13)
Next i
MsgBox "Матрица до преобразования: " & Chr(13) & str_msg & Chr(13) & "Матрица после преобразования: " & Chr(13) & str_msg1
End Sub
Результат:
Пример 37. Дана матрица N x M, состоящая из натуральных чисел. Расставить строки таким образом, чтобы элементы в первом столбце были упорядочены по убыванию.
Решение. Для решения задачи:
– вводим размеры массива MAS и значения его элементов; <:
– присваиваем значения вспомогательному массиву В по первому столбцу MAS;
– просматриваем первый столбец массива В и упорядочиваем его;
– заполняем значения второго столбца В, где B[i, 2] – местоположение элемента B[i, l] в массиве MAS;
– выводим строки матрицы MAS на экран в зависимости от порядка, указанного в B[i, 2].
Переменные:
MAS – двумерный массив;
В – вспомогательный массив;
N%, M% – количество строк и столбцов массива;
I, J – переменные цикла;
К – вспомогательная переменная.
Sub Sortirovka()
Dim n As Integer, m As Integer, k As Integer, p As Integer
Dim i As Integer, j As Integer
Dim Mass() As Integer, b() As Integer
n = InputBox("Введите количество строк")
m = InputBox("Введите количество столбцов")
ReDim Mass(n, m)
ReDim b(n, m)
Dim str_msg As String, str_msg1 As String
str_msg = "": str_msg1 = ""
'ввод массива и подготовка вывода на печать
For i = 1 To n
For j = 1 To m
Mass(i, j) = InputBox("Введите значение для " & "элемента (" & i & "," & j & ") ", "Ввод элементов массива; строка " & i)
str_msg = str_msg & Mass(i, j) & ","
Next j
str_msg = str_msg & Chr(13)
Next i
'преобразование массива
For i = 1 To n
b(i, 1) = Mass(i, 1)
Next i
For k = 1 To n - 1
For j = k To n
If b(k, 1) < b(j, 1) Then
p = b(k, 1): b(k, 1) = b(j, 1): b(j, 1) = p
End If
Next j
Next k
For i = 1 To n
If b(i, 1) = Mass(i, 1) Then
b(i, 2) = i
Else
For j = 1 To n
If Mass(j, 1) = b(i, 1) Then b(i, 2) = j
Next j
End If
Next i
'подготовка к печати преобразованного массива
For i = 1 To n
k = b(i, 2)
For j = 1 To m
str_msg1 = str_msg1 & Mass(k, j) & ","
Next j
str_msg1 = str_msg1 & Chr(13)
Next i
MsgBox "Матрица до преобразования: " & Chr(13) & str_msg & Chr(13) & "Матрица после преобразования: " & Chr(13) & str_msg1
End Sub
Результат:
Дата добавления: 2015-08-14; просмотров: 657;