Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Типовые задачи на обработку двумерных массивов




End Sub

'Процедура вывода двумерного массива в таблицу

Private Sub Command2_Click()

MSFlexGrid1.Rows= n+1 'Общее количество строк в таблице

MSFlexGrid1.Cols= m+1 'Общее количество столбцов

 

'Формирование заголовков столбцов

MSFlexGrid1.Row=0 'Установка на нулевую строку

For j:=0 To m 'Цикл для вывода номеров столбцов

MSFlexGrid1.Col=j 'Установка на столбец с номером j

MSFlexGrid1.ColWidth(j)=700 'Установка ширины столбцов

MSFlexGrid1.Text=j 'Вывод номеров столбцов

Next j

 

'Формирование заголовков строк

MSFlexGrid1.Col=0 'Установка на нулевой столбец

MSFlexGrid1.ColWidth(0)=300 'Установка ширины нулевого столбца

For i:=0 To n 'Цикл для вывода номеров строк

MSFlexGrid1.Row=i 'Установка на строку с номером i

MSFlexGrid1.Text=i 'Вывод номеров строк

Next i

 

'Вывод элементов массива в таблицу по строкам

For i:=0 To n-1 'Цикл по строкам

MSFlexGrid1.Row=i+1 'Установка на i +1-ую строку

For j:=0 To m-1 'Цикл по столбцам

FlexGrid1.Col=j+1 'Установка на j +1-ый столбец

MSFlexGrid1.Text=a(i,j) 'Вывод a ij в ячейку таблицы i +1, j +1

Next j

Next i

К типовым задачам с двумерными массивами относятся задачи на вычисление суммы, произведения, количества, среднего арифметического, максимума, минимума элементов каждой строки или каждого столбца, заданной строки или заданного столбца и др.

Вычисления подобного рода осуществляются при помощи стандартных приемов, особенность которых заключается в организации вложенных циклов при обработке массивов:

For i:= a1 To b1
For j:= a2 To b2
......
Next j
Next i

Цикл, который содержит другой цикл называют внешним циклом, а цикл, содержащийся в теле другого цикла, называют внутренним. Все операторы внутреннего цикла должны полностью располагаться в теле внешнего цикла.

Всякий раз, когда внутренний цикл завершается, внешний цикл увеличивает значение своего счетчика на 1, и внутренний цикл выполняется вновь.

Поэтому, если за счетчик внешнего цикла взять индекс строки, а за счетчик внутреннего – номер столбца, то обработка двумерного массива будет идти по строкам, а если наоборот, то по столбцам.

Пример 1. Заполнить двухмерный массив размерностью n * m случайными целыми числами из диапазона [-40,40]. Определить:

- сумму элементов каждой строки;

- максимальные значения для каждого столбца;

- произведение элементов k -ой строки, значения которых лежат в диапазоне от 20 до 40.

Фрагмент программного кода:

Dim i As Integer,j As Integer,s As Integer

Dim max As Integer,k As Integer,p As Integer

Dim flag As Boolean

Dim a(1 To 30, 1 To 30) As Integer

'Очистка текстовых окон

Edit4.Text="": Edit5.Text="": Edit6.Text=""

'Вычисление сумм элементов в каждой строке

For i=1 To n 'Цикл по строкам

s=0;

For j=1 To m

s=s+a(i,j); 'Суммирование элементов i-ой строки

Next J

Edit4.Text= Edit4.Text+Str(s)+ " " 'Вывод суммы i-ой строки

Next i

'Вычисление максимальных элементов в каждом столбце

For j=1 To m 'Цикл по строкам

max=a(1,j) 'Установка начального максимума по первому элементу

'в j-ом столбце

For i=1 To n'Цикл по строкам

If a(i,j) > max Then max=a(i,j)

Next i

'Вывод максимального элемента j-го столбца

Edit5.Text= Edit5.Text+Str(max)+ " "

Next j

'Вычисление произведения элементов k-ой строки, попавших в диапазон [20,40]

k=Val(Edit3.Text) 'Ввод номера строки

p=1

flag=false 'Предполагаем, что нет элементов, попавших в диапазон [20,40]

For j=1 To m'Цикл по столбцам

If (a(k,j)>20) and (a(k,j)<40) Then 'Проверка условия попадания

'в диапазон [20,40]

p=p*a(k,j): flag=True




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


Дата добавления: 2014-11-16; Просмотров: 684; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.