Описание входных данных и результат вычислений

Содержание

1. Задание. 6

2. Описание переменных. 7

3. Блок схема. 10

4. Описание алгоритма. 17

5. Листинг программы.. 18

6. Описание входных данных и результат вычислений. 23

7. Список использованной литературы.. 26

Задание

Молокозавод в течение 3 месяцев упаковывал молоко в пакеты емкостью 0,5 литров и 1 литр и поставлял свою продукцию в 5 различных магазинов. Цена на пакет молока устанавливалась в начале каждого месяца и не менялась.

Написать программу на языке VBA, которая вводит исходные данные, выполняет расчеты и выводит на экран: исходные данные в виде таблицы, где указаны наименование магазинов, количество пакетов молока емкостью 0,5 и 1 литр соответственно, ежемесячно поставляемых в каждый магазин, цены на продукцию в текущем месяце;

· общее количество литров молока, поставленных заводом в магазины за все время;

· общее количество пакетов молока, поставленных заводом в магазины в каждом месяце;

· доход завода за 3 месяца за молоко, упакованное в пакеты емкостью 0,5 литров;

· наименование магазина, в который было поставлено наибольшее количество пакетов молока

Описание переменных

Исходные данные находятся на листе «Нач_д» (рис. 1) и содержат сле­дующую информацию:

1) Количество пакетов молока емкостью 0,5 и 1 литр, ежемесячно поставляемых в каждый магазин.

2) Цены на продукцию в текущем месяце.

Результаты работы программы оформляются на листе «Результат» (рис. 2).

Описание входных данных и результат вычислений - student2.ru

Рис.1. Лист с начальными данными

Описание входных данных и результат вычислений - student2.ru

Рис.2. Полученные результаты

В программе переменные описаны следующим образом:

1) kol_paketov(4, 5) - двумерный массив, предназначенный для хранения значений о количестве пакетов молока поставленных в магазины.

Dim kol_paketov(4, 5) As Integer

2) kol_lit(5) - массив, предназначенный для хранения количества литров молока поставленного заводом каждому магазину.

Dim kol_lit(5) As Single

3) obch_kol_litr - переменная для хранения общего количества литров молока поставленного заводом.

Dim obch_kol_litr As Single

4) kol_pak(2) - массив для хранения количество пакетов поставляемых заводом в каждом месяце.

Dim kol_pak(2) As Integer

5) obch_kol_paketov - переменная для хранения общего количества пакетов молока поставленного заводом за 3 месяца.

Dim obch_kol_paketov As Integer

6) kol_pak05 - переменная для хранения количества пакетов по 0,5 л.

Dim kol_pak05 As Integer

7) cena(4, 5) - массив для хранения цен на молоко упакованное в пакеты по 0,5 л.

Dim cena(4, 5) As Single

8) dohod - переменная для хранения дохода завода от проданных за 3 месяца пакетов молока по 0,5 л.

Dim dohod As Single

9) mag_kol_pak(4) - массив для хранения количества пакетов молока поставленных заводом каждому магазину.

Dim mag_kol_pak(4) As Integer

10) name - массив для хранения названий магазинов.

Dim name

11) ind() - массив для хранения индексов массива mag_kol_pak которые хранят нибольшие значения.

Dim ind() As Integer

В программе также были использованы вспомогательные переменные, счетчики циклов, i и j, являющиеся целыми числами. Были также использованы переменные max, col, r-целого типа, для определения количества чисел и максимального числа.

Dim i, j, max, col, r As Integer

Промежуточные переменные c и d –вещественного типа.

Dim c, d As Single

Массивы kol_paketov(4, 5), kol_pak(2), mag_kol_pak(4) и переменные obch_kol_paketov, kol_pak05 имеют целый тип т.к. количество пакетов измеряется в единицах.

Массивы kol_lit(5), cena(4, 5) и переменные obch_kol_litr, dohod имеют вещественный тип, т. к. литры и цена могут иметь как целую так и дробную часть значения.

Блок схема

Описание входных данных и результат вычислений - student2.ru

Рис.3. Блок-схема

Описание входных данных и результат вычислений - student2.ru

Рис.3. Блок-схема (продолжение)

Описание входных данных и результат вычислений - student2.ru

