Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

методические указания к лабораторным работам

.pdf
Скачиваний:
13
Добавлен:
07.03.2015
Размер:
1.87 Mб
Скачать

Окончание таблицы 10

Задание

п/п

 

Известны данные о числе жителей, проживающих в каждом из 12 домов улицы: Номер дома. Число жителей.

Определить номер дома, в котором проживает больше всего человек, а также общее

14число жителей, проживающих в 12 домах.

Добавить запись еще об одном доме, которая должна быть расположена перед записью, соответствующей дому с наибольшим количеством проживающих в нем человек. Отсортировать полученные данные по полю Число жителей.

Известны данные о стоимости каждой из 12 книг, продаваемых в книжном магазине:

Название книги. Стоимость.

15Определить среднюю стоимость книги, а также название самой доступной по цене книги. Добавить запись о стоимости еще одной книги после записи, соответствующей самой доступной по цене книге.

Отсортировать полученные данные по полю Название книги.

ЛАБОРАТОРНАЯ РАБОТА 7

ДВУМЕРНЫЕ МАССИВЫ

Основные сведения

Двумерный массив представляет собой матрицу, т. е. упорядоченный набор пронумерованных элементов одного типа, которые расположены в несколько строк и столбцов. Обращение к элементу массива происходит путем указания имени массива и двух индексов, заключенных в круглые скобки, например, Х(2, 3). При этомпервый индекс указывает наномер строки, авторой наномер столбца.

Объявление двумерного массива:

Dim Имя_Массива (N, M) As Тип_Элементов

где N и M – целые числа (нумерация элементов в этом случае начинается с нуля).

Пример 1

Известны данные о количестве часов проката каждой из 5 различных марок легковых автомобилей 3 филиалами фирмы:

Марка автомобиля

 

Количество часов проката:

Южный филиал

Северный филиал

 

Центральный филиал

 

 

 

Необходимо разработать пользовательский интерфейс и составить программу в редакторе VB MS Excel, с помощью которой будет осуществляться:

1.Ввод исходных данных двумерного массива и их вывод в виде таблицы на рабочий лист.

2.Определение:

25

марки автомобиля, которая по общим часам проката у трех филиалов больше всего уступает другим маркам;

среднего количества часов проката одного автомобиля в центральном филиале, количества марок автомобилей центрального филиала, для которых количество часов проката не превышало найденного среднего показателя, и марок таких автомобилей.

3.Вывод полученных результатов на тот же рабочий лист.

На первом рабочем листе Excel сформируем таблицу и введем названия пяти марок автомобилей. Ниже таблицы разместим три кнопки с помощью соответствующего инструмента панели инструментов

Элементы управления (рис. 15).

 

 

Свойства размещенных на

 

 

первом листе кнопок представ-

 

 

лены в таблице 11.

 

 

Значения количества часов

Рис. 15. Количество часов проката

проката будем вводить с помо-

легковых автомобилей фирмы

щью функции InputBox и при-

сваивать соответствующим элементам двумерного массива.

 

 

 

 

 

Таблица 11

 

 

 

 

 

Объект

Свойство

Объект

Свойство

CommandButton1

Name = inputOutputData

 

 

 

Caption = Ввод и вывод данных

CommandButton3

Name = clean

 

CommandButton2

Name = calc

Caption = Очистить

 

Caption = Определить

 

 

 

Для обработки событий нажатия кнопок «Ввод и вывод данных», «Определить» и «Очистить» введем в модуле «Лист1» следующий код:

Dim KolHour(1 To 10, 1 To 10) As Integer

Dim KM, KF, i, j As Integer

Private Sub inputOutputData_Click()

KM = Val(InputBox("Введите количество марок легковых автомобилей", "Ввод данных"))

KF = Val(InputBox("Введите число филиалов фирмы", "Ввод данных")) For i = 1 To KM

For j = 1 To KF

KolHour(i, j) = Val(InputBox("Введите количество часов проката " & Cells(i + 2, 1) & " " & Cells(2, j + 1), "Ввод данных"))

Cells(i+2, j+1) = KolHour(i, j) ‘вывод элементов массива на лист Next j

Next i End Sub

26

Private Sub

calc_Click()

 

Dim sH, minS, minMarka, k As Integer

Dim stroka As String

 

minS

=

32000

 

For i = 1

To KM

 

sH

=

0

1 To KF

 

For j =

‘нахождение суммы часов проката каждой марки

 

sH = sH+KolHour(i, j)

Next

j

 

 

