5835


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*/



Wyszukiwarka

Podobne podstrony:
05 Spoinyid 5835 Nieznany
5835
5835
5835
05 Spoinyid 5835 Nieznany

więcej podobnych podstron