В школуСуббота, 28.06.2025, 00:09

Приветствую Вас Гость | RSS
Главная | Каталог статей | Регистрация | Вход
Меню сайта

Категории раздела
Анализы уроков [10]
Анализы проыеденных уроков для разных предметов
Конспекты [41]
Планы конспекты и просто конспекты уроков разных тематик
Документация [12]
Примеры заполнений разного рода документов
Мероприятия [13]
Тексты, планы и сценарии мероприятий
Контроль знаний [117]
Контрольные и самостоятельные работы, вопроссы, тесты, лабораторные работы и т.д
Литература [84]
Статьи и другая образовательная литература
Рефераты и Доклады [25]
Рефераты, доклады, дипломные проекты и т.д
Разное [10]
Статьи с других сайтов предоставленніе нам.

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Главная » Статьи » Контроль знаний

ЛР Тема. D-кучи.

Лабораторная работа № 3

Тема. D-кучи.

Цель:

-          изучить устройство и принцип заполнения D-куч

-          научиться использовать на практике основные алгоритмы по обработке D-куч

Ход работы

1.        Разработайте программу в соответствии со следующими требованиями:

а)       создание d-кучи (случайное / ручной ввод);

б)       добавление элемента в d-кучу;

в)       удаление минимального элемента из d-кучи;

г)        удаление произвольного элемента из d-кучи;

д)       поиск минимального элемента;

е)       уменьшение ключа вершины i на значение value;

ж)      увеличение ключа вершины i на значение value;

з)        все операции должны быть наглядно представлены.

Важно: обязательно соблюдение инварианта!

 

2.        Напишите отчет, содержащий исходные тексты программ.

РЕШЕНИЕ

var

  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var

i:integer;

begin

randomize;

for i:=0 to 29 do

begin

stringgrid1.Cells[i,0]:=inttostr(random(99));

end;

end;

 

procedure TForm1.Button5Click(Sender: TObject);

var i,j,sss,t,t1,star:integer;

begin

repeat

  sss:=0;

  for i:=0 to stringgrid1.ColCount-2 do

    begin

    t:=strtoint(stringgrid1.Cells[i,0]);

    t1:=strtoint(stringgrid1.Cells[i+1,0]);

    if t>t1 then

      begin

      sss:=1;

      star:=strtoint(stringgrid1.Cells[i,0]);

      stringgrid1.Cells[i,0]:=stringgrid1.Cells[i+1,0];

      stringgrid1.Cells[i+1,0]:=inttostr(star);

      end;

    end;

until (sss=0);   

end;

 

procedure TForm1.Button2Click(Sender: TObject);

begin

if v<30 then

begin

stringgrid1.Cells[v,0]:=edit1.Text;

v:=v+1;

end;

end;

 

procedure TForm1.Button3Click(Sender: TObject);

var

n,i:integer;

begin

n:=strtoint(edit2.Text);

if n<29 then

  begin

  for i:=n-1 to 29 do

    begin

    stringgrid1.Cells[i,0]:=stringgrid1.Cells[i+1,0];

    end;

  stringgrid1.Cells[i+1,0]:=' ';

  end;

end;

 

procedure TForm1.Button7Click(Sender: TObject);

var

n,i:integer;

begin

randomize;

n:=random(29);

if n<29 then

  begin

  for i:=n-1 to 29 do

    begin

    stringgrid1.Cells[i,0]:=stringgrid1.Cells[i+1,0];

    end;

  stringgrid1.Cells[i+1,0]:=' ';

  end;

end;

 

procedure TForm1.Button6Click(Sender: TObject);

var

min,i:integer;

begin

min:=strtoint(stringgrid1.Cells[0,0]);

for i:=0 to 28 do

  begin

  if min>strtoint(stringgrid1.Cells[i,0]) then min:=strtoint(stringgrid1.Cells[i,0]);

  end;

edit3.Text:=inttostr(min);

end;

 

procedure TForm1.Button4Click(Sender: TObject);

var

versh,i,max,n:integer;

stroka:string;

begin

n:=0;

memo1.Lines.Clear;

//1 stroka

versh:=strtoint(edit4.Text);

memo1.Lines.Add('                                                                                                                                                                 '+stringgrid1.Cells[0,0]);

 

//2 stroka

for i:=1 to versh do

  begin

  stroka:=stroka+'                                                             '+stringgrid1.Cells[i,0];

  end;

memo1.Lines.Add(stroka);

stroka:='          ';

 

//3 stroka

max:=versh*versh+i;

if i<29-max then

begin

for i:=versh+1 to max-1 do

   begin

   stroka:=stroka+'            '+stringgrid1.Cells[i,0];

   n:=n+1;

   if n=versh then

      begin

      stroka:=stroka+'           ';

      n:=0;

      end;

   end;

end;

memo1.Lines.Add(stroka);

stroka:='    ';

n:=0;

//4 stroka

max:=versh*max;

i:=i;

if max>29 then max:=29;

if i<29 then

begin

for i:=i to max do

   begin

   stroka:=stroka+'  '+stringgrid1.Cells[i,0];

   n:=n+1;

   if n=versh then

      begin

      stroka:=stroka+'   ';

      n:=0;

      end;

   end;

end;

 if max=28 then

 begin

 stroka:=stroka+stringgrid1.Cells[29,0];

 max:=29;

 end;

 

memo1.Lines.Add(stroka);

stroka:=' ';

if max<29 then

begin

//5 stroka

max:=max*versh+1;

i:=i;

if max>29 then max:=29;

if i<29 then

begin

for i:=i to max do

   begin

   stroka:=stroka+'  '+stringgrid1.Cells[i,0];

   n:=n+1;

   if n=versh then

      begin

      stroka:=stroka+'   ';

      n:=0;

      end;

   end;

end;

memo1.Lines.Add(stroka);

stroka:=' ';

end;

 

if max<29 then

begin

//6 stroka

max:=max+versh*versh+i;

i:=i+versh+1;

if max>29 then max:=29;

if i<29 then

begin

for i:=versh+1 to max do

   begin

   stroka:=stroka+'  '+stringgrid1.Cells[i,0];

   n:=n+1;

   if n=versh then

      begin

      stroka:=stroka+'   ';

      n:=0;

      end;

   end;

end;

memo1.Lines.Add(stroka);

stroka:=' ';

end;

//sluchay s 1 vershinoy

if versh=1 then

  begin

  memo1.Lines.Clear;

  for i:=0 to 29 do

    begin

    memo1.Lines.Add(stringgrid1.Cells[i,0]);

    end;

  end;

end;

end.

Категория: Контроль знаний | Добавил: Armageddets (26.10.2012)
Просмотров: 522 | Комментарии: 1 | Теги: Тема. D-кучи. | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Мини-чат

Форма входа

Поиск


Copyright MyCorp © 2025
Сделать бесплатный сайт с uCoz