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

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

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

Открытие листа с начальными данными («Нач_д») и получение этих данных в рабочие переменные (массивы сеnа(14) и kоll(10,16)).

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

Расчет сумм заработков по машинкам за каждый месяц, количество проданных машинок и вывод результатов. Организуется два вложенных цик­ла: внешний по машинкам, внутренний по месяцам. Для оптимизации процесса расчетная часть совмещена с выводом: во внутреннем цикле происходит вы­числение суммы заработка по i-му машинке в j-й месяц с выводом результата, во внешнем цикле (после получения результатов внутреннего цикла) — вы­вод цены одной машинки и по всем машинкам. Расчет заработной платы за каждый месяц организован в этом же внутреннем цикле.

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

Определение наименование машинки, принёсшей наибольший доход в последнем месяце. Используется принцип определённой переменной в соответствии с использованием позиции относительно количества только в i строке.

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

Sub Function()

Сначала объявляем переменные, используемые в программе.

'счетчики циклов

Dim i As Integer, j As Integer

' количество машинок каждого вида за каждый месяц

Dim koll(10, 16) As Integer

'заработок за каждый месяц

Dim zar(16) As Double

'общий доход по всем машинкам за 13 месяцев

Dim zar2(13) As Double

'количество машинок каждого вида за истекший период

Dim koll_n(15) As Integer

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

Dim mes As Integer

'сумма наибольшего заработка

Dim zarpl As Double

'стоимость одной машинки каждого вида

Dim cena(14) As Double

'доход по каждой машике за первые 2 месяца

Dim doh As Double

'производные, организующие принцип определённого значение для нахождения наименования машинки, принёсшая наибольший доход в последнем месяце.Tmax-определённая переменная. Pos- позиция относительно количества только в i строке.

Dim Tmax As Integer,pos As Integer

Далее всем переменным присваивается нулевое значение.

For i = 1 То 10

Koll _ n(i) = 0

Next i

For j=1 То 16 zar(j) = 0

Zar2(j)=0

Nехt j

zarpl = 0

mes = 0

doh=0

В этом фрагменте кода происходит считывание начальных данных с листа «Нач _ д», и в каждую ячейку массива cena(14) записывается стоимость каждой детали, а в ячейках двумерного массива koll(10,16) теперь находится количество деталей каждого вида, изготовленных в каждый из рабочих дней.

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

For i = 1 То 10

сеnа(i) = Cells(3 + i, 2)

Next

For i = 1 Тo 10

For j = 1 Тo 15

koll(i, j) = Cells(3 + i, 2 + j)

Next j

Next i

Далее на листе «Результат» в ячейку с определенным номером вводится ее название.

Sheets(“Результат”).Cells(1,1)=«Количество машинок за весь период с указанной изначальной ценой за каждый месяц»

Sheets(“Результат”).Cells(2,1)=«Наименование машинки»

Sheets(“Результат”).Cells(2,2)=«Цена машинки в каждом месяце»

Sheets(“Результат”).Cells(2,3)=«Количество проданных машинок в течение данного периода»

Sheets(“Результат”).Cells(3,3)=«1-й месяц»

Sheets(“Результат”).Cells(3,4)=«2-й месяц»

Sheets(“Результат”).Cells(3,5)=«3-й месяц»

Sheets(“Результат”).Cells(3,6)=«4-й месяц»

Sheets(“Результат”).Cells(3,7)=«5-й месяц»

Sheets(“Результат”).Cells(3,8)=«6-й месяц»

Sheets(“Результат”).Cells(3,9)=«7-й месяц»

Sheets(“Результат”).Cells(3,10)=«8-й месяц»

Sheets(“Результат”).Cells(3,11)=«9-й месяц»

Sheets(“Результат”).Cells(3,12)=«10-й месяц»

Sheets(“Результат”).Cells(3,13)=«11-й месяц»

Sheets(“Результат”).Cells(3,14)=«12-й месяц»

Sheets(“Результат”).Cells(3,15)=«13-й месяц»

Sheets(“Результат”).Cells(3,16)=«14-й месяц»

Sheets(“Результат”).Cells(3,17)=«15-й месяц»

Sheets(“Результат”).Cells(4,1)=«Bugatti»

Sheets(“Результат”).Cells(5,1)=«Ferrari»

Sheets(“Результат”).Cells(6,1)=«VAZ»

Sheets(“Результат”).Cells(7,1)=«Ford»

Sheets(“Результат”).Cells(8,1)=«Mersedes»

Sheets(“Результат”).Cells(9,1)=«Chevrolet»

Sheets(“Результат”).Cells(10,1)=«Opel»

Sheets(“Результат”).Cells(11,1)=«Mitshubishi»

Sheets(“Результат”).Cells(12,1)=«BMW»

Sheets(“Результат”).Cells(13,1)=«Chrystler»

Sheets(“Результат”).Cells(14,1)=«Результат в денежном эквиваленте»

Sheets(“Результат”).Cells(14,3)=«Заработано»

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

For i = 1 То 10

Sheets("Результат").Сеlls(3 + i, 2+j) = cena(i)

For j = 1 То 16

Sheets("Результат").Сеlls(3 + i, 2 + j) = koll(i, j)

koll _ n (i) = koll _ n (i) + koll(i, j)

Next j

Sheets("Результат").Сеlls(3 + i, 18) = koll_n(i)

Next i

Далее на листе «Результат» в ячейку с определенным номером вводится ее название.

Sheets(«Результат»).Select

Sheets(“Результат”).Cells(14,1)=«Наименование машинки»

Sheets(“Результат”).Cells(14,2)=«Цена машинки в каждом месяце»

Sheets(“Результат”).Cells(14,3)=«1-й месяц»

Sheets(“Результат”).Cells(14,4)=«2-й месяц»

Sheets(“Результат”).Cells(14,5)=«3-й месяц»

Sheets(“Результат”).Cells(14,6)=«4-й месяц»

Sheets(“Результат”).Cells(14,7)=«5-й месяц»

Sheets(“Результат”).Cells(14,8)=«6-й месяц»

Sheets(“Результат”).Cells(14,9)=«7-й месяц»

Sheets(“Результат”).Cells(14,10)=«8-й месяц»

Sheets(“Результат”).Cells(14,11)=«9-й месяц»

Sheets(“Результат”).Cells(14,12)=«10-й месяц»

Sheets(“Результат”).Cells(14,13)=«11-й месяц»

Sheets(“Результат”).Cells(14,14)=«12-й месяц»

Sheets(“Результат”).Cells(14,15)=«13-й месяц»

Sheets(“Результат”).Cells(14,16)=«14-й месяц»

Sheets(“Результат”).Cells(14,17)=«15-й месяц»

Sheets(“Результат”).Cells(14,18)=«Всего»

Sheets(“Результат”).Cells(15,1)=«Bugatti»

Sheets(“Результат”).Cells(16,1)=«Ferrari»

Sheets(“Результат”).Cells(17,1)=«VAZ»

Sheets(“Результат”).Cells(18,1)=«Ford»

Sheets(“Результат”).Cells(19,1)=«Mersedes»

Sheets(“Результат”).Cells(20,1)=«Chevrolet»

Sheets(“Результат”).Cells(21,1)=«Opel»

Sheets(“Результат”).Cells(22,1)=«Mitshubishi»

Sheets(“Результат”).Cells(23,1)=«BMW»

Sheets(“Результат”).Cells(24,1)=«Chrystler»

Sheets(“Результат”).Cells(25,1)=«Итого»

Во внутреннем цикле происходит вычисление суммы заработка по i-ной машинки в j-й месяц с выводом результата, а во внешнем цикле (после получения результатов внутреннего цикла) происходит вывод цены одной машинки и по всем машинкам. Доход за каждый месяц организован в этом же внутреннем цикле.

For i = 1 То 10 For j = 1 То 15

Sheets("Результат").Сеlls(14 + i, 2 + j) = koll(i, j) * сеna(i)

zar(j) = zar(j) + koll(i, j) * сеna(i)

zar(16) = zar(16) + koll(i, j) * сеnа(i)

Next j

Sheets("Результат").Сеlls(14 + i, 2) = сеnа(i)

Sheets("Результат").Сеlls(14 + i, 18) = сеnа(i) * koll _ n (i)

Next i

Общий доход по всем машинкам за 13 месяцев организован в этом-же внутреннем цикле, разве что для решения данного вопроса понадобилось вводить дополнительную переменную zar2, которая впоследствии заменяет zar.

For i = 1 То 10 For j = 1 То 15

Sheets("Результат").Сеlls(14 + i, 2 + j) = koll(i, j) * сеna(i)

zar(j) = zar(j) + koll(i, j) * сеna(i)

zar2(13) = zar2(13) + koll(i, j) * сеnа(i)

Next j

Sheets("Результат").Сеlls(14 + i, 2) = сеnа(i)

Sheets("Результат").Сеlls(14 + i, 18) = сеnа(i) * koll _ n (i)

Next i

Здесь описан алгоритм сравнения некоторой заработной платы с заработной платой, полученной в один из 15 месяцев. Если рассматриваемая больше другой, то сумме наибольшего заработка присваивается текущее значение, а месяцем с максимальным заработком становится день под номером j.

For j = 1 То 15

Sheets("Результат").Сеlls(25, 2 + j) = zar(j)

If zar(j) > zarpl Then

zarpl = zar(j)

mes = j

End If

Next

Наименование машинки, принёсшей наибольший доход в последнем месяце. Используется принцип определённой переменной в соответствии с использованием позиции относительно количества только в i строке.

Dim Tmax As Integer,pos As Integer

For i=1 To 10

If Tmax<koll(I,15)*cena(i) Then Tmax=koll(I,15)*cena(i):pos=i

Next i

Cells(35,1)= «Машинка»

Cells(35,2)=Cells(15+pos,1)

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

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

Sheets("Результат").Сеlls(28,1) = «Общий доход по всем машинкам за 13 месяцев»

Sheets("Результат").Сеlls(28,5) = zar2(13)

Sheets("Результат").Сеlls(25,18) = zar(16)

Sheets("Результат").Сеlls(23,5) = zar(6)

Sheets("Результат").Сеlls(29,1) = «Месяц с максимальный заработком»

Sheets("Результат").Сеlls(29,5) = mes

Sheets("Результат").Сеlls(30,1) = «Заработано»

Sheets("Результат").Сеlls(30,3) = zarpl

End Sub

Ниже Расчёт дохода по каждой машинке за первые 2 месяца в данной программе проводятся уже с выводом другой таблицы под названием «Доход. Изначально в данной созданной таблицы самостоятельно были прописаны названия столбцов, а также названия машинок. Остальные нужные нам данные для расчёта дохода мы взяли с исходной таблицы.

Sub dohod(2)

For i=2 To 11

For j=1 to 4

Sheets(«доход»).Cells(2+i,j)=Sheets(«Нач_д»).Cells(2+i,j)

doh=(Sheets(«Доход»).Cells(2+i,4)+Sheets(«Доход»).Cells(2+I,3)*

Sheets(«Доход»).Cells(2+I,2)

Sheets(«Доход»).Cells(2+i,5)=doh

Next j

Next i

End Sub


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: