Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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;
//&#240;&#224;&#241;&#247;&#229;&#242; &#239;&#238;&#231;&#228;&#237;&#229;&#227;&#238; &#237;&#224;&#247;&#224;&#235;&#224; &#240;&#224;&#225;&#238;&#242;&#251;
for i:=1 to StringGrid1.RowCount do
StringGrid1.Cells[6,i]:=inttostr(strtoint(StringGrid1.Cells[7,i])-strtoint(StringGrid1.Cells[3,i]));
//end;
//&#240;&#224;&#241;&#247;&#229;&#242; &#239;&#238;&#235;&#237;&#238;&#227;&#238; &#240;&#229;&#231;&#229;&#240;&#226;&#224;
 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("&#207;&#240;&#238;&#226;&#229;&#240;&#252;&#242;&#229; &#239;&#240;&#224;&#226;&#232;&#235;&#252;&#237;&#238;&#241;&#242;&#252; &#226;&#226;&#238;&#228;&#232;&#236;&#251;&#245; &#228;&#224;&#237;&#237;&#251;&#245;");
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.017 c
2-1148980350
duncat
2006-05-30 13:12
2006.06.18
Распечатать текст из Memo


2-1149241925
XoXoL
2006-06-02 13:52
2006.06.18
Помогите!


3-1145789890
Navi
2006-04-23 14:58
2006.06.18
Запрос на удаление записей


15-1148361182
Ega23
2006-05-23 09:13
2006.06.18
С Днём рождения! 23 мая


15-1147685730
SamProf
2006-05-15 13:35
2006.06.18
Не могу поставит Delphi 8





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский