Дисциплина «Основы алгоритмизации и программирования» 3Т
8.1 Цель работы:изучение правил организации вложенного цикла с учетом порядка перебора элементов матрицы; использования приемов программирования в структурах с вложенными циклами; способов ввода и вывода матриц.
Теоретические сведения.
В цикле, называемым внешним, могут входить один или несколько вложенных циклов, называемых внутренними. Организация как внешнего, так и внутреннего цикла осуществляются по тем же правилам, что и простого цикла. Параметры внешнего и внутреннего циклов разные и изменяются не одновременно, т.е. при одном значении параметра внешнего цикла параметр внутреннего цикла принимает поочередно все значения.
Структура правильно организованного вложенного цикла с использованием оператора FOR может иметь вид

FOR x = …
………
FOR у = …
………..
FOR I = …
………..
NEXT I
………..
NEXT у
………
NEXT x
Каждому оператору цикла FOR должен соответствовать оператор NEXT. Области действия циклов перекрываться не должны. Внутренний цикл целиком должен содержаться в теле внешнего цикла. Обращение из внешнего цикла разрешается только через заголовок цикла.
Задание к работе.
8.3.1. Отработать на ЭВМ матрицу в соответствии с вариантом задания, указанным в таблице 8.1. вывести в диалоговом окне исходные данные и результаты решения задачи.
8.3.2. Проверить правильность выполнения программы не менее, чем на трех тестовых примерах с различными значениями чисел строк (N1) и числа столбцов (N2).
Таблица 8.1 Варианты задания
| Вариант задания | Имя матрицы и размеры | Действия | Условия и ограничения |
| А(3,3) | Вычислить суммы элементов строк и представить их в виде массива В(3). Оба массива отпечатать, причем В(3) в виде строки | aij≠0 | |
| А(10,10) | Получить сумму элементов матрицы | ||
| А(3,3) | Задан массив А(3,3). Сформировать массив В(3,3) по правилу Оба массива отпечатать | ||
| В(7,8) | Определить и напечатать количество ненулевых элементов в каждой строке матрицы. Отпечатать матрицы и результаты. | ||
| А(N,M) | Сформировать массив В(N,M), отличающийся от исходного тем, что все элементы 1-го столбца заменены нулями. Оба массива отпечатать | N≤20 M≤10 | |
| А(8,8) | Вычислить суммы элементов строк и представить их в виде массива В(3). Оба массива отпечатать | ||
| M (N,N) | Найти наибольшее из значений элементов, расположенных в заштрихованной части матрицы. Результаты отпечатать. | N≤10 | |
| А(N,M) | Из массива А сформировать массив В(N,M) по правилу Оба массива отпечатать | N≤5 M≤8 | |
| D(N,M) | Сформировать массив С(N), i-ый элемент которого равен числу отрицательных элементов в i–ой строке матрицы D. Оба массива отпечатать | N≤7 M≤5 | |
| K(N,M) | Вычислить сумму положительных элементов массива. Массив и результат выдать на печать | N≤8 M≤7 | |
| L(5,5) | Определить минимальный элемент в массиве. Выдать на печать матрицу, минимальный элемент и его координаты i и j. | ||
| K(4,3) | Посчитать число нулевых элементов в массиве К, отпечатать массив и результат | ||
| М(10,10) | Вычислить сумму четных элементов каждой строки матрицы. Матрицу и результат выдать на печать | ||
| С(N,M) | Сформировать массив R(N,M) по правилу | N≤6 M≤10 | |
| G(3,7) | Сформировать массив D(3,7), отличающийся от массива G тем, что все отрицательные элементы заменены нулями. Оба массива отпечатать. | ||
| А(N,M) | Вычислить сумму отрицательных элементов каждого столбца, записать в массив D(М)._ Оба массива отпечатать. | N≤10 M20 | |
| М(К,К) | Вычислить Отпечатать исходный массив и S/ | K≤45 | |
| С(7,3) | В массиве подсчитать число нулевых элементов в каждом столбце и результат представить в виде массива В(3). Оба массива отпечатать. | ||
| D(N,N) | Сформировать массив В(N,N) по следующему правилу: B(I,J) = A(I,J)*A(I,I) Оба массива отпечатать. | N≤10 | |
| A(L,L) | Сформировать массив В(3,3), диагональные элементы которого равны 0, а остальные совпадают с элементами A(I,J). Оба массива отпечатать. | ||
| F(8,8) | Транспортировать матрицу и вывести на печать элементы главной диагонали и диагонали, расположенной под главной. Результаты напечатать в две строки. | ||
| С(4,4) | Сформировать массив В(4,4), отличающийся от массива С(4,4) только тем, что все элементы 1-ой строки заменены нулями. Оба массива отпечатать. | ||
| К(4,6) | Вычислить сумму элементов массива, лежащих в пределах 3,2≤/ A(I,J)/<11,4. отпечатать исходный массив и сумму. | ||
| В(N,N) | Вычислить сумму и число элементов матрицы, находящихся под главной диагональю и на ней. Матрицу и результат отпечатать. | ||
| В(10,10) | Записать на место отрицательных элементов матрицы нули, а на место положительных – единицы. Вывести на печать исходную матрицу и нижнюю треугольную в общепринятом виде. |
8.4 Методика выполнения задания
Заранее, до выполнения лабораторной работы
1. Изучить:
— правила организации вложенного цикла с учетом порядка перебора элементов матрицы;
— правила использования приемов программирования в структурах с вложенными циклами;
— способы ввода и вывода матриц.
2. Разработать алгоритм решения в соответствии с заданием.
3. составить программу решения задачи.
4. Подготовить тестовые варианты программы и исходных данных.
8.5 Пример выполнения задания
Найти наибольший элемент матрицы А(N1,N2) и выдать на печать его значение и координаты (номер строки и номер столбца).
Организовать вложенный цикл для ввода элементов матрицы по строкам. Для этого во внешнем цикле следует изменять индекс строки, а во внутреннем – индекс столбца. После ввода матрицы принимаем за наибольшее значение М первый элемент матрицы и запоминаем его координаты М=А(1,1), К=1, R=1.
Далее организуем вложенный цикл для перебора элементов по строкам и сравнивание их с М.
Чтобы выдать матрицу в диалоговое окно в нормальной форме, необходимо сформировать текстовую переменную ТХТ. Чтобы организовать вывод каждой строки матрицы с новой строки используем Chr (13), при выходе из внутреннего цикла.
Схема алгоритма:
Программа:
Option Base 1
Sub ObrMatr()
Dim Txt As String `Объявление текстовой переменной Тхt,
‘в которой будет сформированы исходные данные
‘и результаты
Dim Aij As String ‘В текстовой переменной Aij формируется
‘поясняющий текст Введите А(1,1) и т.д.
Dim A() ‘Объявление динамического массива
Txt=”Исходные данные” & Chr(13)
N1=Val(InputBox(“Введите число строк матрицы”))
N2=Val(InputBox(“Введите число столбцов матрицы”))
ReDim A(N1,N2) ‘Объявление двумерного массива (матрицы),
‘содержащего N1 строк и N2 столбцов
Txt=Txt & ”Число строк матрицы=” & Str(N1)
Txt=Txt & ”Число столбцов матрицы=” & Str(N2) & Chr(13)
For i=1 To N1
For j=1 To N2
=”Введите A(“ & Str(i) & “,” & Str(j) & “)”
A(i,j)= Val(InputBox(Aj))
Next j
Next i
Txt=Txt & ”Исходная матрица-А” & Chr(13) ‘Формирование исходной ‘матрицы в наглядном ‘виде
For i=1 To N1
For j=1 To N2
Txt=Txt & Str(А(i,j)) & “ “ ‘Формирование строки i
Next j
Txt=Txt & Chr(13) ‘Переход к следующей строке
Next i
MsgBox Txt ‘Вывод исходных данных
М=А(1,1) ‘Обработка элементов матрицы
К=1:L=1
For i=1 To N1
For j=1 To N2
If A(i,j)>M Then M=A(i,j):K=i:L=j
Next j
Next i
Txt=”Результаты:” & Chr(13) ‘Формирование результатов для вывода
Txt=”Максимальный элемент матрицы А=” & Str(М) & Chr(13)
Txt ”Номер строки =” & & Str(К) & ”Номер столбца =” & Str(L)
‘Вывод результатов
MsgBox Txt
End Sub
Содержание отчета.
Цель работы.
Краткие теоретические сведения.
Задание к работе
Схема алгоритма
Текст процедуры на VBA с пояснениями.
Анализ результатов. Выводы.

Оставить комментарий