Лабораторная работа №8 Обработка двумерных массивов.

Дисциплина «Основы алгоритмизации и программирования» 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 с пояснениями.

Анализ результатов. Выводы.

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

avatar
  Подписаться  
Уведомление о