Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
vladius
1 / 1 / 0
Регистрация: 04.05.2012
Сообщений: 26
#1

Вычислить наименьшую цену, которую покупатель должен заплатить за заданные покупки, и определить, какими скидками это можно сделать. - C++

08.05.2012, 11:06. Просмотров 913. Ответов 0
Метки нет (Все метки)

Здравствуйте, Я студент 1-ого курса, нужна помощь с написание кода к этой задаче на С++

Торговые скидки
(время на тест 1 секунда)

Условие

В магазине каждый товар имеет цену. Например, цена одного цветка равна 2$, а цена одной вазы равна 5$. Чтобы привлечь покупателей, магазин ввел скидки. Скидка заключается в том, чтобы продавать набор одинаковых или разных товаров по пониженной цене. Примеры: три цветка за 5$ вместо 6$, или две вазы вместе с одним цветком за 10$ вместо 12$.

Необходимо вычислить наименьшую цену, которую покупатель должен заплатить за заданные покупки, и определить, какими скидками это можно сделать. Оптимальное решение должно быть получено посредством скидок. Набор товаров, который требуется купить, нельзя дополнять ничем, даже если бы это снизило общую стоимость набора. Для описанных выше цен и скидок наименьшая цена за три цветка и две вазы равна 14$: две вазы и один цветок продаются по сниженной цене за 10$ и два цветка — по обычной цене за 4$.

Входные данные задачи — целые числа, которые содержаться в двух файлах: input.txt и offer.txt.

Файл input.txt описывает покупки (“корзину с покупками”).

Первая строка файла содержит количество b (0 ≤ b ≤ 5) различных видов товара в корзине.

Каждая из следующих b строк содержит значения x, k и p:

x — уникальный код товара (1 ≤ x ≤ 999);
k — количество единиц товара c кодом x, которое должно находится в корзине (1 ≤ k ≤ 5);
p — стоимость единицы товара с кодом x (1 ≤ p ≤ 9999).
Обратите внимание, что общее количество товаров в корзине может быть не более 5 • 5 = 25 единиц.

Второй файл offer.txt описывает скидки. Первая строка файла содержит количество s возможных скидок (0 ≤ s ≤ 99). Каждая из следующих s строк описывает одну скидку, определяя набор товаров и общую стоимость набора. Первое число n в такой строке определяет количество различных видов товара в наборе (1 ≤ n ≤ 5). Следующие n пар чисел (x, k) указывают, что k единиц товара с кодом x включены в набор для скидки (1 ≤ k ≤ 5, 1 ≤ x ≤ 999). Последнее число p в строке определяет уцененную стоимость набора (1 ≤ p ≤ 9999). Стоимость набора меньше суммарной стоимости отдельных единиц товаров в наборе.

Выходной файл: output.txt должен иметь следующую структуру. Первая строка файла содержит наименьшую стоимость, за которую можно приобрести требуемое количество товаров в квадратных скобках.

Пример входных данных
Имеются товары:
input.txt
2
7 3 2
8 2 5
Пояснения:

3 единицы товара с кодом 7 по цене 2$ за единицу;
2 единицы товара с кодом 8 по цене 5$ за единицу.
Имеются скидки:
offer.txt
2
1 7 3 5
7 1 8 2 10
Пояснения:

набор из товара с кодом 7 состоит из 3 ед. этого товара и стоит 5$;
набор из двух товаров кодами 7 и 8 состоит из 1 ед. товара 7 и 2 ед. товара 8 и стоит 10$.
Пример выходных данных
[14]

Пояснения:
За столько можно купить 3 единицы товара 7 и 2 единицы товара 8.


Обязательно должны быть выпосленны все условия и написано int main{.....return0}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2012, 11:06     Вычислить наименьшую цену, которую покупатель должен заплатить за заданные покупки, и определить, какими скидками это можно сделать.
Посмотрите здесь:

C++ как можно сделать это? если вообще возможно (не задача)
Указать наименьшую длину числовой оси, содержащую заданные числа C++
Структуры: зачем мы выделяем память сами, когда это можно сделать автоматически? C++
Выяснить можно ли с поля (k,l) одним ходом ферьзя попасть на поле(m,n). Если нет, то выяснить, как это можно сделать за два хода C++
C++ Найти, сколько должен заплатить в кассу покупатель с учетом скидок
C++ Определить, какими пешками можно совершить ход, чтобы черный король не был под ударом ферзей
Покупатель должен заплатить в кассу 5 руб. У него имеются купюры по 1, 5, 10, 50, 100, 500, 1000 и 10000 руб C++
Можно ли сравнивать строковые литералы? как правильно это сделать? C++
Указать наименьшую длину числовой оси, содержащую заданные числа C++
Определить минимальную сумму которую придётся заплатить за трафик C++
C++ Напишите программу, которая выводит цену яблок, начиная с 100 г до 1 кг с шагом 100 г. Цена 1 кг должен быть в
C++ Расчет суммы, которую пользователь должен заплатить с учётом скидки

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 03:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru