Консультация # 196713: Уважаемые эксперты! Пожалуйста, ответьте на вопрос, помогите решить или дайте совет: Имеется каталог на 15 видов с/х машин, где указаны: номер, цена и название. Десять фермерских хозяйств составили приоритетные списки, где указаны по 5 названий машин, которые хотели бы приобрести. Зная количество денег для этих целей в каждом хозяйстве, надо напеча...
Уважаемые эксперты! Пожалуйста, ответьте на вопрос, помогите решить или дайте совет: Имеется каталог на 15 видов с/х машин, где указаны: номер, цена и название. Десять фермерских хозяйств составили приоритетные списки, где указаны по 5 названий машин, которые хотели бы приобрести. Зная количество денег для этих целей в каждом хозяйстве, надо напечатать список номеров машин, которых может приобрести каждое хозяйство (предположить, что хозяйство будет покупать по одной машине каждого типа). написать
нужно на паскале
const
k=5;
n=15;
m=10;
type
{}
tMas=array[1..k]of integer;
{описание сельхоз машин}
tVM=record{vilage mashin}
name:string;{название}
cost:integer;{стоимость}
indx:string;{индекс ???}
end;
{описание хозяйств}
tVA=record{vilage account}
name:string;{название}
summ:longint;{счет хозяйства}
want:tMas;{массив желаний}
end;
{генерация названий}
function gen(a:integer):string;
var
b:string;
begin
b:='';
while a>0 do
begin
b:=b+chr(ord('0')+random(10));
dec(a);
end;
gen:=b;
end;
{перебор вариантов}
function check(var a:tMas;b:integer):boolean;
var
c,d,e,f:integer;
begin
for c:=1 to k do a[c]:=0;
c:=0;
e:=1;
f:=1;
while(b>0)and(c<6)do
begin
d:=b and 1;
inc(c,d);
b:=b shr 1;
d:=d*e;
inc(e);
if(d in [1..n])and(f in [1..k])then
begin
a[f]:=d;
inc(f);
end;
end;
dec(f);
check:=(c=k)and(f=k);
end;
var
a:array[1..n]of tVM;
b:array[1..m]of tVA;
d:set of byte;
e:longint;
f,i,j:integer;
what:tMas;
begin
{ввод - генерация сельхоз машин}
for i:=1 to n do
begin{create vm}
write('name machine:');{readln(a[i].name)}a[i].name:='VM'+gen(6);write(a[i].name);
write('cost mashine:':15);{readln(a[i].cost)}a[i].cost:=6000+270*random(n);write(a[i].cost:6);
write('index mashine:':15);{readln(a[i].indx)}a[i].indx:='index:'+gen(8);writeln(a[i].indx);
end;{ /create vm}
writeln;
{ввод - генерация хозяйств}
for i:=1 to m do
begin{create VA}
write('name vilage:');{readln(b[i].name)}b[i].name:='vilage'+gen(4);writeln(b[i].name);
write('account vilage:');{readln(b[i].account)}b[i].summ:=39000+250*random(n);writeln(b[i].summ);
d:=[];
for j:=1 to k do
begin
repeat
e:=random(n)+1
until not (e in d);
d:=d+[e];
b[i].want[j]:=e;
end;
{вывод желаемого}
write('want:');
for j:=1 to k do
begin
write(a[b[i].want[j]].name:12);
e:=e+a[b[i].want[j]].cost;
end;
writeln;
if(e<=b[i].summ)and(e>0) then writeln(true){желаемое получилось}
else
begin{find variants}
writeln('find variants:');{начинаем поиск вариантов}
for j:=1 to 32000 do
begin
if check(what,j)then
begin
e:=0;
for f:=1 to k do e:=e+a[what[f]].cost;
if e<=b[i].summ then
begin
write('variant:');
for f:=1 to k do write(a[what[f]].name:9);{вывод варианта}
writeln('summa:=':8,e);
{ break;{если убрать коммент, будет выводить только один вариант}
end;
end;
end;
end;{/find variants}
writeln;
end;{/create VA}
end.
name machine:VM008226 cost mashine: 7080 index mashine:index:13404080 name machine:VM293736 cost mashine: 9240 index mashine:index:73134282 name machine:VM418279 cost mashine: 7890 index mashine:index:88011505 name machine:VM076775 cost mashine: 6810 index mashine:index:65969262 name
machine:VM074855 cost mashine: 9780 index mashine:index:63079771 name machine:VM197586 cost mashine: 7080 index mashine:index:06281259 name machine:VM112154 cost mashine: 7080 index mashine:index:16770001 name machine:VM783647 cost mashine: 7890 index mashine:index:38810001 name machine:VM625238 cost mashine: 7080 index mashine:index:36693427 name machine:VM757455 cost mashine: 9510 index mashine:index:61441056 name machine:VM098692 cost mashine: 8
700 index mashine:index:74612931 name machine:VM930185 cost mashine: 8700 index mashine:index:16039534 name machine:VM933408 cost mashine: 8970 index mashine:index:19418428 name machine:VM516953 cost mashine: 7620 index mashine:index:21696650 name machine:VM712874 cost mashine: 9780 index mashine:index:10103330
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались.
Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора -
для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение.
Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал,
который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом.
Заходите - у нас интересно!