Автор: Mike Orriss

 

Мне необходима программа, которая генерировала бы еженедельные списки задач. Программа должна просто показывать количество недель в списке задач и организовывать мероприятия, не совпадающие по времени. В моем текущем планировщике у меня имеется 12 групп и планы на 11 недель.

 

Мне нужен простой алгоритм, чтобы решить эту проблему. Какие идеи?

 

Вот рабочий код (но вы должны просто понять алгоритм работы):

 

Code:

unit Unit1;

 

interface

 

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls;

 

type

TForm1 = class(TForm)

ListBox1: TListBox;

Edit1: TEdit;

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

 

implementation

 

{$R *.DFM}

 

const

maxTeams = 100;

var

Teams: array[1..maxTeams] of integer;

nTeams, ix, week, savix: integer;

 

function WriteBox(week: integer): string;

var

str: string;

ix: integer;

begin

Result := Format('Неделя=%d ', [week]);

for ix := 1to nTeams do

begin

if odd(ix) then

Result := Result + ' '

else

Result := Result + 'v';

Result := Result + IntToStr(Teams[ix]);

end;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

nTeams := StrToInt(Edit1.Text);

if Odd(nTeams) then

inc(nTeams); {должны иметь номера каждой группы}

ListBox1.Clear;

for ix := 1to nTeams do

Teams[ix] := ix;

ListBox1.Items.Add(WriteBox(1));

 

for week := 2to nTeams - 1do

begin

Teams[1] := Teams[nTeams - 1];

{используем Teams[1] в качестве временного хранилища}

for ix := nTeams downto2do

ifnot Odd(ix) then

begin

savix := Teams[ix];

Teams[ix] := Teams[1];

Teams[1] := savix;

end;

for ix := 3to nTeams - 1do

if Odd(ix) then

begin

savix := Teams[ix];

Teams[ix] := Teams[1];

Teams[1] := savix;

end;

Teams[1] := 1; {восстанавливаем известное значение}

ListBox1.Items.Add(WriteBox(week));

end;

end;

 

end.

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить