Niezalogowany (Zaloguj się)
WItaj Gościu! Możesz się teraz zalogować lub poprosić o członkowstwo na Forum Turbo Pascal Web Pag
    • CommentAuthorDelite
    • CommentTime18 Jan 2008 zmieniony
     
    Witam wszystkich Mam do napisania na zaliczenie programy sortujące tj. Sortowanie przez wstawienie, przez wybór, szybkie, bombelkowe, metoda Shella. Wykładowaca życzy sobie aby były sortowane obiekty. początek miał by wyglądać tak program sort; type obiekt = record klucz : integer; end; type indeks = 0..N; const N=20; Sortowanie przez wstawienie Procedura ma wyglądac nastepująco: procedure wstawienie; var i,j : indeks; x : obiekt; begin for i=2 to n do begin x:=a; a[0]=x; j=i-1; while x.klucz<a[j].klucz do begin a[j+1]:=a[j]; j=j-1 end a[j+1]:=x end end. Sortowanie metodą Schella Wartość początkowego przsunięcia h:=1; repeat h:= 3 * h + 1; until h>=n h:= (h div 9); h:= (h div 3); h - przyrosty n - liczba elementów Procedura sortowania metodą Shella miałaby wyglądać nastepująco: for m:=1 to t do begin k:-h[m]; s:=-k; for i:=k+1 to n do begin x:=a; j:=i-k; if s=0 then s:=-k; s:=s+1; a{s}:=x (tu ma być oczywiście nawias kwadratowy) while x.klucz<a[j].klucz do begin a[j+1]:=a[j]; j:-j-k end; a[j+1]:=x end; end; end. Tak miałyby wyglądać te programy. Najważniejsze aby był użyty tryb recordowy i były sortowanie obiekty. Losowanie liczba mozna zrealizowac np w ten sposób randomize; for i:=1 to N do a:=random(100); writeln('Przed sortowaniem:' ); for i:=1 to N do write (a[i]); writeln; Prosiłbym o zrobienie tych pięciu programów sortujących. Myśle że ktoś podoła wyzwaniu (może dla niektórych to bułka z masłem). Z góry Wielkie Dzięki
    • CommentAuthorsteficzek
    • CommentTime18 Jan 2008 zmieniony
     

    Zauważam tu niesamowite podobieństwo kodu kropka w kropke do...
    http://www.i-lo.tarnow.pl/edu/inf/alg/algsort/pages/012.php

    Nie bardzo rozumiem o co Ci dokładnie chodzi ?! Powklejałeś kody z innych stron z gotowymi rozwiazaniami Twojego problemu i chyba z lenistwa czekasz aż ktoś
    poskłada ten zlepek cudzych kodów w ładną całość - czyt. Gotowca. I na dodatek próbujesz nam wcisnać że to Twój
    (...)Wykładowaca życzy sobie aby były sortowane obiekty. początek miał by wyglądać tak (...)

    Proponuję pogłówkować samemu a nie liczyć na czyjąś naiwność.

    Pozdrawiam Stefan Pruszkiewicz
    • CommentAuthorDelite
    • CommentTime18 Jan 2008 zmieniony
     
    Wszystkie kody zródłowe pochodzą z wykładów i ćwiczeń na których byłem oprócz ostatiego kodu który (trafiłeś wziąłem ze strony http://www.i-lo.tarnow.pl/edu/inf).
    Zgadza sie chce aby ktos poskładał to w działającą calość. Nie wszystkim przychodzi to łatwo tak wiec proszę o pomoc.
    • CommentAuthorsteficzek
    • CommentTime18 Jan 2008 zmieniony
     
    Uses Crt; Type TObiekt = record Klucz : Integer; end; procedure Wstawianie(var Tablica : array of TObiekt;Pierwszy,Ostatni : Integer); var i,j,x : Integer; begin for j:=Ostatni downto Pierwszy do begin x:=Tablica[j].Klucz; i:=j+1; while (i<=Ostatni) and (x>Tablica[ i].Klucz) do begin Tablica [ i-1] :=Tablica[ i]; Inc( i) end; Tablica [ i-1].Klucz:=x end end; procedure QuickSort(var Tablica : array of TObiekt;Pierwszy,Ostatni : Integer); var Srodek,b,i,j : Integer; begin if Pierwszy<Ostatni then begin Srodek:=Tablica[Random(Ostatni-Pierwszy)+Pierwszy+1].Klucz; i:= Pierwszy-1; j:= Ostatni+1; repeat repeat i:=i+1 until Srodek<=Tablica [ i].Klucz; repeat j:=j-1 until Srodek>=Tablica[j].Klucz; b:=Tablica [ i].Klucz; Tablica [ i].Klucz:=Tablica[j].Klucz; Tablica [j].Klucz:=b until i>=j; Tablica[j].Klucz:=Tablica [ i].Klucz; Tablica [ i].Klucz:=b; QuickSort(Tablica,Pierwszy,i-1); QuickSort(Tablica,i,Ostatni) end end; Const Ostatni = 20; Var Tablica : array [0..Ostatni] of TObiekt; Wybor,i : Integer; Begin Randomize; ClrScr; Writeln('Wybierz metode sortowania:'); Writeln('1. Sortowanie - przez wstawianie'); Writeln('2. '); Writeln('3. Sortowanie - Szybkie'); Writeln('4. '); Writeln('5. '); Writeln; for i:=0 to Ostatni do begin Tablica [ i].Klucz:=Random(100); Write(Tablica [ i].Klucz,',') end; Writeln; Readln(Wybor); case Wybor of 1 : Wstawianie(Tablica,0,Ostatni); 2 : ; 3 : QuickSort(Tablica,0,Ostatni); 4 : ; 5 : end; for i:=0 to Ostatni do Write(Tablica [ i].Klucz,','); ReadKey end.

    Włala - zrobiłem Ci dwa sortowania z pięciu... Myślę że jak pogłówkujesz i oprzesz się tym przykładem bez większych problemów poradzisz sobie z 3 kolejnymi

    Pozdrawiam Stefan Pruszkiewicz
    • CommentAuthorDelite
    • CommentTime21 Jan 2008
     
    Wielkie Dzieki za ten program. O to mi chodziło. Będę miał się teraz na czym opszeć. Pozdrawiam