Сделать логику по заданному условию

Автор Mihak, 29 октября 2012, 13:17

0 Пользователи и 1 гость просматривают эту тему.

Mihak

Здравствуйте!

Помогите с реализацией логики.

См. приложенный файл:
есть ряд чисел "значения Xj", которые рассматриваются на предмет выполнения условия "не меньше 21,4".
если Xj не удовлетворяет этому условию, то программа прибавляет Хj к предыдущему Х-у (в моём случае это более ближнее назначение). Так например происходит с Х3, оно прибавляется к Х2.

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

В итоге данные должны быть готовы для выполнения следующего шага расчёта.

В приложенном файле сделал для пробы подсчёт с функцией "ЕСЛИ" - получается плохо.

Спасибо!

[вложение удалено Администратором]

Hasim

Честно говоря, я не понял ничего в вашем описании этой логики.
Какие из Xjk заданы, а какие вычисляются?
У вас в файле двухиндексные значения (Xjk), а вы говорите только об одноиндексных.
Распишите подробно по таблице из вашего файла все нужные действия.

Mihak

Простите, перемудрил.

Файл подправил: на 1 листе исходные данные, на 2-ом - моя попытка что-то сделать.

Исходные Xj - число поездов по каждому из назначений.
Проверка условия "не меньше 21,4" должна выполнятся для каждого Хj
Однако по условиям задачи есть возможность "обрезать" назначения до более ближних. Так например назначение Астрахань укоротить до Волгограда. Тогда до Волгограда уже будет не Х2, а Х2+Х3 = 13,9 поездов.
Это новое значение тоже должно быть "не меньше 21,4", так как это условие не выполняется, то пробуем "обрезать" дальше.
Вцелом в задаче не везде можно так "обрезать", это должно быть задано вручную.

В итоге данные должны быть готовы для выполнения следующего шага расчёта.

[вложение удалено Администратором]

VlhOwn

А если Саратов 10, Волгоград 30, Астрахань 30?

Mihak

Тогда Саратов должен быть либо "обрезан" до другого более близкого пункта, либо отброшен. Более сложные варианты при текущих данных и условиях задачи не рассматриваю. То есть, вектор "дальше" направлен слева на право и обратно не поворачивает.

Smaigas

#5
Ааа... ну так оно и конечно, но если случись коли что, так оно тебе и пожалуйста...