If

sH < minS Then minS = sH: minMarka = i ‘поиск минимальной из этих сумм

Next

i

 

 

уступающая остальным маркам по часам проката

MsgBox "Марка автомобиля,

у трех

филиалов, – " & Cells(minMarka + 2, 1)

‘нахождение

суммы часов проката по центральному филиалу

sH =

0

 

To KM

 

For i = 1

 

sH

=

sH

+ KolHour(i, 2)

 

Next i

MsgBox "Среднее количество часов проката одного автомобиля в централь-

ном филиале составляет " & Str(Round(sH / KM, 2))

‘поиск количества марок авто и их наименований с часами проката, не выше ‘среднего по центральному филиалу

k = 0 stroka = ""

For i = 1 To KM

If KolHour(i, 2) <= sH / KM Then k = k + 1

stroka = stroka + Cells(i + 2, 1) + " " End If

Next i

MsgBox "Количество марок автомобилей центрального филиала, у которых

количество

часов проката не превышает среднее, " & Str(k) & ", а марки: "

& stroka

+ 3, 1)

= "Марка авто"

‘вывод результатов на лист

Cells(KM

Cells(KM

+ 3, 2)

= Cells(minMarka + 2, 1)

Cells(KM

+ 4, 1)

= "Среднее кол-во часов проката"

Cells(KM

+ 4, 3)

= sH / KM

 

Cells(KM

+ 5, 1)

= "Количество марок"

 

Cells(KM

+ 5, 3)

= k

 

Cells(KM

+ 6, 1)

= "Марки:"

 

Cells(KM

+ 6, 3)

= stroka

 

End Sub

 

 

 

Private Sub clean_Click()

 

For i = 1 To KM + 4

 

For j = 1 To KF

j + 1).ClearContents

 

Cells(i + 2,

 

Next j

 

2, 1).ClearContents

 

Cells(i + KM +

 

Next i

 

 

 

End Sub

 

 

 

Проверим работу программы (рис. 16).

27

Рис. 16. Результат нажатия кнопок «Ввод и вывод данных» и «Определить»

Пример 2

Составить программу в редакторе VB MS Excel, с помощью которой будет осуществляться:

1)ввод элементов матрицы размерности (3×4) и их вывод в ячейки рабочего листа (с точностью до 2 знаков после запятой);

2)определение наименьшего по модулю элемента каждого столбца матрицы и произведения элементов матрицы, значения которых по модулю не превышают 1,5;

3)вывод полученных результатов на тот же рабочий лист.

Элементы матрицы и результаты вычислений будут выводиться на второй рабочий лист книги MS Excel. Для этого разместим на данном листе две кнопки с помощью соответствующего инструмента панели инструментов Элементы управ-

ления (рис. 17).

Изменим свойства этих кнопок (таблица 12).

Рис. 17. Матрица

 

Таблица 12

 

 

 

 

 

 

 

 

Объект

Свойство

Объект

Свойство

CommandButton1

Name = calc

CommandButton2

Name = clean

 

Caption = Вычислить

Caption = Очистить

 

 

 

 

Для обработки событий нажатия кнопок «Вычислить» и «Очистить» вве-

дем в модуле «Лист2» следующий код:

 

 

 

Private Sub calc_Click()

‘объявление динамического массива

Dim matr() As Single

Dim i, j, KolStr, KolStolb, im As Integer Dim minElem, proizvElem As Single

KolStr = Val(InputBox("Введите количество строк матрицы", "Ввод данных"))

28

