Advertisement
machalda

Untitled

Jan 23rd, 2012
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.93 KB | None | 0 0
  1. {Deklarujte dva polymorfní objekty. První implementuje uspořádaný binární strom řetězců, kde platí, že řetězce v levém podstromu jsou podle abecedy dříve než v daném uzlu, hodnoty v pravém podstromu jsou později než v daném uzlu. Druhý objekt se při vkládání hodnot do stromu rozhoduje podobně, ale jen podle posledních tří znaků řetězců. Implementujte metody nutné k vložení řetězců do stromů a k jejich seřazenému výpisu.
  2. Na tuto otázku můžete odpovědět libovolně dlouhým textem. Odpověď bude vyhodnocena zkoušejícím ručně.}
  3.  
  4.  
  5. type
  6.      TypData = string;
  7.      UkStrom = ^Clen;
  8.      Clen = record
  9.        D: TypData;
  10.        levy,pravy: UkStrom;
  11.      end;
  12.  
  13.      Strom1 = object
  14.        UkPrvni: UkStrom;
  15.        UkAkt: UkStrom;
  16.        constructor Start;
  17.        procedure vloz(var co:string);virtual;
  18.        procedure vypis(co:UkStrom);
  19.        //dalsi metody jako init...
  20.      end;
  21.  
  22.      Strom2 = object(Strom1)
  23.        constructor Start; //naplneni VMT
  24.        procedure vloz();virtual;
  25.      end;
  26.  
  27.  
  28.  
  29.  procedure strom1.vloz(var T: UkStrom; E: TypData);
  30.  begin
  31.        if T=nil then begin
  32.           new(T);
  33.           T^.D:=E;
  34.           T^.levy:=nil;
  35.           T^.pravy:=nil
  36.        end else
  37.           if ord(E[1])<=ord(T^.D[1]) then vloz(T^.levy, E)
  38.                         else vloz(T^.pravy, E)
  39.  end;
  40.  
  41.  procedure strom2.vloz(var T: UkStrom; E: TypData);
  42.  begin
  43.        if T=nil then begin
  44.           new(T);
  45.           T^.D:=E;
  46.           T^.levy:=nil;
  47.           T^.pravy:=nil
  48.        end else
  49.           if lenght(co[1]) - 3)<=(lenght(Clen.D[1]) -3) then vloz(T^.levy, E) //vkladani podle jednoho pismene - nebyl u zkousky cas dodelat :-)
  50.                         else vloz(T^.pravy, E)
  51.  end;
  52.        
  53.  
  54.  
  55. procedure Strom1.vypis(T: UkStrom);
  56.  begin if T<>nil then begin
  57.          vypis(T^.levy);
  58.          writeln(T^.D); //inorder
  59.          vypis(T^.pravy)
  60.        end;
  61.  end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement