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

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

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

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





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

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


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

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

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

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

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

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


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

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

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


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


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





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

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


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

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

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


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

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

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


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


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





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

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


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


Гость






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

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





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

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


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

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


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

Сообщение отредактировано: Deluxweb - 1.05.2005 14:10
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 1.05.2005 18:43
Сообщение #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 )
 К началу страницы 
+ Ответить 
Guest
сообщение 1.05.2005 22:05
Сообщение #9


Гость






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


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

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

 



- Текстовая версия 20.07.2025 7:11
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"