Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Список продукции

23K
18 ноября 2011 года
rafaelkyrdan
123 / / 03.05.2011
ProductCode Price
------------ -----
A | $1.25 each or 3 for $3.00
B | $4.25
C | $1.00 or $5 for a six pack
D | $0.75

Как видно из таблицы цена продукта может меняться взависимости от количества. Вопрос как эту таблицу превратить в ассоцитивный массив где ключ-код продукции а значение-цена?

Если это не возможно подскажите свой вариант. Пойму на пхп, джаве или просто на словах.
244
18 ноября 2011 года
UAS
2.0K / / 19.07.2006
Это из текста надо или просто захардкодить?
Тут обычным ассоциативным массивом не сделать, как минимум значение должно ссылаться на функцию.
23K
18 ноября 2011 года
rafaelkyrdan
123 / / 03.05.2011
Мне надо иметь возможность устанавливать просто цену для продукции и цену для определенного количества.

Что означает значение должно ссылаться на фукцию?

Как один из вариантов может надо создать обьект Продукт который будет включать в себя (композит) обьект Скидка и тогда остаеться вопрос кто будет считать цену покупки сам обьект Продукт или приложение, тогда как оно получит инфо о скидке?
Вобщем подскажите направление движения?
244
18 ноября 2011 года
UAS
2.0K / / 19.07.2006
Я просто не могу понять что надо. Как я понял, вам надо иметь массив, где ключ - это ID продукта, а значение - это цена. При этом цена варьируется от количества штук, т.е. существует зависимость от количества товара. Поэтому здесь хоть как необходимо ввести функцию.
А решение проблемы зависит от общей задачи. Потому что если данные хранятся в БД, то один подход будет, если товаров несколько и решение хотите хранить в массиве, то другие варианты решения существуют.

Вот пример, где все значения - анонимные функции. PHP 5.3. Должно быть так, код не проверял.
 
Код:
$products = array(
    "A" => function($x) { return ((int)$x/3)*3.00 + ($x%3)*1.25 },
    "B" => function($x) { return 4.25; },
    ....
);

var_dump($products["A"](5));

Естественно, можно всё это обобщить и упростить, обернуть в классы. Всё зависит от общей задачи.
23K
18 ноября 2011 года
rafaelkyrdan
123 / / 03.05.2011
Спасибо за предложенное решение теперь я понял что такое значение ссылаеться на функцию.+1

Вопрос как создавать динамично такую функцию.То есть запустили приложение, с консоли установили цены и потом ввели продукцию и количество и получили сумму за заказ. Про ассоциативные массивы это то что пришло в голову первое, наверно не самое лучшее.В базе хранить ни чего не надо.Если есть идея не с пхп а на джаве через коллекции я тоже пойму, или какой либо другой способ.Тоесть каждый раз при запуске вводим цену и скидку за количество.
244
18 ноября 2011 года
UAS
2.0K / / 19.07.2006
А зачем с консоли? Не легче для таких задач использовать нормальные языки?

По сути - задача от этого не меняется. Ввели в консоль значения, все храните в массиве. Динамически я показал как создавать.
23K
18 ноября 2011 года
rafaelkyrdan
123 / / 03.05.2011
джава нормальный для такой задачи?
Динамично мне надо скидку формировать тоесть каждый раз новую цену и количество.


 
Код:
terminal.setPricing(...);
terminal.scan("A");
terminal.scan("C");
... etc.
BigDecimal result = terminal.calculateTotal();
244
18 ноября 2011 года
UAS
2.0K / / 19.07.2006
Ну, яву я люблю. Вот примерные наброски

Код:
class Product {
    String mTitle; // название
    double mPricePerOne; // цена за единицу товара

    // скидки
    int mPackSize; // размер пачки, для которой дают скидку (например, для 3 штук)
    double mPricePerPack; // цена за пачку

    public Product(String title, String price_per_one) {
        mTitle = title;
        mPricePerOne = price_per_one;
        mPackSize = 0;
        mPricePerPack = 0.0;
    }

    public void setDiscount(int pack_size, double price_per_pack) {
        mPackSize = pack_size;
        mPricePerPack = price_per_pack;
    }


    /**
     * Расчитать цену для количества товаров count
     */

    public double calculate(int count) {
       if( mPackSize == 0 ) {
           return count*mPricePerOne;
       } else {
            return( mPricePerPack*count/mPackSize + (count%mPackSize)*mPricePerOne  );
       }
    }

    // ... далее здесь различные get/set
}


public static void main(String[] args) {
    List<Product> products = new ArrayList<Product>();

    while( <ввод товара> ) {
        Product p = new Product(<название>,<цена>);
        // если надо, вызываешь p.setDiscount(.., ..);
        products.add(p);
    }


    // выбор товара для покупки
    // подсчет общей стоимости, формирование "чека"
}
Вот в общих чертах.
23K
18 ноября 2011 года
rafaelkyrdan
123 / / 03.05.2011
Спасибо!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог