Суббота, 20.04.2024, 12:46

Delphi

Приветствую Вас Гость

Друзья сайта
Статистика

Сегодня были:
Самые активные пользователи

Меню сайта
Наш опрос
Вы программируете на Delphi
Всего ответов: 180
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Delphi » Для новичков » моделирование обработки процессов основаной на приоритетах
моделирование обработки процессов основаной на приоритетах
sleepesДата: Понедельник, 29.09.2008, 20:16 | Сообщение # 1
Сержант
Группа: Пользователи
Сообщений: 27
Репутация: 0
Статус: Offline
Вобщем в универе дали такое задание. Приоритеты относительные.
Я уже вторую неделю пишу и вот что получилось
Code

begin
t:=0;
vipoln:=false;
znach:=0;
for i:=1 to 10 do
    mas[i]:=0;
while not vipoln do
   begin
    label1.Caption:=inttostr(t);
    for i:=1 to 10 do
        if procesi[i].postyp=t then
          begin
           mas[i]:= procesi[i].prioritet;     //пишем приоритет совпавшего времени
           procesi[i].postyp:=procesi[i].postyp+1;  // подготавлюем процессов к следуещему кванту времени
          end;

    for i:=1 to 10 do
       if znach<mas[i] then
         begin
          znach:=mas[i];
          max:=i;
         end;                     // находим номер элемента с найбольшим приоритетом

    procesi[max].dlitelnost:= procesi[max].dlitelnost-1; // уменшаем длительность

    if procesi[max].dlitelnost=0 then
     procesi[max].postyp:= procesi[max].postyp-1;   // проверяем процесс закончен или нет

    if procesi[max].dlitelnost=0 then
      StringGrid1.Cells[4,max]:=inttostr(t);  // записуем время если процесс кончился

    pusto:=0;
    for i:=1 to 10 do
       if not (StringGrid1.Cells[4,i]='') then
         pusto:=pusto+1;         // есть ли не законченый процесс

    if pusto=10 then
      vipoln:=true;       // конец цикла выполнения
    t:=t+1;
   end;

end;

Тут вроде теоритически все правильно, но с цикла оно выходить не хочет( angry

 
IvinДата: Вторник, 30.09.2008, 09:28 | Сообщение # 2
Admin
Группа: Администраторы
Сообщений: 46
Репутация: 0
Статус: Offline
sleepes, выложи исходники, так я ничего тебе сказать не смогу, у тебя слишком много циклов, не понятно в каком происходит зависание.
 
sleepesДата: Вторник, 30.09.2008, 15:11 | Сообщение # 3
Сержант
Группа: Пользователи
Сообщений: 27
Репутация: 0
Статус: Offline
вот вылажую
Прикрепления: 8878471.zip (235.9 Kb)
 
IvinДата: Четверг, 02.10.2008, 21:08 | Сообщение # 4
Admin
Группа: Администраторы
Сообщений: 46
Репутация: 0
Статус: Offline
sleepes, не знаю. Чтобы ты видел что происходит в процессе выполнения кода поставь вот это:
Code
   application.ProcessMessages;
    sleep(100);

после вот этого:

Code
if pusto=10 then
      vipoln:=true;       // êîíåö öèêëà âûïîëíåíèÿ
    t:=t+1;
 
sleepesДата: Вторник, 07.10.2008, 20:14 | Сообщение # 5
Сержант
Группа: Пользователи
Сообщений: 27
Репутация: 0
Статус: Offline
м..да, показало на строчке
Code
procesi[max].dlitelnost:= procesi[max].dlitelnost-1; // óìåíøàåì äëèòåëüíîñòü

ну где должно длительность процеса уменьшать, а что тут не так хз(((
не знаешь что бы это могло значить? cry
 
IvinДата: Вторник, 24.02.2009, 22:45 | Сообщение # 6
Admin
Группа: Администраторы
Сообщений: 46
Репутация: 0
Статус: Offline
Клоз
 
Форум » Delphi » Для новичков » моделирование обработки процессов основаной на приоритетах
  • Страница 1 из 1
  • 1
Поиск: