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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



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 с пояснениями.

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

 

Библиографический список

1. Р.Персон. Microsoft Exсel 97 в подлиннике: В 2т. – BHV – Санкт-Петербург. 1998. Том 2 – 640с.

2. Васильев А., Андреев А. VBA в Office 2000: учебный курс. – СПб.: Питер, 2001. – 432 с.: ил.

 



Поделиться:


Последнее изменение этой страницы: 2016-12-17; просмотров: 648; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.129.23.30 (0.019 с.)