IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Задача на записи., Все возможные варианты покупки
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 4
Пол: Мужской

Репутация: -  0  +


Задача такая:
Дана запись со структурой (скажем с файла F1)
Товар
Цена
Количество
С клавиатуры вводится сумма денег S, что есть у покупателя

надо вывести в файл F2 все возможные полностью или частично удовлетворяющие варианты в границах суммы S

может кто сталкивался или видел что-то похожее...

задача с рюкзаками похожа чем то, но мне не додуматься, как ее довести до этой задачи с товаром...

Помогите чем можете, буду очень признателен.

Сообщение отредактировано: Deluxweb -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Пользуйся поиском, очень много похожих задач решено, может и свою найдешь.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 4
Пол: Мужской

Репутация: -  0  +


Цитата(klem4 @ 1.05.05 11:39)
Пользуйся поиском, очень много похожих задач решено, может и свою найдешь.

Поиск это хорошо,
только какое ключевое слово туда вводить я пытался разные варианты но что-то ничего не нашлось

Сообщение отредактировано: Deluxweb -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


http://forum.pascal.net.ru/index.php?act=S...%E0%EF%E8%F1%FC


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





Группа: Пользователи
Сообщений: 4
Пол: Мужской

Репутация: -  0  +


Либо я слеп, либо я туп, но в упор ничего не нашел, что мне более менее помогло бы
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Deluxweb, что-то в задании настораживает... В частности - вот это:
Цитата(Deluxweb @ 1.05.05 12:14)
надо вывести в файл F2 все возможные полностью или частично удовлетворяющие варианты в границах суммы S

Что значит "частично удовлетворяющий вариант"? Насколько я понимаю, "полностью удовлетворяющим вариантом" можно считать тот, при котором сумма денег S больше чем общая стоимость выбранного товара. Объясните мне в таком случае, что значит "частично"...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7





Группа: Пользователи
Сообщений: 4
Пол: Мужской

Репутация: -  0  +


Цитата(volvo @ 1.05.05 13:00)
Deluxweb, что-то в задании настораживает... В частности - вот это:

Что значит "частично удовлетворяющий вариант"? Насколько я понимаю, "полностью удовлетворяющим вариантом" можно считать тот, при котором сумма денег S больше чем общая стоимость выбранного товара. Объясните мне в таком случае, что значит "частично"...


Согласен кривовато звучит...
Полностью это имелось в виду товар купленный ровно на сумму S а частично - на сумму меньше чем сумма S
но так как там стоит ИЛИ все сводиться к тому чтобы найти все варианты при которых цена покупки ровна или меньше суммы S

Сообщение отредактировано: Deluxweb -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Цитата(Deluxweb @ 1.05.05 14:10)
Согласен кривовато звучит...
Полностью это имелось в виду товар купленный ровно на сумму S а частично - на сумму меньше чем сумма S
но так как там стоит ИЛИ все сводиться к тому чтобы найти все варианты при которых цена покупки ровна или меньше суммы S


Тогда вот так (только учти, что это - совершенно неоптимизировано, и при бОльших значениях будет выполняться ОЧЕНЬ долго):

const
n = 5;
s: longint = 150; { сумма на руках у пользователя }
type
arrType = array[1 .. n] of integer;
const
{ исходные значения }
count: arrType = (1, 1, 3, 7, 8);
price: arrType = (8, 3, 5, 6, 9);

var
found, total: longint;

{ подсчет суммы, необходимой в каждый момент }
function get_sum: longint;
var
s: longint;
i: integer;
begin
s := 0;
for i := 1 to n do
s := s + count[i] * price[i];
get_sum := s;
inc(total);
end;

{ здесь будет вывод в файл }
procedure print;
var i: integer;
begin
for i := 1 to n do
{ P - номер товара, A - его количество }
write('p:', i:2, ' a:', count[i]:3, '':2);
writeln;
inc(found);
end;

{ а вот и "сердце" программы }
procedure main(k: integer);
var
i, T: integer;
begin
if k = n then begin
T := count[k];
for i := T downto 0 do begin
count[k] := i;
if get_sum <= s then print;
end;
count[k] := T;
end
else begin
T := count[k];
for i := T downto 0 do begin
count[k] := i; main(k + 1)
end;
count[k] := T
end
end;

begin
found := 0; total := 0;
main(1);

{ это для статистики (сколько перебрали, и сколько подошло) }
writeln('found/total = ', found, '/', total, '=', found/total:10:5);
end.


Просто напросто тебе придется читать файл с данными, и записывать в массив count количества товаров, в массив price их цены, и присваивать количество переменной N, алгоритм будет работать (но очень долго smile.gif )
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Цитата(volvo @ 1.05.05 18:43)
Тогда вот так (только учти, что это - совершенно неоптимизировано, и при бОльших значениях будет выполняться ОЧЕНЬ долго):


Большоое спасибо... буду разбираться
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 15.05.2024 6:43
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name