Форум: "Начинающим";
Текущий архив: 2006.06.18;
Скачать: [xml.tar.bz2];
ВнизПочему несчитается Раннее начало в программе Найти похожие ветки
← →
kashmar (2006-05-30 08:55) [0]unit Unit1;
//unit UGraphic;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, Menus, Unit2, StdCtrls, DB, DBTables, XPMan, ComCtrls;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
MainMenu1: TMainMenu;
N11: TMenuItem;
N21: TMenuItem;
Button1: TButton;
N1: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
procedure FormCreate(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.ColWidths[9]:=200;
StringGrid1.Cells[0,0]:="Êîëè÷åñòâ& #238; ïðåäøåñòâóþùè&# 245; ðàáîò";
StringGrid1.Cells[1,0]:="Íà÷àëî ðàáîòû";
StringGrid1.Cells[2,0]:="Îêîí÷àíèå ðàáîòû";
StringGrid1.Cells[3,0]:="Ïðîäîëæèò& #229;ëüíîñòü";
StringGrid1.Cells[4,0]:="Ðàííåå íà÷àëî ðàáîòû";
StringGrid1.Cells[5,0]:="Ðàííåå îêîí÷àíèå ðàáîòû";
StringGrid1.Cells[6,0]:="Ïîçäíåå íà÷àëî ðàáîòû";
StringGrid1.Cells[7,0]:="Ïîçäíåå îêîí÷àíèå ðàáîòû";
StringGrid1.Cells[8,0]:="Ïîëíûé ðåçåðâ";
StringGrid1.Cells[9,0]:="Íàçâàíèå ðàáîòû";
StringGrid1.Cells[10,0]:="×àñòíûé ðåçåðâ âðåìåíè";
end;
procedure TForm1.N1Click(Sender: TObject);
begin
form2.Visible:=True;
Form2.Edit1.Clear;
Form2.Edit2.Clear;
Form2.Edit3.Clear;
end;
procedure TForm1.N2Click(Sender: TObject);
begin
form2.Visible:=true;
end;
procedure TForm1.N3Click(Sender: TObject);
begin
j:=j-1;
StringGrid1.Rows[StringGrid1.Row].Clear;
StringGrid1.RowCount:=j+1;
end;
procedure TForm1.Button1Click(Sender: TObject);
var i,j,r,max,min:integer;
begin
//ðàñ÷åò êîëè÷åñòâà ïðåäøåñòâóþùè&# 245; ðàáîò
stringgrid1.RowCount := stringgrid1.RowCount-1;
r:=0;
for i:=1 to stringgrid1.RowCount do
begin
for j:=1 to stringgrid1.RowCount do
begin
if stringgrid1.Cells[1,i]=stringgrid1.Cells[2,j]
then r:=r+1;
end;
stringgrid1.Cells[0,i]:=inttostr(r);
r:=0;
end;
//ðàñ÷åò ðàíííåãî íà÷àëà ðàáîòû
for i:=1 to StringGrid1.RowCount do
if StringGrid1.Cells[0,i]=inttostr(0)
then StringGrid1.Cells[4,i]:=StringGrid1.Cells[0,i];
max:=1000;
for i:=1 to StringGrid1.RowCount do
begin
for j:=1 to StringGrid1.RowCount do
begin
if StringGrid1.Cells[1,i]=StringGrid1.Cells[2,j]
then
if (strtoint(StringGrid1.cells[5,i])>max)=(strtoint(StringGrid1.cells[4,i])>max)
then
begin
max:=strtoint(StringGrid1.cells[5,i]);
StringGrid1.Cells[4,i]:=inttostr(max);
end;
max:=0;
end;
end;
//ðàñ÷åò ðàííåãî îêîí÷àíèÿ ðàáîòû
for i:=1 to StringGrid1.RowCount do
StringGrid1.Cells[5,i]:=inttostr(strtoint(StringGrid1.Cells[4,i])+strtoint(StringGrid1.Cells[3,i]));
//ðàñ÷åò ïîçäíåãî îêîí÷àíèÿ ðàáîòû
for i:=1 to StringGrid1.RowCount do
if StringGrid1.Cells[7,i]=inttostr(0)
then StringGrid1.Cells[4,i]:=StringGrid1.Cells[0,i];
min:=1000;
for i:=1 to StringGrid1.RowCount do
begin
for j:=1 to StringGrid1.RowCount do
begin
if StringGrid1.Cells[2,i]=StringGrid1.Cells[1,j]
then
if strtoint(StringGrid1.cells[6,i])<min
then
begin
min:=strtoint(StringGrid1.cells[6,i]);
StringGrid1.Cells[7,i]:=inttostr(min);
end;
if StringGrid1.Cells[2,i]<>StringGrid1.Cells[1,j]
then StringGrid1.Cells[7,i]:=StringGrid1.Cells[5,i];
min:=1000;
end;
end;
//ðàñ÷åò ïîçäíåãî íà÷àëà ðàáîòû
for i:=1 to StringGrid1.RowCount do
StringGrid1.Cells[6,i]:=inttostr(strtoint(StringGrid1.Cells[7,i])-strtoint(StringGrid1.Cells[3,i]));
//end;
//ðàñ÷åò ïîëíîãî ðåçåðâà
for i:=1 to StringGrid1.RowCount do
if strtoint(StringGrid1.Cells[7,i])
-strtoint(StringGrid1.Cells[5,i])=strtoint(StringGrid1.Cells[6,i])-strtoint(StringGrid1.Cells[4,i])
then StringGrid1.Cells[8,i]:=inttostr(strtoint(StringGrid1.Cells[7,i])-strtoint(StringGrid1.Cells[5,i]))
else ShowMessage("Ïðîâåðüòå ïðàâèëüíîñòü ââîäèìûõ äàííûõ");
end;
// fGraphic: TfGraphic;
// fGraphic = new TfGraphic(NULL);
//fGraphic->DrawGraphic(massiv);
// fGraphic->ShowModal();
//delete fGraphic;
end.
← →
Johnmen © (2006-05-30 09:09) [1]Что такое " Раннее начало" я не знаю, но знаю, что индексация строк и столбцов начинается с 0, а не с 1.
← →
kashmar (2006-05-30 09:50) [2]Есть майл я те скину таблицу и сразу всё поймёшь
← →
Johnmen © (2006-05-30 10:02) [3]
> Есть майл я те скину таблицу и сразу всё поймёшь
Спасибо, не надо. Объясняй здесь...
← →
kashmar (2006-05-30 12:52) [4]как посчитиать сумму 2-х столбцов
for i:=1 to StringGrid1.RowCount do
StringGrid1.Cells[5,i]:=inttostr(strtoint(StringGrid1.Cells[4,i])+strtoint(StringGrid1.Cells[3,i]));
← →
ЮЮ © (2006-05-30 12:54) [5]сколько можно повтолять? :
for i := 0 to StringGrid1.RowCount -1 do
← →
evvcom © (2006-05-30 12:54) [6]Кашмар, ты чего спамишь? Если не ошибаюсь, то уже третью ветку заводишь с одним и тем же вопросом, а объяснить, чего тебе надобно, ни в одной не удосужился.
← →
kashmar (2006-05-30 12:59) [7]Есть таблица из 9 столбцов
1 кол-во работ его я сделал
2 и 3 шифр работ i-е и j-е водится руками
3 продолжительность тоже вводится
4 Раннее начало Щитается его я тоже пощитал
5 Раннее окончание= Сумме раннего начала и продолжительности как пощитать?
← →
evvcom © (2006-05-30 13:10) [8]
> 5 Раннее окончание= Сумме раннего начала и продолжительности
> как пощитать?
Берешь "Раннее начало", складываешь с "продолжительностью" и результат записываешь в "Раннее окончание". В чем сложности?
← →
kashmar (2006-05-30 13:13) [9]а как програмно будет
← →
kashmar (2006-05-30 13:14) [10]for i := 0 to StringGrid1.RowCount -1 do
StringGrid1.Cells[5,i]:=inttostr(strtoint(StringGrid1.Cells[4,i])+strtoint(StringGrid1.Cells[3,i]));
так?
← →
kashmar (2006-05-30 13:49) [11]Хэлппп
← →
evvcom © (2006-05-30 14:14) [12]Ну типа того. Опять тот же вопрос: В чем сложности?
Почему из тебя "раскрытие" вопроса клещами тянуть приходится? Ты задаешь одни и те же вопросы, обмусоливая их то справа, то слева, а суть проблемы скрываешь.
← →
kashmar (2006-05-30 14:30) [13]Неполучается порграмма несчитаются некоторые столбцы
что я делаю неправильно
//Расчёт раннего окончания
for i := 0 to StringGrid1.RowCount -1 do
StringGrid1.Cells[5,i]:= inttostr(strtoint(StringGrid1.Cells[4,i])+strtoint(StringGrid1.Cells[3,i]));
//Расчёт позднего окончания работы
for i:=0 to StringGrid1.RowCount -1 do
if StringGrid1.Cells[7,i]=inttostr(0)
then StringGrid1.Cells[4,i]:=StringGrid1.Cells[0,i];
min:=1000;
for i:=1 to StringGrid1.RowCount do
begin
for j:=1 to StringGrid1.RowCount do
begin
if StringGrid1.Cells[2,i]=StringGrid1.Cells[1,j]
then
if strtoint(StringGrid1.cells[6,i])<min
then
begin
min:=strtoint(StringGrid1.cells[6,i]);
StringGrid1.Cells[7,i]:=inttostr(min);
end;
if StringGrid1.Cells[2,i]<>StringGrid1.Cells[1,j]
then StringGrid1.Cells[7,i]:=StringGrid1.Cells[5,i];
min:=1000;
end;
end;
← →
kashmar (2006-05-30 14:44) [14]Ранное начало работ, выходящих из события 1, ровно нулю. Суммируя цифры третьей и четвертой граф, получают ранний срок окончания роботы, который записывают а пятую графу таблицы. Например, для роботы 1 - 4 он определится как 0*11-11.
Зная, что раннее мочало данной работы ровно раннему
окончанию предшествующей, заполняем четвертую и питую
графы. Допустим, надо определить ранние сроки начала и
окончания работы 4~5. Цифру 4_ шифра этой работы
отыскиваем в правой части шифра работ, расположенных в
таблице выше роботы 4-5. Согласно первой графе таблицы
таких робот допжнр.йить три. , " .,
Найдя указанные работы, для каждой из них берем ИЗ пятой графы ее ранн$ф.„окончание и наибольшее из этик значений записываем в четвертую графу против заданной работы 4-5. Работа 1-4 имеет раннее окончание, ровное 11; работа 2-4 - равное 7 и работа 3-4 ~ равное 10. Следовательно, записываем наибольшее число -11.
Заполняя совместно шестую и седьмую графы, находят поздние сроки начала и окончания работ. Вначале заполняют седьмую графу для работ, оканчивавшихся событием 8, помня, что для конечного события позднее окончание работ равно максимальному значению из всех ранних окончаний работ, входящих а это событие. В нашем случае позднее окончание работ 6--(! и 7~8 равно 40. Данные шестой графы для любой работы получают путем вычитания продолжительности самой работы из донных седьмой графы. Таким образом, вначале заполняется седьмая графа, а затем уже шестая.
38.
*
„" • Приведем пример.
Допустим, требуется определить поздние сроки начала и окончания работы 5-6. Отыскиваем цифру 6 кода работы в повой части шифра.робот, записанных во второй графе ииж« работы 5—6. Оно повторяется два роза (в роботах 6 — 7 и 6 -8]. Из шестой графы берем значения позднего начала их и наименьшее (21) записываем в седьмую грифу против работы 5-6. Затем, вычитая_из ван«ых_седьмой граф_ы донные третьей,^
получаем цифровую величину позднего начоло донной работы, которую и записываем в шестую графу. В нашем олучое 21-2-19.
39.
Для нахождения полного резерва времени работ (восьмым графа] данные четвертой графы вычитают изданных шестой или донные пятой графы из данных седьмой. Для проверки рекомендуется выполнить оба раоето.
Частный резерв времени работ (девятая графа) определяют следующим образом. Правую часть шифра панной работы отыскивают среди левых частей шифра работ, расположенных в нижних строчках таблицы. Для найденных работ из четвертой графы берут значение раннего начало; вычитая из него значение пятой графы для данной работы, находят ее частный резерв времени.
Рассмотрим этот расчет но примере работы 2-4.
С цифры 4 начинаются шифры робот 4-5 и 4-6.
Данные четвёртой графы для этих работ одинаковы и равны 11- Вычитая из 11 данные пятой графы для работы 2-4, получим результат; 11-7-4. Таким обраэоМ частный резерв времени работы равен резкости между ранним началом последующей и ронним окончанием данной работы.
40.
Для робот, входящих в завершающее событие, частный резерв времени определяется иэ предположения, что имеется . какая-то робота, выходящая из этого события. Дпн згой мнимой работы находим значение раннего начала, которое будет равно максимальному значению из всех ронних окончаний входящих в это событие работ (для нашего примера — 40]. Дальнейший расмет аналогичен изложенному выше.
Проделайте все остальные расчеты самостоятельно. У вас должна получи гся вот такая таблица. Настоятельно не рекомендую просто посмотреть на приведенные данные, ток как только -ммостоятельное аккуратное заполнение даст вам реальное понимание.
После заполнения всех фоф таблицы выявляют работы, у которых полный и частный резервы времени равны нулю. Это и будут критические работы, которые следует подчеркнуть. В нашем примере критическими будут работы 1-4, 4-6, 6—7 и 7-8, по которым проходит критический путь.
41.
На этом мы закончим сегодняшнюю лекцию. Она была достаточно сложной, поэтому основным заданием но сегодня бупет _ разобраться с материопом. Однако это не весь материал, посвященный проектному менеджменту. Поэтому — задавайте вопросы, при продолжении разговора о проектах, я отвечу но них.
← →
EvS © (2006-05-30 15:08) [15]>kashmar (30.05.06 14:44) [14]
>На этом мы закончим сегодняшнюю лекцию. Она была достаточно сложной, >поэтому основным заданием но сегодня бупет _ разобраться с материопом. >Однако это не весь материал, посвященный проектному менеджменту. >Поэтому — задавайте вопросы, при продолжении разговора о проектах, я >отвечу но них.
Не наглей.
>kashmar (30.05.06 14:30) [13]
>Неполучается порграмма несчитаются некоторые столбцы
Что значит не считаются?
В чем это выражается?
← →
kashmar (2006-05-31 07:25) [16]Как строить графы ?
и как ричовать кривые по точкам
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.06.18;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.01 c