История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...

Задача 21. Обнулить элементы главной диагонали матрицы А(5 x 5).

2024-02-15 81
Задача 21. Обнулить элементы главной диагонали матрицы А(5 x 5). 0.00 из 5.00 0 оценок
Заказать работу

Вверх
Содержание
Поиск

Решение. В задачах, связанных с диагоналями матриц, следует обращать внимание на зависимость значений индекса j (счетчика столбцов) от i (счетчика строк). Если обнаружена закономерность, то можно избавиться от множества лишних операторов и сделать программу более внятной и компактной. Например, все элементы главной диагонали имеют номера столбцов, совпадающие с номерами строк, т.е. «типичный» представитель этой диагонали – элемент А(i,i). На побочной диагонали –это элемент А(n-i+1), если число столбцов матрицы равно n и счет строк начинается с 1. Поэтому для работы с этими диагоналями достаточно простого цикла, без вложенных.

Программа задачи: 

 

Sub topDiagonal()

Dim i, j, A(5, 5) As Integer

For i = 1 To 5               ‘вводим матрицу из листа Excel:  

  For j = 1 To 5     

       A(i, j) = Cells(i, j)

  Next

Next

For i = 1 To 5             ‘обнуляем диагональ 

 A(i, i) = 0

Next

For i = 1 To 5              ‘выводим матрицу на лист Excel:   

  For j = 1 To 5     

        Cells(i, j) = A(i, j)

  Next

Next

End Sub

 

Таким образом, весь алгоритм обнуления диагонали –один простой цикл- For и одно присваивание.

 

Задача 22. Дана матрица размером 5 x 5. Посчитать среднее значение элементов матрицы, расположенных строго ниже главной диагонали.

Решение. Для каждой строки этого куска матрицы номера столбцов нужных элементов изменяются от первого до пересекающегося с диагональю. На диагонали номер столбца совпадает с номером строки, т.е. j = i . Поскольку диагональ по условию не включена, то j изменяется не до i, а до i – 1.

 

Sub Матрица()

Dim M(5, 5) As Integer, S As Integer, k As Integer, Avg As Single

For i = 1 To 5  

For j = 1 To 5   

      M(i,j) = InputBox("Введите элемент матрицы М(" & i & "," & j & ")")    

Next

Next

S = 0

k = 0

For i = 2 To 5    ‘номера строк берутся от 2 до конца матрицы     

For j = 1 To i – 1 ‘номера столбцов берутся от 1 до диагонали    

       S = S + M(i, j)    

       k = k + 1    

Next

Next

Avg = S / k

MsgBox "Среднее значение = " & Avg

End Sub

 

Задача 23. Обнулить элементы матрицы А(5 x 5), лежащие правее ее главной диагонали и левее побочной, включая диагональные элементы.

Решение. Диагонали делят матрицу на 4 части, в задаче требуется обнулить верхнюю четверть. Обратите внимание, что для каждой строки этого куска обнуляются элементы, лежащие между диагоналями, т.е. из столбцов с номерами: для 1-ой строки – от 1 до 5, для 2-ой строки – от 2 до 4, для 3-ей - от 3 до 3, т.е., в общем случае, для i –той строки –от i до 5-i+1.

Программа:

 

Sub matrixKvota()

Dim i, j, A(5, 5) As Integer

For i = 1 To 5  

For j = 1 To 5    

      A(i, j) = Cells(i, j) ‘ввод матрицы  

    Next

Next

For i = 1 To 3 ‘номера строк берутся от 1 до середины матрицы  

For j = i To 5 - i + 1 ‘номера столбцов берутся от главной до побочной диагонали

      A(i, j) = 0  

Next    

Next

For i = 1 To 5  

  For j = 1 To 5     

        Cells(i, j) = A(i, j) ‘вывод матрицы  

  Next

Next

End Sub

 

Задачи для самостоятельной работы:

1. Посчитать количество нулевых элементов в матрице А(5x5).

2. Перенести элементы, кратные трем, из массива А(5x 5) в массив В.

3. Обнулить элементы матрицы М(5x 5), лежащие ниже ее побочной диагонали, включая диагональные.

4. Поменять местами симметрично элементы верхней четверти и нижней четверти матрицы А(5x5), разделенной диагоналями на четыре части.

 

Лабораторная работа № 8. Задачи с данными строкового типа

Задача 24. Подсчитать количество символов, не являющихся цифрами, в произвольной строке.

Решение поставленной задачи сводится к проверке каждого символа строки. Известна функция Asc(Строка), которая возвращает ASCII-код начальной буквы строки. Если код лежит в интервале [49,57], то это цифра. 

 

Sub количество_цифр()

Dim s As String Dim i As Byte, nd As Byte

s = InputBox(''введите произвольную строку'')

nd = 0

For i = 1 To Len(s)

If Asc(Mid(s, i, 1)) > 57 Оr Asc(Mid(s, i, 1)) < 49 Then

  nd = nd + 1

End If

Next

MsgBox (nd)

End Sub

 

Задача 25. Создать программный код зашифровывающий, а затем расшифровывающий предложение, записанное на русском языке. Использовать шифр простой замены, в котором каждая буква русского алфавита заменяется другой буквой этого же алфавита. При этом замена осуществляется по правилу: первая буква заменяется последней, вторая – предпоследней и т.д. Так, А заменяется на Я, Б – на Ю, В - на Э и т. д.

Решение поставленной задачи сводится к замене букв исходного текста (алфавит по порядку) буквами алфавита записанного в обратном порядке. Исходные данные: Буквы русского алфавита, записанные в алфавитном порядке за исключением буквы Л, буквы русского алфавита, выписанные в обратном порядке. Шифруемое сообщение: «Простая замена один из самых древних шифров». Выходные данные: сообщение после шифровки. Для решения поставленной задачи определяем количество символов преобразуемой строки. Образуем новую строку по длине равную исходной строке. Далее организуем цикл, в котором просматриваем все символы преобразуемой строки, определяем позицию номер kэтого символа в исходном алфавите. Если в исходном алфавите символ не найден, то в данную позицию новой строки заносим этот символ без изменений, в противном случае в данную позицию новой строки заносим символ из нового алфавита, позиция которого совпадает с позицией номер k исходного алфавита. 

При решении задачи используем следующие функции:

1. len(Строка)–возвращает число символов строки, например, Len(“мама”)=4.

2. LCase(Строка) – все прописные символы строки преобразует в строчные, например, b=Lcase(“Мир”). b = “мир”.

3. Space(количество_символов) – возвращает строку пробелов длины количество_символов.

4. Mid(string, start[, length]) – возвращает подстроку строки, содержащую указанное число символов исходной строки, например, Mid(“программирование”,4,4)=” грам”.

5. InStr([start, ] string1, string2[, compare]) – возвращает позицию первого вхождения одной строки внутри другой строки, например, k = InStr(1, “XXpXXpXXPXXP”, "W") возвращает 0, т.к. символа "W" нет в строке “XXpXXpXXPXXP”.

 

Private Sub Шифрование()

Const АБВ As String = ''абвгдежзийклмнопрстуфхцчшщъыьэюя''

Const НовАБВ As String = "яюэьыъщшчцхфутсрпонмлкйизжедгвба"

Dim STR As String, STRS As String Dim n As Long

STR = "Простая замена один из самых древних шифров "

STR = LCase(STR) 'преобразуем все символы в строчные

n = Len(STR)    'находим длину строки

STRS = Space(n) 'организуем строку пробелов длины n

For i = 1 To n tmp = Mid(STR, i, 1) 'по одному символу «отрываем» от строки

STR k = InStr(1, АБВ, tmp) 'находим позицию вхождения символа

If k = 0 Then

    Mid(STRS, i, 1) = tmp

Else Mid(STRS, i, 1) = Mid(НовАБВ, k, 1)         

End If

Next i

Msgbox STRS

End Sub

 

Задача 26. Гласные буквы русского алфавита не изменяются. Первый десяток согласных заменяется на второй десяток согласных (второй - на первый) по следующей таблице:

Б В Г Д Ж З К Л М Н
Щ Ш Ч Ц Х Ф Т С Р П

Решение. Исходными данными задачи является строка произвольной длины. Кроме этого, можно определить две строки-алфавита, состоящие из согласных букв “бвгджзклмнщшчцхфтсрп” и “щшчцхфтсрпбвгджзклмн”. Если в тексте встречается буква из первой строки, то она заменяется на букву с таким же номером из второй строки-алфавита.

 

Private Sub Гласные()

Dim tmp As String, Alf1 As String, Alf2 As String Dim a As String, b As String

a = InputBox(''Введите исходную строку символов'')

Alf1 = ''бвгджзклмнщшчцхфтсрп''

Alf2 = ''щшчцхфтсрпбвгджзклмн''

n = Len(a)

b = Space(n)

For i = 1 To n

tmp = Mid(a, i, 1)

k = InStr(1, Alf1, tmp)

   If k = 0 Then

       Mid(b, i, 1) = tmp         

  Else Mid(b, i, 1) = Mid(Alf2, k, 1)         

  End If

Next i

MsgBox b

End Sub

 

Задачи для самостоятельной работы:

1. Для любого введенного предложения заменить слоги «ма» на слоги «ле».

2. Посчитать количество слов «кот» в предложении, вводимом с клавиатуры. Разделителем слов считать пробелы и запятые.

3. Поменять местами первое и последнее слово в предложении, разделителем слов считать пробел.

4. Образовать по заданному слову слово-перевертыш, в котором все буквы идут в обратном порядке.

 


Поделиться с друзьями:

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.046 с.