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

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

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

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

08.05.2012, 11:06. Просмотров 933. Ответов 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++
Доброе время суток, помогите с задачкой пожалуйста!!! Пользователь вводит количество товара и стоимость единицы товара. Предложить...

Покупатель должен заплатить в кассу 5 руб. У него имеются купюры по 1, 5, 10, 50, 100, 500, 1000 и 10000 руб - C++
Покупатель должен заплатить в кассу 5 руб. У него имеются купюры по 1, 5, 10, 50, 100, 500, 1000 и 10000 руб. Сколько купюр разного...

Определить минимальную сумму которую придётся заплатить за трафик - C++
Здравствуйте! Объясните мне, пожалуйста, как надо решить данную задачу? Вот тз: В Москве начал работать новый оператор сотовой связи,...

Определить сколько должен заплатить каждый пассажир такси - C++
В такси одновременно сели три пассажира. Когда вышел первый пассажир, на счетчике было p1 рублей; когда вышел второй - p2 рублей. Сколько...

Указать наименьшую длину числовой оси, содержащую заданные числа - C++
C++ Дана последовательность числе a1,a2,...,an. Указать наименьшую длину числовой оси, содержащую все эти числа. Ps. Помогите...

Указать наименьшую длину числовой оси, содержащую заданные числа - C++
дана последовательность чисел а1,а2,...аn.указать наименьшую длину числовой оси, содержащую все эти числа.

Определить, какими пешками можно совершить ход, чтобы черный король не был под ударом ферзей - C++
Задана шахматная доска, содержащая черного короля, черные пешки и белых ферзей. Определить, какими пешками можно совершить ход, чтобы...

Можно ли сравнивать строковые литералы? как правильно это сделать? - C++
надо сравнить введенный строковый литерал с одним из доступных. int main() { setlocale(0,""); char const s =15; char...

как можно сделать это? если вообще возможно (не задача) - C++
есть задача, на двумерный массив... вывел массив 5х5 с рандомными числами, нужно найти числа локального минимума, т.е. чтоб число было...


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

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

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