Всем привет! Помогите пожалуйста написать программу для решения задачи в Excel. Сама задача и ход ее решения прописан ниже. Заранее признателен.
Исходные данные: 5 поставщиков (A, B, C, D, E) которые предлагают разный объем товара по разной цене. Нужно обеспечить покрытие спроса (Спрос = 65 единиц) по минимальной цене. Дополнительное условие: все поставщики продадут свой товар по единой цене, которая будет равна цене того поставщика предложение которого станет "замыкающим" при покрытии спроса.
1. Сортируем поставщиков по заявленной цене от меньшей к большей
2. Находим такой набор поставщиков, который будет покрывать спрос (65 единиц) C = 30 < 65 - условие не выполнено C+A = 30+20 = 50 < 65 - условие не выполнено C+A+D = 30+20+15 = 65 = 65 - условие выполнено
3. Выводим данные поставщиков которые "сыграли" в новую таблицу и находим "замыкающее" предложение
4. Рассчитываем выручку каждого поставщика, с учетом того, что "замыкаюшим" стал поставщик "D" с заявленной ценой 3 за единицу товара.
Пока что, моей фантазии хватило на такое: [vba]
Код
Sub bubble_1()
Dim arrName(5, 1) As String 'задаю массив 5х1 с названиями поставщиков Dim arrBubble(5, 2) As Long 'задаю массив с числовыми значениями
For i = 1 To 5 arrName(i, 1) = Worksheets("Лист1").Cells(i + 1, 1).Value 'заношу название поставщиков в массив arrName arrBubble(i, 1) = Worksheets("Лист1").Cells(i + 1, 2).Value 'заношу заявленные цены в массив arrBubble arrBubble(i, 2) = Worksheets("Лист1").Cells(i + 1, 3).Value 'заношу объемы товара в массив arrBubble Next i
For j = 1 To 5 For i = 1 To 5 If arrBubble(i, 2) > arrBubble(i + 1, 2) Then 'Сортировка пузырьком по цене temp1 = arrBubble(i, 1) 'Сортирую цены temp2 = arrBubble(i, 2) 'Сортирую объемы temp3 = arrName(i, 1) 'паралельно сортирую значения в массиве с названием arrBubble(i, 1) = arrBubble(i + 1, 1) arrBubble(i, 2) = arrBubble(i + 1, 2) arrName(i, 1) = arrName(i + 1, 1) arrBubble(i + 1, 1) = temp1 arrBubble(i + 1, 2) = temp2 arrName(i + 1, 1) = temp3 End If Next i Next j
For i = 1 To 5 Worksheets("Лист2").Cells(i + 1, 1).Value = arrName(i, 1) 'вывожу на новы лист отсортированные названия Worksheets("Лист2").Cells(i + 1, 2).Value = arrBubble(i, 1) 'вывожу на новы лист отсортированные цены Worksheets("Лист2").Cells(i + 1, 3).Value = arrBubble(i, 2) 'вывожу на новы лист отсортированные объемы Next i
End Sub
[/vba] [moder]А файл-то где Ваш?
Всем привет! Помогите пожалуйста написать программу для решения задачи в Excel. Сама задача и ход ее решения прописан ниже. Заранее признателен.
Исходные данные: 5 поставщиков (A, B, C, D, E) которые предлагают разный объем товара по разной цене. Нужно обеспечить покрытие спроса (Спрос = 65 единиц) по минимальной цене. Дополнительное условие: все поставщики продадут свой товар по единой цене, которая будет равна цене того поставщика предложение которого станет "замыкающим" при покрытии спроса.
1. Сортируем поставщиков по заявленной цене от меньшей к большей
2. Находим такой набор поставщиков, который будет покрывать спрос (65 единиц) C = 30 < 65 - условие не выполнено C+A = 30+20 = 50 < 65 - условие не выполнено C+A+D = 30+20+15 = 65 = 65 - условие выполнено
3. Выводим данные поставщиков которые "сыграли" в новую таблицу и находим "замыкающее" предложение
4. Рассчитываем выручку каждого поставщика, с учетом того, что "замыкаюшим" стал поставщик "D" с заявленной ценой 3 за единицу товара.
Пока что, моей фантазии хватило на такое: [vba]
Код
Sub bubble_1()
Dim arrName(5, 1) As String 'задаю массив 5х1 с названиями поставщиков Dim arrBubble(5, 2) As Long 'задаю массив с числовыми значениями
For i = 1 To 5 arrName(i, 1) = Worksheets("Лист1").Cells(i + 1, 1).Value 'заношу название поставщиков в массив arrName arrBubble(i, 1) = Worksheets("Лист1").Cells(i + 1, 2).Value 'заношу заявленные цены в массив arrBubble arrBubble(i, 2) = Worksheets("Лист1").Cells(i + 1, 3).Value 'заношу объемы товара в массив arrBubble Next i
For j = 1 To 5 For i = 1 To 5 If arrBubble(i, 2) > arrBubble(i + 1, 2) Then 'Сортировка пузырьком по цене temp1 = arrBubble(i, 1) 'Сортирую цены temp2 = arrBubble(i, 2) 'Сортирую объемы temp3 = arrName(i, 1) 'паралельно сортирую значения в массиве с названием arrBubble(i, 1) = arrBubble(i + 1, 1) arrBubble(i, 2) = arrBubble(i + 1, 2) arrName(i, 1) = arrName(i + 1, 1) arrBubble(i + 1, 1) = temp1 arrBubble(i + 1, 2) = temp2 arrName(i + 1, 1) = temp3 End If Next i Next j
For i = 1 To 5 Worksheets("Лист2").Cells(i + 1, 1).Value = arrName(i, 1) 'вывожу на новы лист отсортированные названия Worksheets("Лист2").Cells(i + 1, 2).Value = arrBubble(i, 1) 'вывожу на новы лист отсортированные цены Worksheets("Лист2").Cells(i + 1, 3).Value = arrBubble(i, 2) 'вывожу на новы лист отсортированные объемы Next i