![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Парамерт функции
Kaer © (2008-06-20 22:36:00)Имеется 2 вот такие функции
function Maximum(const Items:array of integer):integer;
var j:integer;
begin
if length(Items) = 0 then exit;
result:=Low(Items);
for j:=Low(Items) to High(Items) do
if result<Items[j] then result:=Items[j];
end;
function W(index,count: integer): integer;
begin
if index=0 then exit;
case count of
0: w:=Maximum([ar[index,count]+w(index-1,count)]);
1: w:=Maximum([ar[index,count]+w(index-1,count-1),ar[index,count-1]+w(index-1,count)]);
2: w:=Maximum([ar[index,count]+w(index-1,count-2),ar[index,count-1]+w(index-1,count-1),ar[index,count-2]+w(index-1,count)]);
3: w:=Maximum([ar[index,count]+w(index-1,count-3),ar[index,count-1]+w(index-1,count-2),ar[index,count-2]+w(index-1,count-1),ar[index,count-3]+w(index-1,count)]);
4: w:=Maximum([ar[index,count]+w(index-1,count-4),ar[index,count-1]+w(index-1,count-3),ar[index,count-2]+w(index-1,count-2),ar[index,count-3]+w(index-1,count-1),ar[index,count-4]+w(index-1,count)]);
end;
end;
В функции Максимум находится большее число, мне так и надо, но вот как сделать так чтобы я мог определить не только значение этого числа, а еще сам параметр который его определяет?
например строка
2: w:=Maximum([ar[index,count]+w(index-1,count-2), ar[index,count-1]+w(index-1,count-1),ar[index,count-2]+w(index-1,count)]);
допустим жирным выделино максимально значение, как узнать что это не допустим 150, а значения index и count?
Германн (2008-06-26 21:35:00) [1]
> Anatoly Podgoretsky © (26.06.08 21:31) [78]
Тогда сантехника.
Anatoly Podgoretsky (2008-06-26 21:31:00) [2]> Игорь Шевченко (26.06.2008 20:53:16) [76]
А нафига нам кузнец, не кузнец нам не нужен.
Игорь Шевченко (2008-06-26 20:54:00) [3]Slym © (26.06.08 14:19) [71]
А подруга-то не твоя нифига
Игорь Шевченко (2008-06-26 20:53:00) [4]
> помоему меня тут не правильно поняли, я делаю это не для
> себя, это для моей подруги, просто она попросила о помощи
> в написании программы так как сама не может
подруга не может, ты не можешь...Кузнеца пробовал пригласить ?
Kaer (2008-06-26 15:07:00) [5]
> Slym
Спасибо нашим поварам за то что вкусно варят нам!
Kaer (2008-06-26 15:06:00) [6]Оно работает! Оно работает!!!
Anatoly Podgoretsky (2008-06-26 14:26:00) [7]Это не мой мотороллер.
Slym (2008-06-26 14:21:00) [8]Kaer © (26.06.08 11:03) [52]
это для моей подруги
с тебя хотябы ее ню фотка :)
Slym (2008-06-26 14:19:00) [9]
program Project1;
{$APPTYPE CONSOLE}
uses Windows;
var ar: array[1..4,0..4] of integer; //Таблица
function Rus(const Str:string):string;
begin
SetLength(result,Length(Str));
CharToOEM(PChar(Str),PChar(result));
end;
//Функция возвращающая максимум из входных параметров
function Maximum(const Items:array of integer):integer;
var i:integer;
begin
if length(Items) = 0 then exit;
result:=Low(Items);
for i:=Low(Items) to High(Items) do
if Items[result]<Items[i] then result:=i;
end;
function W(index,count:integer;out choise:integer): integer;
var
i:integer;
Items:array of integer;
begin
result:=0;
if index=0 then exit;
SetLength(Items,count+1);
for i:=Low(Items) to High(Items) do
Items[i]:=ar[index,i]+W(index-1,count-i,choise);
choise:=Maximum(Items);
result:=Items[choise];
end;
procedure SupaPupaW;
var i,s,c,Gt:integer;
begin
s:=4;Gt:=0;
for i:=4 downto 1 do
begin
W(i,s,c);
Gt:=Gt+ar[i,c];
writeln(Rus('Отрасль '),i, '=',c*100);
s:=s-c;
end;
writeln(Rus('Итого '),Gt);
end;
begin
writeln(Rus('Задача о вложении средств'));
//Присвоение массиву значений таблицы
ar[1,0]:=0; ar[2,0]:=0; ar[3,0]:=0; ar[4,0]:=0;
ar[1,1]:=40; ar[2,1]:=50; ar[3,1]:=30; ar[4,1]:=10;//ar[4,1]:=60;
ar[1,2]:=50; ar[2,2]:=70; ar[3,2]:=55; ar[4,2]:=75;
ar[1,3]:=65; ar[2,3]:=85; ar[3,3]:=70; ar[4,3]:=95;
ar[1,4]:=75; ar[2,4]:=95; ar[3,4]:=95; ar[4,4]:=110;
SupaPupaW;
write(Rus('Для завершения нажмите '));
write('<Enter>...');
readln;
end.
clickmaker (2008-06-26 12:42:00) [10]ну то есть неправильно я выразился: не индекс, а "номер вложения"
Галинка (2008-06-26 12:41:00) [11]задача нормальная. Алгорит мутный.
clickmaker (2008-06-26 12:41:00) [12]> [66] Kaer © (26.06.08 12:37)
> первый парамерт отрасль, второй количестов вложений в неё(1=100,
> 2=200 и тд)
это что?
Kaer (2008-06-26 12:37:00) [13]индексы это номер отрасли, а не то скока в неё вложили
Kaer (2008-06-26 12:37:00) [14]мутная задача, да? :-)
clickmaker (2008-06-26 12:34:00) [15]> [64] Kaer © (26.06.08 12:25)
то есть? у тебя же индексы есть 1-4?
Kaer (2008-06-26 12:25:00) [16]
> clickmaker
максимальную сумму прибыли я нахожу = 180, я не нахожу в какие отрасли при этом скоко было вложено
clickmaker (2008-06-26 12:19:00) [17]> вопщето для этого есть таблица, вот она
а, ну да, ну да...
и в чем проблема? Найти максимальную суммы прибыли по всем четырем, имея граничное условие "сумма индексов не больше 4" ?
Kaer (2008-06-26 12:11:00) [18]
> clickmaker
вопщето для этого есть таблица, вот она
ar[1,0]:=0; ar[2,0]:=0; ar[3,0]:=0; ar[4,0]:=0;
ar[1,1]:=40; ar[2,1]:=50; ar[3,1]:=30; ar[4,1]:=60;
ar[1,2]:=50; ar[2,2]:=70; ar[3,2]:=55; ar[4,2]:=75;
ar[1,3]:=65; ar[2,3]:=85; ar[3,3]:=70; ar[4,3]:=95;
ar[1,4]:=75; ar[2,4]:=95; ar[3,4]:=95; ar[4,4]:=110;
первый парамерт отрасль, второй количестов вложений в неё(1=100, 2=200 и тд)
clickmaker (2008-06-26 12:06:00) [19]а как можно определить рентабельность отрасли, не зная, насколько быстро и прибыльно она будет окупаться?
тогда единственный вариант - тупо поделить 400 на 4
Kaer (2008-06-26 12:03:00) [20]если бы я знал как это выразить математически я бы не стал спрашивать алгоритм :)