Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
467 / 431 / 117
Регистрация: 15.02.2012
Сообщений: 1,952

как написать правильно формулу для подсчета

18.03.2024, 15:06. Показов 390. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Понимаю что это чистая математика, но уже несколько часов сижу и сдвинутся с места не могу.

суть такая за каждые 3 товара из списка нужно посчитать сколько будет скидка если исходить что 3 за 2000 должно быть, при этом нужно учитывать что товар может быть 1, в количестве N, а может именно N разных позиций,


т.е.
имеем 1 товар за 1000 в количестве 3 штук
3*1000 -2000 = скидка должна будет быть 1000р

за 3, 4, 5 так и останется 1000

за 6 уже будет 2000

но берем 1 товар в количестве 2 штук по 1000 и 1 товар в количестве 1 штука за 2000
и тут скидка будет должна 2000

и т.д.

вот что-то никак не выходит составить правильно формулу
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.03.2024, 15:06
Ответы с готовыми решениями:

НЕ могу правильно написать код для подсчета суммы массива с условием
Не могу понять как правильно описать условие. Надо создать массив в динамической области памяти функции new. В одномерном массиве,...

Как правильно написать формулу?
Как записать вот такую формулу? Не очень понимаю степени косинусов и тангенсов.

Как правильно написать формулу
Как в матлабе написать формулу, где формула идет потом ставится многоточие и пишется уже конец формулы но с переменной n?

5
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,834
18.03.2024, 16:15
tgarl,
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class Calculator
{
    private $quantity;
    private $sum;
 
    public function __construct(
        $quantity = 3,
        $sum = 2000
    )
    {
        $this->quantity = $quantity;
        $this->sum = $sum;
    }
 
    public function calc(array $items): int
    {
        $discount = 0;
        $groupSum = 0;
        $groupCount = 0;
 
        // перебираем по 1 шт.
        foreach ($items as $item) {
            for ($i = 1; $i <= $item->getQuantity(); $i++) {
                $groupCount++;
                $groupSum += $item->getPrice();
 
                if ($groupCount >= $this->quantity) {
                    $discount += max(0,$groupSum - $this->sum);
                    $groupCount = 0;
                    $groupSum = 0;
                }
            }
        }
 
        return $discount;
    }
}
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
18.03.2024, 16:30
Я не понял условие на словах. Как понял, мы должны отдать скидку, исходя из пачек товара, где пачка это кол-во и стоимость пачки. И должны быть такие результаты
PHP
1
2
3
4
5
6
7
8
function discount(...$items): int
{
}
 
discount([3, 1000]) === 1000;
discount([5, 1000]) === 1000;
discount([6, 1000]) === 2000;
discount([2, 1000], [1, 2000]) === 2000;
Еще раз словами можно описать почему
2 * 1000 + 1 * 2000 это скидка в 2000?
0
467 / 431 / 117
Регистрация: 15.02.2012
Сообщений: 1,952
18.03.2024, 17:13  [ТС]
Цитата Сообщение от crautcher Посмотреть сообщение
Еще раз словами можно описать почему
2 * 1000 + 1 * 2000 это скидка в 2000?
потому что в этом случае будет
2*1000 + 1*2000 = 4000 за 3 товара
а у меня должно быть 2000 за 3 товра, значит в этом случае мне общую скидку нужно сделать 2000
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
18.03.2024, 17:40
Не очень тогда понятно в каком порядке считать. Вот 4 товара. В таком порядке они не дают 3 товара подряв 2000+
(1 * 1) + (1 * 2) + (1 * 2995) + (1 * 4000)
А в другом порядке дают
(1 * 4000) + (1 * 1) + (1 * 2) + (1 * 2995)
Разве формула расчета скидка должна зависеть от порядка?
0
467 / 431 / 117
Регистрация: 15.02.2012
Сообщений: 1,952
18.03.2024, 18:09  [ТС]
тут просто, товары я отсортирую по цене по возрастанию, но сумму для примера я взял из головы чтобы цифры красивые получались, а как раз мне и нужно посчитать какая сумма получится.

sad67man, где-то ошибка и когда товаров 6 выдает больше сумму на 2000

я наваял трындец как, но работает)

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//сначала создал новый массив где каждый товар 1 позиция в количестве 1 штуки, т.е. если у меня было 1 позиция в количестве 3 штук то теперь это будут три позиции по 1 штуке
//отсортировал по цене
array_multisort(array_map(function($row) {
    return $row['PRICE'];
}, $basket_1), SORT_ASC, $basket_1);    
 
//формируем количество троек
$total = floor($poschet / 3);
//устанавливаем лимиты
            $limS=2000*$total;
            $lim=3*$total;
//считаем сумму
            for ($i = 0; $i < $lim; $i++) {
                $poschetSum+=$basket_1[$i]['PRICE'];
            }
//если наша сумма больше лимита то разницу в скидку            
            if( intval($poschetSum)*1 > abs($limS)*1 ){
                $discount['VALUE']=( $poschetSum*1 - abs($limS)*1 );                
            }
//иначе неположена скидка так как сумма товаров меньше лимита и мы еще и доплатить должны
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.03.2024, 18:09
Помогаю со студенческими работами здесь

Как правильно написать формулу
Добрый день, мне нужно в делфи написать формулу: m=формуле прикрепленной на картинке. В Делфи я пишу: m:=(exp(((1+p)/4)*ln(D)))mod p; ...

Как правильно написать формулу в matlab
Как правильно записать формулу десперсии по распределению Вейбулла. Не совсем поняла с &quot;Г.&quot; Правила: 5.18. Запрещено...

Как правильно написать формулу в Excel
Как правильно написать формулу в excel. Суть ее в следующем: В ячейке выполняется формула =(C2-C1)+(D2-D1)-(E2-E1), если результат...

Как правильно написать формулу в Mathcad
Помогите правильно написать формулу в Mathcad A=B/8sin(c)*(1-(Da2/Dp2))

Как правильно написать эту формулу
Добрый вечер всем помогите мне пожалуйста написать эту формулу в матлаб Правила: 5.18. Запрещено размещать задания и решения в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru