Wstęp do Programowania
                   ZSI. I Rok. Klasówka nr 2
                          29.11.2002
                               
Zad 1 (6 pkt.)

Dane są deklaracje:

     const
         n=100;
     type
         punkt = record x,y:real end;
         lamana = array [1..n] of punkt;

Wartość typu łamana reprezentuje łamaną na płaszczyźnie złożoną
z  odcinków,  których  końce  zapisano  jako  kolejne  elementy
tablicy.

Napisz funkcję:

     function dobra(t: lamana): boolean;

badającą, czy t reprezentuje łamaną, w której stosunek długości
każdego  odcinka  łamanej do długości każdego z poprzedzających
go odcinków jest większy niż 2.

Zad 2 (9 pkt.)

Dana  jest tablica A typu Tab=array[1..N] of 0..MaxInt.  Napisz
funkcję:

     function CzyJest(t: Tab; m: integer): boolean;

sprawdzającą,  czy  w  tablicy t znajduje się  segment  (spójny
fragment)  o  sumie równej m. MaxInt jest standardową  stałą  w
Pascalu oznaczającą największą wartość całkowitą.


Zad 3 (5 pkt.)

Podaj  gramatykę dla języka a^i b^j a^k, gdzie 0<=j<=i+k (czyli
terminal "a" występuje co najmniej tyle razy co "b"). Uzasadnij
jej poprawność.

Rozwiązanie  każdego  zadania  napisz  na  osobnej,  podpisanej
kartce. Podaj uzasadnienia rozwiązań. Zwróć uwagę na czytelność
rozwiązań i ich efektywność.

Życzymy powodzenia!