Рис.3. Блок-схема (продолжение)

Описание входных данных и результат вычислений - student2.ru

Рис.3. Блок-схема (продолжение)

Описание входных данных и результат вычислений - student2.ru

Рис.3. Блок-схема (продолжение)

Описание входных данных и результат вычислений - student2.ru

Рис.3. Блок-схема (продолжение)

Описание входных данных и результат вычислений - student2.ru

Рис.3. Блок-схема (окончание)

Описание алгоритма

Начало программы.

Ввод начальных (нулевых) значений для расчетных величин (количество пакетов молока емкостью 0,5 и 1 литр, ежемесячно поставляемых в каждый магазин и цены на продукцию в текущем месяце).

Открытие листа с начальными данными («Нач_д») и получение этих данных в рабочие переменные (массивы kol_paketov(i, j) и cena(i, j) ).

Находим количество литров молока поставляемого заводом в каждый магазин.

Определяем общее количество литров молока поставляемого заводом, количество пакетов поставляемых заводом в каждом месяце, общее количество пакетов молока поставленных заводом за 3 месяца, доход завода за 3 месяца за молоко, упакованное в пакеты по 0,5 л., кол-во пакетов поставленных каждому магазину.

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

Заполняем массив name названиями магазинов.

Определяем магазин с наибольшим кол-вом поставленных заводом пакетов молока. Используется алго­ритм сравнения, при равенстве двух и более значений (количества пакетов молока), выведены будут оба названия магазина.

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

Листинг программы

Option Explicit

Private Sub CB1_Click()

'массив для хранения количества пакетов поставленных в магазины

Dim kol_paketov(4, 5) As Integer

'массив для хранения кол-ва литров молока поставленного каждому магазину(1-5)

'c и d -переменные для хранения промежуточных значений

Dim kol_lit(5), c, d As Single

'переменная для хранения общего количества литров молока поставляемого заводом

Dim obch_kol_litr As Single

'массив для хранения количество пакетов поставляемых заводом в каждом месяце

Dim kol_pak(2) As Integer

'переменная для хранения общего количества пакетов молока поставленного заводом за 3 месяца

Dim obch_kol_paketov As Integer

'переменная для хранения кол-ва пакетов по 0,5 л

Dim kol_pak05 As Integer

'массив для хранения цен на молоко упакованное в пакеты по 0,5 л

Dim cena(4, 5) As Single

'переменная для хранения дохода завода от проданных за 3 месяца пакетов молока по 0,5 л

Dim dohod As Single

'массив для хранения кол-ва пакетов поставленных заводом каждому магазину

Dim mag_kol_pak(4) As Integer

'массив для хранения названий магазинов

Dim name

'переменные i,j для организации циклов, max-макс. значение пакетов поставленных в магазин и промеж. переменные-col и r

Dim i, j, max, col, r As Integer

'массив для хранения индексов массива mag_kol_pak которые хранят наибольшие значения

Dim ind() As Integer

'обнуление ячеек предназначенных для вывода наименования магазина(ов) с максимальным значением

For i = 0 To 4

Worksheets(2).Cells(13 + i, 2).Clear

Next i

'считывание начальных данных

Sheets("Нач_д").Select

'считывание кол-ва поставляемых пакетов в матрицу

For i = 0 To 4

For j = 0 To 5

kol_paketov(i, j) = Worksheets(1).Cells(i + 4, j + 2)

Next j

Next i

'находим количество литров молока поставляемого заводом в (1-5) магазины

For i = 0 To 4

For j = 0 To 5 Step 2

c = kol_paketov(i, j) * 0.5 + kol_paketov(i, j + 1) * 1

d = d + c

Next j

kol_lit(i) = d

c = 0

d = 0

Next i

'определяем общее количество литров молока поставляемого заводом

obch_kol_litr = WorksheetFunction.Sum(kol_lit)

'определяем количество пакетов поставляемых заводом в каждом месяце

c = 0

For j = 0 To 5

For i = 0 To 4

c = c + kol_paketov(i, j)

Next i

If (j = 1) Then

kol_pak(0) = c

c = 0

End If

If (j = 3) Then

kol_pak(1) = c

c = 0

End If

If (j = 5) Then

kol_pak(2) = c

c = 0

End If

Next j

'определение общего количества пакетов молока поставленных заводом за 3 месяца

obch_kol_paketov = WorksheetFunction.Sum(kol_pak)

'определение дохода завода за 3 месяца, за молоко упакованное в пакеты по 0,5 л

'кладём значения цен в массив cena

For i = 0 To 4

For j = 0 To 5

cena(i, j) = Worksheets(1).Cells(i + 4, j + 8)

Next j

Next i

'перемножаем количество пакетов по 0,5 л определённого магазина и месяца с соответствующей ценой на это молоко

For i = 0 To 4

For j = 0 To 5 Step 2

dohod = dohod + kol_paketov(i, j) * cena(i, j)

Next j

Next i

'определение кол-ва пакетов поставленных каждому магазину(1-5)

For i = 0 To 4

For j = 0 To 5

mag_kol_pak(i) = mag_kol_pak(i) + kol_paketov(i, j)

Next j

Next i

'заполнение массива name названиями магазинов

name = Array("Пятёрочка", "Перекрёсток", "Копейка", "Каравай", "Никольский")

'определяем магазин с наибольшим кол-вом поставленных пакетов молока

max = mag_kol_pak(0)

For i = 0 To 4

If (max < mag_kol_pak(i)) Then

max = mag_kol_pak(i)

End If

Next i

'подсчёт кол-ва магазинов с максимальным кол-вом пакетов

col = 0

For i = 0 To 4

If (max = mag_kol_pak(i)) Then col = col + 1

Next i

'определяем размерность массива

ReDim ind(col - 1)

'определяем индексы массива с максимальными значениями

c = 0

For i = 0 To 4

If ((max = mag_kol_pak(i))) Then

ind(c) = i

c = c + 1

End If

Next i

'определение магазина в который было поставлено наибольшее кол-во пакетов

c = 0

r = 0

For i = 0 To 4

If (ind(c) = i) Then

Worksheets(2).Cells(12 + r, 2) = name(i)

r = r + 1

c = c + 1

If (col = c) Then GoTo m2

End If

Next i

m2: Sheets("Результат").Select

'вывод наименования магазинов

For i = 0 To 4

Worksheets(2).Cells(13 + i, 10) = name(i)

Next i

'вывод кол-ва поставленных пакетов в каждый магазин

For i = 0 To 4

Worksheets(2).Cells(13 + i, 11) = mag_kol_pak(i)

Next i

'на листе "Результат" создаются ячейки с определенными названиями

Worksheets(2).Cells(3, 1) = "Наименование магазина"

Worksheets(2).Cells(4, 1) = "Пятёрочка"

Worksheets(2).Cells(5, 1) = "Перекрёсток"

Worksheets(2).Cells(6, 1) = "Копейка"

Worksheets(2).Cells(7, 1) = "Каравай"

Worksheets(2).Cells(8, 1) = "Никольский"

Worksheets(2).Cells(1, 3) = "Количество поставляемых пакетов молока"

Worksheets(2).Cells(2, 2) = "1-ый месяц"

Worksheets(2).Cells(2, 4) = "2-ой месяц"

Worksheets(2).Cells(2, 6) = "3-ий месяц"

Worksheets(2).Cells(3, 2) = "0,5 л"

Worksheets(2).Cells(3, 3) = "1 л"

Worksheets(2).Cells(3, 4) = "0,5 л"

Worksheets(2).Cells(3, 5) = "1 л"

Worksheets(2).Cells(3, 6) = "0,5 л"

Worksheets(2).Cells(3, 7) = "1 л"

Worksheets(2).Cells(1, 8) = "Цена на продукцию в каждом месяце"

Worksheets(2).Cells(2, 8) = "1-ый месяц"

Worksheets(2).Cells(2, 10) = "2-ой месяц"

Worksheets(2).Cells(2, 12) = "3-ий месяц"

Worksheets(2).Cells(3, 8) = "0,5 л"

Worksheets(2).Cells(3, 9) = "1 л"

Worksheets(2).Cells(3, 10) = "0,5 л"

Worksheets(2).Cells(3, 11) = "1 л"

Worksheets(2).Cells(3, 12) = "0,5 л"

Worksheets(2).Cells(3, 13) = "1 л"

Worksheets(2).Cells(9, 1) = "Количество поставленных пакетов молока в месяц:"

Worksheets(2).Cells(10, 1) = "Общее количество пакетов:"

Worksheets(2).Cells(3, 14) = "Объём поставленного молока"

Worksheets(2).Cells(9, 11) = "Итого общее кол-во литров:"

Worksheets(2).Cells(11, 1) = "Доход завода за 3 месяца за молоко в 0,5 пакетах:"

Worksheets(2).Cells(12, 1) = "Магазин(ы) с максимальным кол-вом пакетов молока:"

Worksheets(2).Cells(12, 10) = "Наименование"

Worksheets(2).Cells(12, 11) = "Кол-во поставленных пакетов"

'заполняем созданную таблицу значениями

'кол-вом пакетов

For i = 0 To 4

For j = 0 To 5

Worksheets(2).Cells(i + 4, j + 2) = kol_paketov(i, j)

Next j

Next i

'ценами на пакеты

For i = 0 To 4

For j = 0 To 5

Worksheets(2).Cells(i + 4, j + 8) = cena(i, j)

Next j

Next i

'вывод на лист "Результат" рассчитанных данных

c = 2

For i = 0 To 2

Worksheets(2).Cells(9, i + c) = kol_pak(i)

c = c + 1

Next i

'вывод общего количества пакетов

Worksheets(2).Cells(10, 2) = obch_kol_paketov

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

For i = 0 To 4

Worksheets(2).Cells(i + 4, 14) = kol_lit(i)

Next i

'вывод общего количества литров поставленных заводом

Worksheets(2).Cells(9, 14) = obch_kol_litr

'вывод общего дохода завода за 0,5 пакеты

Worksheets(2).Cells(11, 2) = dohod

End Sub

Описание входных данных и результат вычислений

Проверка программы на всех единицах:

Описание входных данных и результат вычислений - student2.ru

Описание входных данных и результат вычислений - student2.ru

Проверка на всех нулях:

Описание входных данных и результат вычислений - student2.ru

Описание входных данных и результат вычислений - student2.ru

Проверка на произвольных данных:

Описание входных данных и результат вычислений - student2.ru

Описание входных данных и результат вычислений - student2.ru

Исходные данные представлены на Рис.№1., решение – на Рис.№2.

Список использованной литературы

1. MS Office XP, 2003 Word, Excel, Access, Outlook, PowerPoint, FrontPage, MS Project/ А. К. Гультяев: Корона-Век, 2006

2. VBA. Практическое программирование/ Туркин Олег: Солон-пресс,2007

3. VBA/ Кузьменко В.Г.: Бином,2008.

4. Измерение, управление и регулирование с помощью макросов VBA в Word и Excel/ Берндт Г.-Й.: КОРОНА-Век, 2008

5. Информатика. Методические указания по выполнению практических работ в компьютерном классе (Access, Internet) / Гришин М.П., Юрасов А.Б. М.: МГИУ, 2003.

6. Информатика. Методическое пособие по выполнению практических работ в компьютерном классе (Word, Excel) / Гришин М.П. М.: МГИУ, 2005.

7. Информатика. Часть 1. Введение в информатику: учебное пособие / Гришин М.П., Иванов М.Н., Носова Т.К., Суворов С.В. М.: МГИУ, 2008.

8. Информатика. Часть 2. Программирование: Учебно-методическое пособие / Иванов М.Н., Суворов С.В. М.: МГИУ. 2006.

9. Моделирование с помощью Microsoft Excel и VBA. Разработка систем поддержки принятия решений/ Кристиан Олбрайт: Вильямс, 2005

10. Профессиональная разработка приложений Excel/ Стивен Буллен, Роб Боуви, Джон Грин: Вильямс, 2005

11. Самоучитель VBA/ Андрей Гарнаев: БХВ-Петербург,2004

12. Самоучитель программирования на VBA в Microsoft Office/В. Д. Хореев: Юниор, 2001

13. Электронные таблицы Microsoft Excel. Проблемы и решения/ Лори Анн Ульрих: Эком, 2002

Наши рекомендации