История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
Топ:
Техника безопасности при работе на пароконвектомате: К обслуживанию пароконвектомата допускаются лица, прошедшие технический минимум по эксплуатации оборудования...
Оценка эффективности инструментов коммуникационной политики: Внешние коммуникации - обмен информацией между организацией и её внешней средой...
Особенности труда и отдыха в условиях низких температур: К работам при низких температурах на открытом воздухе и в не отапливаемых помещениях допускаются лица не моложе 18 лет, прошедшие...
Интересное:
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Дисциплины:
2024-02-15 | 81 |
5.00
из
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
Решение. В задачах, связанных с диагоналями матриц, следует обращать внимание на зависимость значений индекса 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 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!