Описание алгоритма
Зарезервируем память для хранения переменных и массивов:
Dim urozhay(6, 5) As Integer - урожай в центнерах за каждый год по всем 6 фруктово-ягодным культурам
Dim cena(6, 5) As Single - закупочные цены каждой культура по всем 5 годам
Dim urozhay_ob(6) As Integer - Общий урожай по каждой культуре за 5 лет
Dim dohod_kultura(6) As Single - доход за все 5 лет по каждой культуре
Dim dohod_god(5) As Single - доход по всем культурам за каждый год
Dim dohod_obschiy As Single - общий доход колхоза за 5 лет
Dim Max As Single - максимум среди дохода за все 5 лет по каждой культуре в дальнейшем понадобится для нахождения наименование культуры принесшей максимальный доход за 5 лет
Dim index1 As Integer - переменная необходима для вывода на экран названия культуры принесшей максимальный доход за 5 лет
Dim Naimenovanie(6) As String - наименование культур для сортировки
Dim naim As String - переменная для упорядочивания наименования
Dim ur As Integer - переменная для упорядочивания общего урожая
Dim i, j As Integer - переменные счетчиков цикла
Прировняем общий доход колхоза за 5 лет нулю. Создаем цикл для всех видов культур что бы обнулить общий урожай. Затем создаем цикл на 5 лет, доход за каждый год обнуляем.
Создаем внешний цикл для 6 видов культур, затем создаем внутренний цикл для 5 лет, занесем данные с экрана в массив об урожае в центнерах за каждый год по всем 6 культурам, занесем данные с экрана в массив о закупочных ценах каждой культуры по всем 5 годам. Одновременно просуммируем общий урожай каждой культуры за 5 лет. Посчитаем доход за все 5 лет по каждой культуре. После вывода из внутреннего цикла выведем на экран в 12 столбец массив UROZHAY_OB. Выходим из внешнего цикла.
Создаем внешний цикл за 5 лет и внутренний для 6 видов культур. Считаем доход за каждый год. Выходим из внутреннего цикла. Выводим доход за каждый год. Доход за 5 лет рассчитываем и выводим его. Выходим из внешнего цикла.
Для расчета самой выгодной культуры назначим максимумом первый элемент массива. Создадим цикл из 6 культур. Если максимум меньше или равен текущему элементу массива, максимумом становится текущий элемент массива, запоминает в переменную index1 номер элемента массива, в котором содержится максимум. Выходим из цикла. Выводим значение самой выгодной культуры.
Очищаем ячейки общего урожая каждой культуры за 5 лет, доход по всем культурам за каждый год, общий доход колхоза за 5 лет и наименование культуры, принесшей максимальный доход за 5 лет.
Очищаем на 0 и 1 закупочные цены и урожаи за все года.
Создаем цикл из 6 культур. Заносим в массив наименование культур и общий урожай по каждой из культур. Покидаем цикл.
Создаем внешний цикл из 5 культур. Создаем внутренний и внешний цикл для сортировки культур по убыванию их урожайности. Если общий урожай одной культуры меньше общего урожая другой культуры то меняем их местами. Выходим из циклов.
Создаем цикл из 6 культур. Выводим наименование и их общего урожая в порядке их убывания.
Листинг программы
Sub kursovoe_zadanie 7()
Dim urozhay(6, 5) As Integer
'урожай в центнерах за каждый год по всем 6 фруктово-ягодным культурам
Dim cena(6, 5) As Single
'закупочные цены каждой культура по всем 5 годам
Dim urozhay_ob(6) As Integer
'Общий урожай по каждой культуре за 5 лет
Dim dohod_kultura(6) As Single
'доход за все 5 лет по каждой культуре
Dim dohod_god(5) As Single
'доход по всем культурам за каждый год
Dim dohod_obschiy As Single
'общий доход колхоза за 5 лет
Dim Max As Single
'максимум среди дохода за все 5 лет по каждой культуре
'в дальнейшем понадобится для нахождения наименование культуры
'принесшей максимальный доход за 5 лет
Dim index1 As Integer
'переменная необходима для вывода на экран названия культуры принесшей максимальный доход за 5 лет
Dim Naimenovanie(6) As String
'наименование культур для сортировки
Dim naim As String
'переменная для упорядочивания наименования
Dim ur As Integer
'переменная для упорядочивания общего урожая
Dim i, j As Integer
'переменные счетчиков цикла
dohod_obschiy = 0
For i = 1 To 6
urozhay_ob(i) = 0
Next i
For i = 1 To 5
dohod_god(i) = 0
Next i
For i = 1 To 6
'внешний цикл для 6 видов культур
For j = 1 To 5
'внутренний цикл для 5 лет
urozhay(i, j) = Cells(i + 3, j + 6)
'занесем данные с экрана в массив об урожае в центнерах за каждый год по всем 6 культурам
cena(i, j) = Cells(i + 3, j + 1)
'занесем данные с экрана в массив о закупочные цены каждой культуры по всем 5 годам
urozhay_ob(i) = urozhay_ob(i) + urozhay(i, j)
'одновременно просуммируем общий урожай каждой культуры за 5 лет
dohod_kultura(i) = dohod_kultura(i) + urozhay(i, j) * cena(i, j)
'доход за все 5 лет по каждой культуре
Next j
Cells(i + 3, 12) = urozhay_ob(i)
'после вывода из внутреннего цикла выведем на экран в 12 столбец массив UROZHAY_OB
Next i
For j = 1 To 5
' внешний цикл за 5 лет
For i = 1 To 6
'внутренний цикл для 6 видов культур
dohod_god(j) = dohod_god(j) + urozhay(i, j) * cena(i, j)
'считаем доход за каждый год
Next i
Cells(10, j + 6) = dohod_god(j)
'выводим доход за каждый год
dohod_obschiy = dohod_obschiy + dohod_god(j)
Cells(11, 12) = dohod_obschiy
Next j
Max = dohod_kultura(1)
'пусть максимумом будет первый элемент массива
For i = 1 To 6
'колисечество сравнивнений равно количеству элементов в массиве,
'на первом шаге сравниваем текущий элемент с самим собой
If Max <= dohod_kultura(i) Then
'тогда если максимум меньше или равно текущему элементу массива
Max = dohod_kultura(i)
'максимумом становится текущий элемент массива
index1 = i
'запоминает в переменную index1 номер элемента массива, в котором содержится максимум
End If
Next i
Cells(12, 12) = Cells(index1 + 3, 1)
'выводим значение самой выгодной культуры
End Sub
Sub ochistka()
Range("G10:K10").Value = " "
Range("L4:L9").Value = " "
Range("L11:L12").Value = " "
End Sub
Sub proverkaNa0()
Range("B4:K9").Value = "0"
End Sub
Sub proverkaNa1()
Range("B4:K9").Value = "1"
End Sub
Sub sortirovka()
For i = 1 To 6
Naimenovanie(i) = Cells(i + 3, 1)
urozhay_ob(i) = Cells(i + 3, 12)
Next i
For i = 1 To 5
For j = i + 1 To 6
If urozhay_ob(i) < urozhay_ob(j) Then
ur = urozhay_ob(i)
naim = Naimenovanie(i)
urozhay_ob(i) = urozhay_ob(j)
Naimenovanie(i) = Naimenovanie(j)
urozhay_ob(j) = ur
Naimenovanie(j) = naim
End If
Next j
Next i
For i = 1 To 6
Cells(i + 15, 1) = Naimenovanie(i)
Cells(i + 15, 2) = urozhay_ob(i)
Next i
End Sub
Sub zapolnit()
For j = 1 To 5
внешний цикл за 5 лет
For i = 1 To 6
'внутренний цикл для 6 видов культур
Cells(i + 3, j + 1) = 200
Next i
Next j
For j = 1 To 5
' внешний цикл за 5 лет
For i = 1 To 6
'внутренний цикл для 6 видов культур
Cells(i + 3, j + 6) = 20
Next i
Next j
End Sub
