Turbo Pascal - Bubble sort

Programovacie jazyky, rady, poradňa...
MadMatt
Light Expert
Light Expert
Príspevky: 64
Registrovaný: 14 dec 2008, 13:15
Kontaktovať používateľa:

Turbo Pascal - Bubble sort

Príspevok od používateľa MadMatt »

zdravim vsetych
potreboval by som trocha poradit . Mam vytvorit program v Turbo Pascale na zoradenie ciar alebo liniek nejakych nahodnych co vegeneruje ten program pomocou Bubble Sortu , a este na zaciatku aby sa ma malo pytat na ich pocet (takych 20 max.) . A zatial mam toto, len tam by som asi nemal mat ten ciastocny vypis a nevem ako na tu graficku cast

Kód: Vybrať všetko

program prebublavanie_1;
uses crt,graph;
var i,p,k,n,z,r,m:integer;
    a:array[1..10] of integer;
    procedure ciastocny_vypis;
    begin
     for i:=1 to 10 do
      write(a[i],',');
      writeln;
      readln
    end;
    label SKOK;
    begin
    clrscr;
    n:=10;r:=0;m:=0;
    for i:=1 to n do
     begin
      writeln('zadaj',i,'. cislo');
      readln(a[i]);
      end;
      writeln;
      z:=1;
SKOK:k:=0;
      for i:=z+1 to n do
       begin                               { r:=r+1;   }
       if a[i]<a[i-1] then begin
                p:=a[i];
                a[i]:=a[i-1];
                a[i-1]:=p;k:=1;    {  m:=m+1;  }
                end;
      end;
   ciastocny_vypis;
   if k=0   then begin
                     {  writeln('pocet porovnani: ',r); }
                     {  writeln('pocet presunov: ',m);   }
   readln;exit;
   end
            else n:=n-1;
                 goto SKOK;

end.
DIk
chmirko
Expert
Expert
Používateľov profilový obrázok
Príspevky: 182
Registrovaný: 05 sep 2008, 15:56
Kontaktovať používateľa:

Príspevok od používateľa chmirko »

OMFG?!?
ano Pascal pozna LABEL ale radsej by som to trosku poprerabal

no ak mas seriozne zaujem vytvorit nieco co vytvroi 20 random hodnot, vypise
bubblesortne a vypise znova

a tie cisla spravit ako ciarky, mozno by som ti vedel pomoct, zisti si moju stranku, na nej Maila a napis mi iba ak mas zaujem to riesit so mnou, (uprimne ked som vydel labely ani som to necital)

ak ti staci toto

procedura na nacitanie hodnot / nahodne genervoanie hodnot (popr tolko kolko sa zada na zaciatku)

az ju budes mat tak

procedura na vypis hodnot pola zaradom, cislo do riadku pre zaciatok

az ju budes ma tak

jednoduchy bubblesort cez PROCEDURU

a az ho budes mat tak bud cez grafiku alebo graph vykreslovat ciarky
x0 = poradie prvku
x1 = poradie prvku
y0 = 100
y1 = 100 - hodnota pola nejak upravena aby bola max 100

(tot viem spravit bez akehokolvek grafickeho unitu ale to tu rozpisovat nebudem, bud http://www.gymzv.sk/~minik/Programming.html alebo cez maila)


No zhrnutie, daco malo som tu popisal co ti mozno pomoze a mozno nie, to ktorym smerom sa orientujem (skorej porcedury nez labely je tu tiez jasne), cize ak chces kontaktuj ma mailom, odpoved cakaj ale najskor pondelok-streda okrem maturit mam este aj dake pisomky, preteky, matematicke sutaze


alebo ak ti toto nija kneladi ignoruj tento prispevok

Este jedna vec:
postup ktory som sa tu snazil uviest (a aj moje nadejne pocinanie) je v rozpore s algoritmizaciou kedy oddelujem celky a az su hotove idem na dalsi, podla tejto algoteorie mas vsetko robit naraz, cize ak tot vyuzijes a mas projekt prezentovat povedz ze si to robil tak ako to ma byt (n-ty riadok a az potom n+1)

to za toto mam k-? no OK, ale nemusel to byt anonym, mohol sa dotycny podpisat :)
MadMatt
Light Expert
Light Expert
Príspevky: 64
Registrovaný: 14 dec 2008, 13:15
Kontaktovať používateľa:

Príspevok od používateľa MadMatt »

si myslis ze ja som si to vymyslel ? to nam profesor co nas to uci toto dal tento program tak co mam stym .
programator
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 475
Registrovaný: 18 apr 2005, 8:31
Bydlisko: Papua new Guinea
Kontaktovať používateľa:

Príspevok od používateľa programator »

Vseobecny algoritmus Bubble sort:

Kód: Vybrať všetko

var 
   i: integer;
   swapped: boolean;
   p: {udajovy typ pola, resp. struktury};
   a: {pole, resp. struktura}

begin
   repeat
      swapped:= false;

      for i:= 0 to {koniec pola/struktury - 1} do
      begin
         if (a[i] > a[i + 1]) then
         begin
            p:= a[i + 1];
            a[i + 1]:= a[i];
            a[i]:= p;

            swapped:= true;
         end;
      end;

   until not swapped;
end.
chmirko
Expert
Expert
Používateľov profilový obrázok
Príspevky: 182
Registrovaný: 05 sep 2008, 15:56
Kontaktovať používateľa:

Príspevok od používateľa chmirko »

no tak ked uz tu davame riesenia....

Kód: Vybrať všetko

procedure painter;
var max:real;
      x:integer;
begin
 clrscr;
 max:= {max hodnota pola};
 for x:=1 to {prvkov pola} do
 begin
   line(x,120,x,(120*A[x] div max)); 
  {toto vykresli tu ciaru, spodok v 120 a vrchol podla hodnoty}
 end;
end;
no a proceduru pridaj aby bola zapisana pred tou bubblesortovou a v nej ju trebars pre nastavovanim hodnoty swap na true zakazdym zavolaj, mozes pridat aj delay a vidis inline ako sa to vykrelsuje

toto ma este 2 chybicky ktore sa mi nechce pozerat, ale najdes to aj v Pascal helpe a aj ti to tu dakto napise o chvilu (nechce sa mi teraz pascal spustat)
grafiku ked chces robit (teda ciary, a kedeze to beres len ako nutnu ulohu do registrov nepojdeme) ju musis inicializovat, nejaky
graphinit(gd,id,'bin'); alebo ako, nepametam a na konci programu ju musis vypnut

a druha nemozes v grafike pouzit clrscr; ale to ma daku inu "cisticku"
Napísať odpoveď