Advertisement
wojtas626

[PAS] Drzewo genealogiczne

Jan 12th, 2015
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.82 KB | None | 0 0
  1. program drzewo;
  2.  
  3.  
  4. uses
  5.     crt, DOS;
  6.  
  7. type
  8.     ptr = ^person;
  9.  
  10.     person = record
  11.            imie, partner: String;
  12.            poziom, ID: Integer;
  13.            dziecko1, dziecko2: ptr;
  14.     end;
  15.  
  16. var
  17.    root: ptr;
  18.    staticID: Integer;
  19.  
  20. procedure wyswietl(wezel: ptr);
  21. begin
  22.      write(wezel^.imie, ' (',wezel^.ID, ')');
  23.      if wezel^.partner <> '' then
  24.         write(' - ', wezel^.partner);
  25.  
  26.      writeLn();
  27.  
  28.      if wezel^.dziecko1 <> NIL then
  29.         wyswietl(wezel^.dziecko1);
  30.  
  31.      if wezel^.dziecko2 <> NIL then
  32.         wyswietl(wezel^.dziecko2);
  33.  
  34. end;
  35.  
  36.  
  37. function szukajID(ID: Integer; wezel: ptr): ptr;
  38. begin
  39.      result := NIL;
  40.      if ID = wezel^.ID then
  41.         result := wezel
  42.      else
  43.      begin
  44.           if wezel^.dziecko1 <> NIL then
  45.              result := szukajID(ID, wezel^.dziecko1);
  46.  
  47.           if wezel^.dziecko2 <> NIL then
  48.              result := szukajID(ID, wezel^.dziecko2);
  49.      end;
  50. end;
  51.  
  52. procedure dodajDane(var wsk: ptr);
  53. begin
  54.      writeLn('Podaj imie: ');
  55.      readLn(wsk^.imie);
  56.      wsk^.ID := staticID;
  57. end;
  58.  
  59. procedure dodaj(id: Integer);
  60. var
  61.    wsk, wskD: ptr;
  62. begin
  63.      inc(staticID);
  64.      wsk := szukajID(id, root);
  65.  
  66.      if wsk^.dziecko1 = NIL then
  67.      begin
  68.           new(wskD);
  69.           dodajDane(wskD);
  70.           wsk^.dziecko1 := wskD;
  71.      end else
  72.      begin
  73.           f wsk^.dziecko1 = NIL then
  74.      begin
  75.           new(wskD);
  76.           dodajDane(wskD);
  77.           wsk^.dziecko1 := wskD;
  78.      end
  79.      end;
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87. end;
  88.  
  89.  
  90. procedure usun();
  91. begin
  92.  
  93. end;
  94.  
  95.  
  96. begin
  97.      staticID := 0;
  98.      new(root);
  99.      root^.imie := 'stary';
  100.      root^.poziom := 0;
  101.      root^.ID := staticID;
  102.      root^.partner := 'zona';
  103.      root^.dziecko1 := NIL;
  104.      root^.dziecko2 := NIL;
  105.  
  106.  
  107.  
  108.      wyswietl(root);
  109.  
  110.  
  111.      ReadKey;
  112. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement