Рис.3. Блок-схема (продолжение)
Рис.3. Блок-схема (окончание) 4. Описание алгоритма
Начало программы.
Ввод начальных (нулевых) значений для расчетных величин (количество проданных велосипедов за месяц, выручка по месяцам и за год, день с наибольшим заработком и величина максимальной выручки).
Открытие листа с начальными данными («Лист1») и получение этих данных в рабочие переменные (массивы сеnа(10) и kоll(12, 10)).
Открытие листа с результатами, формирование матрицы входных данных. Организуется два вложенных цикла (по каждой модели велосипеда и месяцу). Во внутреннем цикле (по месяцам, расчет по одной модели) суммируется количество проданных велосипедов, после выхода из внутреннего цикла выводится результат по модели.
Расчет величины выручки от продажи велосипедов за каждый месяц, количество проданных велосипедов и вывод результатов. Организуется два вложенных цикла: внешний по моделям, внутренний по месяцам. Для оптимизации процесса расчетная часть совмещена с выводом: во внутреннем цикле происходит вычисление выручки от продажи i-ого велосипеда в j-й месяц с выводом результата, во внешнем цикле (после получения результатов внутреннего цикла) — вывод стоимости одного велосипеда и по всем велосипедам. Расчет выручки за каждый месяц организован в этом же внутреннем цикле.
Определение наименования велосипеда, принесшего наибольший доход за год. Используется алгоритм сравнения, при равенстве двух и более годовых доходов результативным считается последний доход.
5. Листинг программы
Private Sub CommandButton1_Click()
'Сначала объявляем переменные, используемые в программе.
'счетчики циклов
Dim i, j As Integer
'количество проданных велосипедов (по месяцам)
Dim koll(10, 12) As Integer
'выручка за месяц
Dim zar(13) As Double
'количество проданных велосипедов (за год)
Dim koll_n(12) As Integer
'велосипед, принесший наибольший доход за год
Dim num As Integer
'стоимость велосипеда
Dim cena(10) As Double
'переменные, нужные для предварительных расчетов
Dim zarpl As Double
Dim pic As Double
Dim comb(10) As Double
‘Далее всем переменным присваивается нулевое значение.
For i = 1 To 10
koll_n(i) = 0
comb(i) = 0
Next
For j = 1 To 13
zar(j) = 0
Next
pic = 0
zarpl = 0
num = 0
'В этом фрагменте кода происходит считывание начальных данных с листа «Лист1», и в каждую ячейку массива cena(10) записывается стоимость каждой марки велосипеда, а в ячейках двумерного массива koll(10,12) теперь находится количество велосипедов каждого вида, проданных в каждый месяц.
Sheets("Лист1").Select
For i = 1 To 10
cena(i) = Cells(3 + i, 2)
Next
For i = 1 To 10
For j = 1 To 12
koll(i, j) = Cells(3 + i, 2 + j)
Next j
Next i
'Далее на листе «Лист2» в ячейку с определенным номером вводится ее название.
Sheets("Лист2").Cells(2, 1) = "Модель"
Sheets("Лист2").Cells(2, 2) = "Стоимость 1 шт."
Sheets("Лист2").Cells(2, 3) = "Продано"
Sheets("Лист2").Cells(3, 3) = "Январь"
Sheets("Лист2").Cells(3, 4) = "Февраль"
Sheets("Лист2").Cells(3, 5) = "Март"
Sheets("Лист2").Cells(3, 6) = "Апрель"
Sheets("Лист2").Cells(3, 7) = "Май"
Sheets("Лист2").Cells(3, 8) = "Июнь"
Sheets("Лист2").Cells(3, 9) = "Июль"
Sheets("Лист2").Cells(3, 10) = "Август"
Sheets("Лист2").Cells(3, 11) = "Сентябрь"
Sheets("Лист2").Cells(3, 12) = "Октябрь"
Sheets("Лист2").Cells(3, 13) = "Ноябрь"
Sheets("Лист2").Cells(3, 14) = "Декабрь"
Sheets("Лист2").Cells(3, 15) = "Всего"
Sheets("Лист2").Cells(4, 1) = "Школьник"
Sheets("Лист2").Cells(5, 1) = "Дружба"
Sheets("Лист2").Cells(6, 1) = "Аист"
Sheets("Лист2").Cells(7, 1) = "Самара"
Sheets("Лист2").Cells(8, 1) = "Next"
Sheets("Лист2").Cells(9, 1) = "Honda"
Sheets("Лист2").Cells(10, 1) = "Урал"
Sheets("Лист2").Cells(11, 1) = "Салют"
Sheets("Лист2").Cells(12, 1) = "Орленок"
Sheets("Лист2").Cells(13, 1) = "Forward"
'В этом фрагменте происходит вывод на рабочий лист выручку по моделям за месяц и количество проданных велосипедов за год.
For i = 1 To 10
Sheets("Лист2").Cells(3 + i, 2) = cena(i)
For j = 1 To 12
Sheets("Лист2").Cells(3 + i, 2 + j) = koll(i, j)
koll_n(i) = koll_n(i) + koll(i, j)
Next j
Sheets("Лист2").Cells(3 + i, 15) = koll_n(i)
Next i
'Ниже происходит ввод названий соответствующих столбцов и строк.
Sheets("Лист2").Select
Sheets("Лист2").Cells(17, 1) = "Модель"
Sheets("Лист2").Cells(17, 2) = "Стоимость 1 шт."
Sheets("Лист2").Cells(17, 3) = "Заработано"
Sheets("Лист2").Cells(18, 3) = "Январь"
Sheets("Лист2").Cells(18, 4) = "Февраль"
Sheets("Лист2").Cells(18, 5) = "Март"
Sheets("Лист2").Cells(18, 6) = "Апрель"
Sheets("Лист2").Cells(18, 7) = "Май"
Sheets("Лист2").Cells(18, 8) = "Июнь"
Sheets("Лист2").Cells(18, 9) = "Июль"
Sheets("Лист2").Cells(18, 10) = "Август"
Sheets("Лист2").Cells(18, 11) = "Сентябрь"
Sheets("Лист2").Cells(18, 12) = "Октябрь"
Sheets("Лист2").Cells(18, 13) = "Ноябрь"
Sheets("Лист2").Cells(18, 14) = "Декабрь"
Sheets("Лист2").Cells(18, 15) = "Всего"
Sheets("Лист2").Cells(19, 1) = "Школьник"
Sheets("Лист2").Cells(20, 1) = "Дружба"
Sheets("Лист2").Cells(21, 1) = "Аист"
Sheets("Лист2").Cells(22, 1) = "Самара"
Sheets("Лист2").Cells(23, 1) = "Next"
Sheets("Лист2").Cells(24, 1) = "Honda"
Sheets("Лист2").Cells(25, 1) = "Урал"
Sheets("Лист2").Cells(26, 1) = "Салют"
Sheets("Лист2").Cells(27, 1) = "Орленок"
Sheets("Лист2").Cells(28, 1) = "Forward"
Sheets("Лист2").Cells(29, 1) = "ИТОГО"
'Во внутреннем цикле происходит вычисление выручки по i-му велосипеду в j-й месяц с выводом результата, а во внешнем цикле (после получения результатов внутреннего цикла) происходит вывод стоимости одного велосипеда и по всем велосипедам. Расчет выручки за каждый месяц организован в этом же внутреннем цикле.