KolStolb = Val(InputBox("Введите количество столбцов матрицы", "Ввод

данных"))

‘изменение

размера массива

ReDim matr(1 To KolStr, 1 To KolStolb)

Randomize

‘генератор

случайных чисел

‘задание значений элементов матрицы с

помощью генератора случайных чисел

иих вывод на лист

For i = 1 To KolStr

For j = 1 To KolStolb

matr(i, j) = Round((-1) ^ (i + j) * Rnd * 5, 2) Cells(i + 1, j) = matr(i, j)

Next j Next i

proizvElem = 1

For j = 1 To KolStolb

minElem = Abs(matr(1, j)) For i = 1 To KolStr

‘поиск минимума по столбцу

If Abs(matr(i, j))< minElem Then minElem = Abs(matr(i, j)): im = i ‘вычисление произведения

If Abs(matr(i, j))<= 1.5 Then proizvElem = proizvElem * matr(i, j) Next i

Cells(6, j) = matr(im, j) Next j

Cells(6, KolStolb + 1) = "|Минимум столбца|"

Cells(8, KolStolb + 1) = "Произведение |x(i,j)|<=1,5" Cells(8, KolStolb) = Round(proizvElem, 4)

End Sub

Private Sub clean_Click()

For i = 2 To 12

For j = 1 To 12

Cells(i, j).ClearContents

Next j

Next i

End Sub

Проверим работу программы

(рис. 18).

Рис. 18. Результат нажатия кнопки «Вычислить»

Задания к лабораторной работе 7

Задание 1

В соответствии с вариантом задания (таблица 13) разработать пользовательский интерфейс и составить программу в редакторе VB MS Excel, с помощью которой осуществляется:

1)ввод исходных данных двумерного массива (ввод наименований в ячейки первого столбца таблицы осуществляется вручную, численные данные

29

массива вводятся через функцию InputBox) и их вывод в виде таблицы на рабочий лист;

2)обработка массива (нахождение суммы, количества элементов и т. п. в зависимости от варианта задания) и вывод ее результатов на тот же рабочий лист.

Таблица 13

 

 

 

Задание

 

 

п/п

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Известны данные о доходе магазина от продажи каждого из 5 наименований кофе за лето:

 

Название кофе

 

 

 

Стоимость

 

 

 

 

Июнь

 

июль

 

Август

 

 

 

 

 

 

 

1

 

 

 

 

Определить:

 

 

 

 

 

 

 

 

общий доход, полученный от продажи каждого наименования кофе;

 

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

 

лета и долю (в %) этого дохода в общем доходе, полученном за лето.

 

Известны данные о количестве часов проката каждого из 5 филиалов фирмы по прокату

 

трех видов спецтехники:

 

 

 

 

 

 

 

Название филиала

 

 

 

Количество часов проката

 

 

 

 

Экскаваторы

 

Бульдозеры

 

Эвакуаторы

 

 

 

 

 

 

 

2

 

 

 

 

Определить:

 

 

 

 

 

 

 

 

общее количество часов проката по каждому виду спецтехники;

 

 

 

название филиала, у которого наибольшее количество часов проката из указанных

 

в таблице, и соответствующий ему вид спецтехники.

 

 

 

Известны данные о зарплате 5 сотрудников фирмы за каждый месяц первого квартала:

 

ФИО сотрудника

 

 

 

Зарплата

 

 

 

 

Январь

 

Февраль

 

Март

 

 

 

 

 

 

 

 

 

 

 

 

3Определить:

общую зарплату всех сотрудников за каждый месяц;

среднюю зарплату сотрудников фирмы, полученную за первый месяц квартала, число и фамилии сотрудников, у которых зарплата за первый месяц квартала превысила найденный средний показатель.

Известныданныеоколичествежильцов, проживающихвкаждойиз3 квартир5-этажногодома:

Номер этажа

 

Число жильцов

 

Первая квартира

Вторая квартира

Третья квартира

 

4Определить:

для каждого этажа – квартиру, в которой проживает наибольшее количество жильцов;

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

Известны данные о доходах каждого из 5 магазинов фирмы за последние 3 года:

 

Название магазина

 

 

Доход

 

 

 

2007

 

2008

2009

 

 

 

 

 

5

 

 

Определить:

 

 

 

 

 

 

название магазина, который получил максимальный доход из указанного в табли-

 

це, и год, за который данный магазин его получил;

 

 

 

для каждого магазина – год, за который этот магазин получил минимальный доход.

 

 

 

30

 

 

Продолжение таблицы 13

Задание

п/п

 

Известны данные о командировочных расходах 5 отделов предприятия за 3 квартала текущего года:

 

Название отдела

 

Командировочные расходы

 

6

1-й квартал

 

2-й квартал

3-й квартал

 

 

 

Определить:

общую сумму командировочных расходов каждого отделапредприятия за 3 квартала;

название отдела, у которого наименьшие командировочные расходы за 3 квартала.

Известны данные о количестве дней проката каждого из 5 видов туристического снаряжения 3 филиалами фирмы:

 

Название туристиче-

 

 

 

 

Количество дней проката

 

 

 

 

 

ского снаряжения

Владивостокский филиал

 

Находкинский филиал

Артемовский филиал

 

7

 

 

 

 

 

Определить:

 

 

 

 

 

 

 

 

 

 

 

 

 

общее количество дней проката туристического снаряжения фирмы;

 

название филиала, имеющего наибольшее количество дней проката, и сколько

 

процентов найденное наибольшее количество дней проката составляет по отноше-

 

нию к суммарному количеству дней проката по всей фирме.

 

 

 

 

 

Известны данные о количестве студентов, обучающихся на каждом из 5 курсов 3 инсти-

 

тутов университета:

 

 

 

 

 

 

 

 

 

 

 

 

 

Курс

 

 

 

 

 

Количество студентов

 

 

 

 

 

 

Автодорожный институт

 

Лесотехнический институт

Институт транспорта и энергетики

 

 

 

 

 

 

 

8

 

 

 

 

 

 

 

 

 

 

Определить

:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

общее количество студентов, обучающихся в трех институтах университета;

 

курс, на котором обучается меньше всего студентов и их количество, и сколько про-

 

центовсоставляетэтоколичество относительнообщегочисластудентовуниверситета.

 

 

 

Известны данные о доходе магазина от продажи каждого из 5 наименований чая за осень:

 

Название чая

 

 

 

 

 

 

Стоимость

 

 

 

 

 

 

Сентябрь

 

 

 

Октябрь

 

Ноябрь

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9Определить:

общий доход магазина, полученный от продажи чая за осень;

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

Известны данные о доходах каждого из 5 филиалов фирмы за первые 3 квартала текущего года:

 

Название филиала

 

 

Доход

 

 

 

1-й квартал

 

2-й квартал

 

3-й квартал

 

 

 

 

 

 

10

 

 

 

Определить:

 

 

 

 

 

 

 

квартал, в котором фирма получила минимальный общий доход;

 

 

 

средний размер дохода, полученного фирмой с одного филиала за третий квартал;

 

количество и название филиалов, принесших за данный квартал доход, не превы-

 

шающий найденного среднего показателя.

 

 

 

 

 

31

 

 

 

Окончание таблицы 13

 

 

 

Задание

 

 

 

п/п

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Известны данные о доходах от продажи 5 наименований валют 3 отделениями банка:

 

Наименование валюты

 

 

Доход

 

 

 

 

Восточное отделение

Центральное отделение

Западное отделение

 

11

 

Определить:

 

 

 

 

 

 

 

общий доход, полученный банком от продажи валют;

 

 

 

 

наименование валюты, от продажи которой был получен наибольший доход из

 

указанного в таблице, и каким отделением банка он был получен.

 

 

 

 

 

 

 

 

Известны данные о доходе магазина от продажи каждого из 5 наименований сока за три

 

весенних месяца:

 

 

 

 

 

 

 

Название сока

 

 

 

 

Стоимость

 

 

 

12

 

 

Март

 

Апрель

Май

 

 

 

 

 

 

 

 

 

 

 

 

 

Определить:

 

 

 

 

 

 

 

 

 

общий доход, полученный за каждый месяц;

 

 

 

 

месяц, в котором был получен минимальный доход от продажи соков.

 

 

 

 

 

 

 

Известны данные о количестве книг, поступивших в каждый из 5 отделов библиотеки за

 

последние 3 года:

 

 

 

 

 

 

 

Название отдела

 

 

 

 

Количество книг

 

 

 

 

 

 

2006

 

2007

2008

 

 

 

 

 

 

 

 

 

13

 

 

 

 

 

Определить:

 

 

 

 

 

 

 

 

 

общее количество книг, поступивших в каждый из отделов библиотеки за 3 года;

 

название отдела и соответствующий год, в который поступило наибольшее коли-

 

чество книг в течение каждого из 3 годов.

 

 

 

 

Известны данные о доходах каждого из 5 филиалов туристической компании за 3 летних

 

месяца:

 

 

 

 

 

 

 

Название филиала

 

 

 

 

Доход

 

 

 

 

 

 

Июнь

 

Июль

Август

 

 

 

 

 

 

 

 

14

 

 

 

 

 

Определить:

 

 

 

 

 

 

 

 

 

общий доход, полученный туристической компанией за лето;

 

название филиала, который получил наибольший общий доход за лето, и долю (в %)

 

этого дохода в суммарном доходе туристической компании, полученном за лето.

 

Известны данные об итогах сдачи студентами экзаменов по 5 дисциплинам:

 

Название дисциплины

 

Количество студентов, сдавших на оценку

 

 

 

«отлично»

 

«хорошо»

«удовлетворительно»

 

 

 

 

 

 

 

 

15

 

 

 

 

Определить:

 

 

 

 

 

 

 

 

название дисциплины, экзамен по которой сдало наименьшее количество студентов;

 

для каждой дисциплины – самую распространенную оценку, на которую получили

 

студенты.

 

 

 

 

 

 

32

Задание 2

В соответствии с вариантом задания (таблица 14) составить программу в редакторе VB MS Excel, с помощью которой осуществляется:

1)ввод элементов матрицы размерности (3×4), осуществляемый с помощью генератора случайных чисел (значения элементов матрицы должны быть вещественными числами, не превышающими по абсолютной величине 5), и их вывод в ячейки рабочего листа (с точностью до 2 знаков после запятой);

2)обработка элементов матрицы (нахождение суммы, количества элементов и т. п. в зависимости от варианта задания) и вывод ее результатов на тот же рабочий лист.

Таблица 14

Задание

п/п

 

1Определить среднее геометрическое каждого столбца матрицы и максимальный по модулю элемент матрицы.

2Для каждого столбца матрицы найти наименьший элемент, а также количество неотрицательных элементов всей матрицы.

3Определить количество и сумму отрицательных элементов каждого столбца матрицы.

4Для каждого столбца матрицы найти произведение максимального по значению и минимального по модулю элементов соответствующего столбца.

5Определить количество и сумму отрицательных элементов каждой строки матрицы.

6Определить наибольший по модулю элемент матрицы, номер строки и столбца, на пересечении которых он расположен.

7Определить модуль произведения элементов каждого столбца матрицы и количество положительных элементов матрицы.

8Для каждой строки матрицы найти сумму максимального и минимального элементов соответствующей строки.

9Определить среднее арифметическое каждого столбца матрицы и наибольший по модулю элемент матрицы.

Определить наименьший по модулю элемент матрицы и получить новую матрицу путём

10замены на нулевые всех элементов строки и столбца, на пересечении которых расположен элемент с наименьшим по модулю значением.

11Получить новую матрицу путем умножения элементов каждой строки исходной матрицы на наименьший по значению элемент соответствующей строки.

12Определить среднее геометрическое каждой строки матрицы и количество элементов матрицы, значения которых по модулю больше 2.

13Получить новую матрицу путем умножения элементов каждого столбца исходной матрицы на наименьший по модулю элемент соответствующего столбца.

14Получить новую матрицу путем прибавления к элементам каждого столбца исходной матрицы наименьшего по значению элемента соответствующего столбца.

15Определить количество и произведение элементов матрицы, значения которых по модулю не превышают 2.

33

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1.Ананьев А. И. Самоучитель Visual Basic 6.0 / А. И. Ананьев, А. Ф. Федоров.

СПб. : БХВ-Петербург, 2005. – 624 с.

2.Гарнаев А. Ю. Использование MS Excel и VBA в экономике и финансах / А. Ю. Гарнаев. – СПб. : БХВ-Петербург, 2000. – 336 с.

3.Гарнаев А. Ю. Самоучитель VBA / А. Ю. Гарнаев. – СПб. : БХВ-Петербург, 2007. – 512 с.

4.Демидова Л. А. Программирование в среде Visual Basic for Applications :

практикум / Л. А. Демидова, А. Н. Пылькин. – М. : Горячая линия – Теле-

ком, 2004. – 175 с.

5.Златопольский Д. М. Сборник задач по программированию / Д. М. Златопольский. – СПб. : БХВ-Петербург, 2007. – 240 с.

6.Каммингс С. VBA для «чайников» : пер. с англ. / С. Каммингс. – М. : Виль-

ямс, 2001. – 448 с.

7.Кузьменко В. Г. Программирование на VBA 2002 / В. Г. Кузьменко. – М. :

Бином-Пресс, 2003. – 880 с.

8.Панфилова Т. И. MS EXCEL и VBA. Примеры и задания / Т. И. Панфилова.

М. : Интеллект-Центр, 2006. – 96 с.

9.Сафронов И. К. Visual Basic в задачах и примерах / И. К. Сафронов. – СПб.

:БХВ-Петербург, 2007. – 400 с.

10.Слепцова Л. Д. Программирование на VBA в Microsoft Office 2007 : само-

учитель / Л. Д. Слепцова. – М. : Вильямс, 2007. – 432 с.

11.Туркин О. В. VBA. Практическое программирование / О. В. Туркин. – М. :

СОЛОН-ПРЕСС, 2007. – 128 с.

12.Уокенбах Д. Профессиональное программирование на VBA в Excel 2002 : пер. с англ. / Д. Уокенбах. – М. : Вильямс, 2003. – 784 с.

34