Test pre fanatikov z Programovania 1i, 1MI, 1FI 14.02.2000 

  1. Napíšte metódy triedy Mnozina, ktorá reprezentuje dátový typ množina reálnych čísel pomocou jednosmerného spájaného zoznamu. Prvky zoznamu nemusíte udržiavať usporiadané. Zoznam je prístupný pomocou dvoch smerníkov: na začiatok zoznamu a na koniec (posledný prvok) zoznamu. Použite nasledujúce deklarácie:
  2. type
      prvok  = real;
      zoznam = class info:prvok; next:zoznam end;
      Mnozina = class
         z,k:zoznam;                        // začiatok a koniec zoznamu
         constructor Create;
         procedure pridaj(p:prvok);         // ak ešte v množine neex.
         procedure vyhod(p:prvok);          // ak je prvkom množiny
         function jeprvok(p:prvok):boolean; // zistí, či je prvkom množiny
       end;
  1. Všeobecný strom reprezentujeme pomocou binárneho stromu tak, že ľavý smerník každého vrchola je smerník na prvého syna tohto vrchola a pravý smerník je smerník na jeho brata (vrchol na tej istej úrovni, ktorý má toho istého otca). Napíšte funkciu arnost, ktorá zistí árnosť stromu (maximum počtu synov všetkých vrcholov). Všeobecný strom je definovaný nasledovnými typmi:
  2. type prvok = integer;
         strom = ^vrchol;
         vrchol = record info:prvok; syn,brat:strom end;
  1. Všeobecný strom je reprezentovaný tak, že každý vrchol obsahuje info-časť a dynamické pole synov:
  2. type
      strom = class
        info:prvok;
        s:array of strom;                  // dynamické pole synov
        constructor Create(i:prvok);
        procedure pridajSyna(syn:strom);   // pridá vrcholu nového syna
        function hladaj(i:prvok):strom;
      end;
    Zadefinujte zadeklarované metódy. Metóda hladaj v podstrome, ktorého koreňom je samotný vrchol, nájde vrchol s info = i alebo vráti nil, ak taký vrchol nenájde.
     
  3. Neorientovaný graf je popísaný tabuľkou susedností:
  4. type
      mnsus = set of byte;
      graf = class
        tab:array of array of boolean;
        constructor Create;
        constructor CreateFromStream(subor:TStream);
        procedure pridajVrchol(mn:mnsus);
        procedure zapis(subor:TStream);
      end;
    Zadefinujte zadeklarované metódy. Konštruktor CreateFromStream vytvorí graf z údajov, ktoré sú v TStream. Metóda zapis zapíše graf do otvoreného TStreamu -- TStream obsahuje vety rovnakej dĺžky typu mnsus - tieto reprezentujú množiny susedov -- pre i-tu vetu obsahuje množinu susedov i-teho vrchola grafu. Metóda pridajVrchol pridá do grafu nový vrchol a pospája ho s vrcholmi, ktoré sú uvedené v parametri mn.
© AB