Форум: "Начинающим";
Текущий архив: 2008.07.27;
Скачать: [xml.tar.bz2];
ВнизПарамерт функции Найти похожие ветки
← →
Anatoly Podgoretsky © (2008-06-26 10:28) [40]Вопрос более не актуален, теперь надо идти на форум prizyv.ru
← →
Kaer © (2008-06-26 10:36) [41]
> Anatoly Podgoretsky
у меня есть еще целый день, я же сказал чтобы она была готова, а не что она будет сдаваться :-)
← →
Kaer © (2008-06-26 10:37) [42]вот ближе к вечеру тему думаю можно закрыть
← →
Dennis I. Komarov © (2008-06-26 10:37) [43]> [38] Kaer © (26.06.08 09:43)
ССЗБ
← →
Kaer © (2008-06-26 10:38) [44]
> ССЗБ
а?
← →
Dennis I. Komarov © (2008-06-26 10:38) [45]Для начала попробуй описать, что ты хочешь от функции получить
ЗЫ
Код чей?
← →
Kaer © (2008-06-26 10:40) [46]код мой, мне нужен алгоритм который бы определял сколько нужно вложить денег в отрасль
← →
Dennis I. Komarov © (2008-06-26 10:40) [47]> [44] Kaer © (26.06.08 10:38)
Видишь у него голубые штаны? Должен присесть три раза и слелать "КЮ"
← →
Dennis I. Komarov © (2008-06-26 10:41) [48]> [46] Kaer © (26.06.08 10:40)
Функция не знает ни о отрослях, и тем более о деньгах... Попробуй еще раз
← →
Kaer © (2008-06-26 10:44) [49]
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
i,j: integer;
ar: array[1..4,0..4] of integer;
function Rus(mes: string):string;
var
t: integer;
begin
for t:=1 to length(mes) do
case mes[t] of
"A".."ï" : mes[t] := Chr(Ord(mes[t]) - 64);
"ð".."ÿ" : mes[t] := Chr(Ord(mes[t]) - 16);
end;
Rus := mes;
end;
function Maximum(const Items:array of integer; ItemIndex: 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;
var
i:integer;
Items:array of integer;
begin
if index=0 then exit;
SetLength(Items,count+1);
for i:=Low(Items) to High(Items) do
Items[i]:=ar[index,count-i]+W(index-1,i);
result:=Maximum(Items,count);
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]:=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;
for j:=1 to 4 do
begin
writeln;
for i:=0 to 4 do
begin
write("Max W");
write(j);
write("(");
write(i*100);
write(") = ");
writeln(w(j,i));
end;
end;
writeln;
for i:=4 downto 1 do
begin
write(Rus("Отрасль "));
write(i);
writeln(" = 100");
end;
writeln;
write(Rus("Äëÿ çàâåðøåíèÿ íàæìèòå "));
write("<Enter>...");
readln;
end.
выделено жирым то что тут не должно быть, программа должна сама определить сколько куда, на основе расчетов фун. W, как это сделать я не знаю, мне подсказывали дополнительный паремрт в функцию максимума добавить но я не пойму как это может мне помоч
← →
Dennis I. Komarov © (2008-06-26 10:52) [50]> [49] Kaer © (26.06.08 10:44)
Твой код - это плод только твоего больного воображения.
Если ты не хочешь помочь себе, то никто этого уже не сможет...
← →
Kaer © (2008-06-26 10:55) [51]
> Dennis I. Komarov
а почему больного? и вобщето я себе очень хочу помоч
← →
Kaer © (2008-06-26 11:03) [52]помоему меня тут не правильно поняли, я делаю это не для себя, это для моей подруги, просто она попросила о помощи в написании программы так как сама не может, я не стал бы брасться за это но ей больше не к кому обратиться. Если прогрумму лучше чем есть сделать не получится то, я конечно посоветуюсь с подругой, но думаю придется накатать туда какого нибудь бредового кода, чтобы позапутаней и надеятся что препод действительно ничего не знает, а не только делает вид
← →
Dennis I. Komarov © (2008-06-26 11:03) [53]> а почему больного?
Прочитай сначала ветку :) Здорового я ничего не нашел. Ну да ладно...
Приведу пример:
Функция возращающая значение большего и двух целых чисел:function Max(a, b: Integer): Integer;
begin
if a > b then Result:=a else Result:=b;
end;
← →
Dennis I. Komarov © (2008-06-26 11:05) [54]> [52] Kaer © (26.06.08 11:03)
:) Сполз под стул :))))))))))))
← →
Kaer © (2008-06-26 11:34) [55]
> Dennis I. Komarov
> Функция возращающая значение большего и двух целых чисел:
двух целых чисел или из двух?
← →
Dennis I. Komarov © (2008-06-26 11:35) [56]> [55] Kaer © (26.06.08 11:34)
из конечно. Вот теперь опиши так же свою
← →
Kaer © (2008-06-26 11:51) [57]боюсь если вы не знаете теории меж отраслевого баланса это будет трудно. Но я не боюсь трудностей :-)
Так, это функция расчета(меня в ней все устраивает:-))
function W(index,count: integer): integer;
var
i:integer;
Items:array of integer;
begin
if index=0 then exit;
SetLength(Items,count+1);
for i:=Low(Items) to High(Items) do
Items[i]:=ar[index,count-i]+W(index-1,i);
result:=Maximum(Items);
end;
это функция нахождения максимума(в ней меня тоже все устраивает:-))
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;
они делает вот что
W4(400) = max(q4(400) + W3(0); q4(300) + W3(100); q4(200) + W3(200); q4(100) + W3(300); q4(0) + W3(400)) = max(110 + 0; 95 + 50; 75 + 90; 60 + 120; 0 + 145) = 180.
W4(400) - в 4 отрасли вкладывается 400 уе. функция просчитывает оптимальное соотношение.
Жирыным виделено место, где максимальное число и которое вернется функцией макс - 180. Как видите отрасли 4 (q4) нужно вложить 100. а остальное распределить между 3 другими отраслями(w3(300)). Я не знаю как отследить то что именно в 4 отрсль вложется 100. а остальное уйдет дальшев другие отрасля.
Я не могу ивидель алгоритма как это можно осуществить. Может нужно написать новую функцию, или изменить старые?
← →
Dennis I. Komarov © (2008-06-26 11:58) [58]> [57] Kaer © (26.06.08 11:51)
Да не нужен мне твой баланс со своей теорией.
Вырази то что хочешь математически
← →
Kaer © (2008-06-26 12:02) [59]q4(100) мне надо отлавить вот это значение, всего таких значений будет 4(q1,q2,q3,q4)
← →
Kaer © (2008-06-26 12:03) [60]если бы я знал как это выразить математически я бы не стал спрашивать алгоритм :)
← →
clickmaker © (2008-06-26 12:06) [61]а как можно определить рентабельность отрасли, не зная, насколько быстро и прибыльно она будет окупаться?
тогда единственный вариант - тупо поделить 400 на 4
← →
Kaer © (2008-06-26 12:11) [62]
> 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:19) [63]> вопщето для этого есть таблица, вот она
а, ну да, ну да...
и в чем проблема? Найти максимальную суммы прибыли по всем четырем, имея граничное условие "сумма индексов не больше 4" ?
← →
Kaer © (2008-06-26 12:25) [64]
> clickmaker
максимальную сумму прибыли я нахожу = 180, я не нахожу в какие отрасли при этом скоко было вложено
← →
clickmaker © (2008-06-26 12:34) [65]> [64] Kaer © (26.06.08 12:25)
то есть? у тебя же индексы есть 1-4?
← →
Kaer © (2008-06-26 12:37) [66]индексы это номер отрасли, а не то скока в неё вложили
← →
Kaer © (2008-06-26 12:37) [67]мутная задача, да? :-)
← →
Галинка (2008-06-26 12:41) [68]задача нормальная. Алгорит мутный.
← →
clickmaker © (2008-06-26 12:41) [69]> [66] Kaer © (26.06.08 12:37)
> первый парамерт отрасль, второй количестов вложений в неё(1=100,
> 2=200 и тд)
это что?
← →
clickmaker © (2008-06-26 12:42) [70]ну то есть неправильно я выразился: не индекс, а "номер вложения"
← →
Slym © (2008-06-26 14:19) [71]
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.
← →
Slym © (2008-06-26 14:21) [72]Kaer © (26.06.08 11:03) [52]
это для моей подруги
с тебя хотябы ее ню фотка :)
← →
Anatoly Podgoretsky © (2008-06-26 14:26) [73]Это не мой мотороллер.
← →
Kaer © (2008-06-26 15:06) [74]Оно работает! Оно работает!!!
← →
Kaer © (2008-06-26 15:07) [75]
> Slym
Спасибо нашим поварам за то что вкусно варят нам!
← →
Игорь Шевченко © (2008-06-26 20:53) [76]
> помоему меня тут не правильно поняли, я делаю это не для
> себя, это для моей подруги, просто она попросила о помощи
> в написании программы так как сама не может
подруга не может, ты не можешь...Кузнеца пробовал пригласить ?
← →
Игорь Шевченко © (2008-06-26 20:54) [77]Slym © (26.06.08 14:19) [71]
А подруга-то не твоя нифига
← →
Anatoly Podgoretsky © (2008-06-26 21:31) [78]> Игорь Шевченко (26.06.2008 20:53:16) [76]
А нафига нам кузнец, не кузнец нам не нужен.
← →
Германн © (2008-06-26 21:35) [79]
> Anatoly Podgoretsky © (26.06.08 21:31) [78]
Тогда сантехника.
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.07.27;
Скачать: [xml.tar.bz2];
Память: 0.61 MB
Время: 0.01 c