Zjazd1
Porównanie trzech metod obliczania potęgi (patrz slady z wykładu 1.1-1.3): Należy dla każdej metody obliczyć ilość wykonanych mnożeń oraz podać czas działania (przykład oblicznia czasu działania: czas.pas). Żeby czas był miarodajny należy obliczenia wykonać odpowiednio dużą ilość razy (np. 30000).
/*Silnia*/
Zjazd2
Porównanie metod obliczania symbolu Newtona (patrz slady z wykładu):
metody 1,2,3 - slajd 5,
metoda 4 - funkcja wywolująca metode 2 lub 3 w zależności jakie jest n,
metoda 5 - funkcja rekurencyjna ze slaidu 5.2,
metoda 6 - slajd 5.3,
metoda 7 - slajd 5.5 z wymianą dwuwymiarowej tablicy P na jednowymiarową.
Należy dla każdej metody obliczyć ilość wykonanych mnożeń (metody 1-4) lub dodawań (metody 5-7) oraz podać czas działania (przykład oblicznia czasu działania: czas.pas). Żeby czas był miarodajny należy obliczenia wykonać odpowiednio dużą ilość razy (np. 30000).
/*Newton*/
Zjazd3
Porównanie dwóch wybranych metod sortowania (wybieranie, wstawianie, bąbelkowe).
/*Sort*/
Zjazd4
Implementacja kolejki jako dwóch stosów:
Stos należy zaimplementować jako listę liniową jednokierunkową a kolejkę jako rekord zawierający dwa stosy: jeden do wkładania elementów a drugi do pobierania. Jesli pobieramy pierwszy element z kolejki a stos do pobierania jest pusty, to wszystkie elementy ze stosu do wkładania są przerzucane na stos do pobierania i wtedy pobieramy element. Podobnie w przypadku operacji POP.
type
List = ^Element;
Element = record
nbr: real;
next: List;
end;
Stack = List; {Stos}
procedure InitS(var S: Stack); {wpisanie nil do S}
function EmptyS(S: Stack): boolean;
function OnTop(S: Stack): real;
procedure Push(var S: Stos; a: integer);
{ należy utworzyć nowy Element
new(e)
i przypisać
e^.liczba := a
i potem wstawić Element e na górze stosu (na początku listy)
}
procedure PopS(var S: Stack);
procedure Transfer(var Sin, Sout: Stack); {przerzucanie elementów ze stosu Sin do Sout}
type
Queue = record {Kolejka}
stack_in, stack_out: Stack;
end;
procedure InitQ(var K: Queue); {oba stosy są inicjalizowane}
function EmptyQ(K: Queue): boolean; {czy oba stosy są puste}
function First(K: Queue): real;
{podaje liczbę w pierwszym elemencie stack_out przerzucając wcześniej
elementy ze stack_in jeśli trzeba}
procedure Inject(var K: Queue; a: real); {robi Push do stack_in}
procedure PopQ(var K: Queue);
{usuwa pierwszy element ze stack_out przerzucając wcześniej
elementy ze stack_in jeśli trzeba}
/*STOS*/
Zjazd5
Implementacja sortowania przez scalanie z użyciem kolejek.
Należy użyć jednostki LISTY (uses LISTY).
Program powinien wyglądać tak:
Program MergeSort;
uses Listy, crt;
procedure Dziel(var K,K1,K2: Kolejka);
begin
{ Dzieli kolejkę K na dwie części, które zapisuje do K1 i K2}
end;
procedure Scal(var K1,K2,K: Kolejka);
begin
{ scala posortowane kolejki K1 i K2 w pustą kolejkę K }
end;
procedure SortowaniePrzezScalanie(var K: Kolejka);
var K1,K2: Kolejka;
begin
Init(K1);
Init(K2);
if K.Count > 1 then
begin
Dziel(K,K1,K2);
SortowaniePrzezScalanie(K1);
SortowaniePrzezScalanie(K2);
Scal(K1,K2,K);
end;
end;
var K: Kolejka;
begin
{ Wczytanie z pliku 'dane.txt' liczb do sortowanie do kolejki K }
SortowaniePrzezScalanie(K);
{ Wypisanie kolejki K }
end.
/* Megsort*/
Zjazd6
Implementacja sortowania leksykograficznego przy użyciu kolejek. Losowanie 10 000 liczb od 0-30 000 i sortowanie ich za pomoca sortu leksykograficznego/pozycyjnego
/* Leksort*/
Zjazd7
Implementacja podstawowych operacji na drzewach binarnych. Dodawanie do drzewa BST, szukanie elementu oraz usuwanie z drzewa i wyświetlanie na ekran.
/*BST*/