
- •Алгоритм, свойства алгоритмов
- •Блок-схемы, их построение.
- •Одномерные массивы, их объявление, формирование и вывод на экран.
- •Расчет суммы и произведения в цикле
- •Изменение последовательности элементов в векторе.
- •Сортировка элементов одномерного массива.
- •Вставка элемента в упорядоченный массив.
- •Транспонирование матрицы.
- •Перемещение, вставка и удаление элементов матрицы.
- •Выделение элементов, стоящих на главной диагонали, выше или ниже нее.
- •Выделение элементов, стоящих на побочной диагонали, выше или ниже нее.
Транспонирование матрицы.
Транспонирование матрицы
Транспонирование матрицы заключается в получении другой матрицы,
столбцы которой равны строкам исходной. Транспонирование необходимо в
некоторых численных методах. Например, при решении системы линейных
уравнений.
Пример 03. Транспонировать матрицу M(3, 4)
DimM(3, 4) AsDouble
Dim MT(4, 3) As Double
For iAs Integer = 1 To 3
For j As Integer = 1 To 4
MT(i, j) = M(j, i)
Next j
Nexti
Результат:
Исходная матрица Транспонированная матрица
1 1 1 1 123
2 2 2 2 123
3 3 3 3 123
123
Работа программы. Работа алгоритма основана на заполнении строк матрицы
МТ элементами столбцов матрицы М.
Такой порядок достигается организацией циклов на работу по строкам
матрицы МТ и заменой привычного положения счетчиков в строке
MT(i, j) = M( j , i )
В i-ю строку матрицы МТ записывается j-й столбец матрицы М, этим и
обусловлен поворот строк исходной матрицы в транспонированной.
Перемещение, вставка и удаление элементов матрицы.
Перемещение, вставка и удаление элементов матрицы
Задачи, связанные с перемещением элементов внутри матрицы, очень полезны
для создания навыков работы со счетчиками циклов.
Пример 09. Поменять местами 1-ю и 3-ю строки матрицы B(m, n)
Forj AsInteger= 1 Ton 'n – Число элементов в строке
tmp = B(1, j) 'Шаг 1
B(1, j) = B(3, j) 'Шаг 2
B(3, j) = tmp'Шаг 3
Next j
Работа программы. Замена строк, как и столбцов, производится в одномерном
цикле с использованием временной переменной.
Пример 10. Поменять местами 1-й и 3-й столбцы матрицы B(m, n)
For iAs Integer = 1 Tom 'm – Количествострок
tmp = B(i, 1) 'Шаг 1
B(i, 1) = B(i, 3) 'Шаг 2
B(i, 3) = tmp'Шаг 3
Next i
Наиболее распространенной ошибкой в ходе создания подобных программ
является использование вложенных циклов. При этом происходит многократная
замена, и если число строк или столбцов четное, то матрица остается
неизменной, если нечетное, то задача решается, но это решение не может быть
признано оптимальным, потому что программа выполняет «лишние» операции,
что приводит к дополнительной нагрузке на процессор и замедлению работы.
Сложение и умножение матриц.
Рассчитать сумму элементов каждой строки и произведение
элементов каждого столбца матрицы B(m, n)
Dim m As Integer = 3 'Числострок
Dim n As Integer = 4 'Числостолбцов
Dim B(m, n) As Double
Dim SumRow(m) As Double
Dim MultiplyCol(n) As Double
For iAs Integer = 1 To 3
For j As Integer = 1 To 4
Console.WriteLine("Введитеэлемент B{" &i&"," & j &")")
B(i, j) = Console.ReadLine()
Nextj
Nexti
'Вывод сформированного массива на экран
For iAs Integer = 1 To 3
For j As Integer = 1 To 4
Console.Write(B(i, j) &" ") 'Write выводит элементы в одну строку
Nextj
Console.WriteLine() 'перевод курсора на следующую строку
Nexti
Console.WriteLine() 'Выводим пустую строку
'Сумма элементов строк
For iAs Integer = 1 To 3
SumRow(i) = 0
For j As Integer = 1 To 4
SumRow(i) = SumRow(i) + B(i, j)
Next j
Console.WriteLine("Сумма {0} строки = {1}", i, SumRow(i))
Nexti
Console.WriteLine() 'Выводим пустую строку
'Произведение элементов столбцов
For j As Integer = 1 To 4
MultiplyCol(j) = 1
For iAs Integer = 1 To 3
MultiplyCol(j) = MultiplyCol(j) * B(i, j)
Next i
Console.WriteLine("Произведение {0} столбыа = {1}", j, MultiplyCol(j))
Nextj
При исходной матрице: Сумма строк Произведение столбцов
5 4 -2 7
4 -7 -3 4
-3 3 3 6
Сумма 1 строки = 14
Сумма 2 строки = -2
Сумма 3 строки = 9
Произведение 1 столбца = -60
Произведение 2 столбца = -84
Произведение 3 столбца = 18
Произведение 4 столбца = 168
Работа программы. Задача решается в блоках Сумма элементов строки и
Произведение элементов столбца с помощью вложенных циклов. Непосредственно
сумма и произведение рассчитываются во внутренних циклах. Внешние циклы
задают изменение строк (сумма) и столбцов (произведение).
Между внутренним и внешним циклами введена строка обновления
переменной. Это сделано для того, чтобы избежать накапливания
рассчитываемого значения. Если эти строки исключить из программы, то мы
получим сумму и произведение всех элементов матрицы.