Anda di halaman 1dari 5

Zadania przygotowawcze do I kolokwium ze Wstpu do Programowania w semestrze

zimowym 2007/2008 dla kierunku Informatyka

Dane s tablice A,P: array[1..n] of Integer, gdzie n jest sta wiksz od


2, przy czym tablica P jest posortowana niemalejco. Zakadamy, e
elementy w obu tablicach s dodatnie.

Postaraj si napisa kade rozwizanie w formie procedury lub funkcji z


wyspecyfikowanymi w nagwku odpowiednimi parametrami (Na kolokwium procedury
nie s wymagane, ale mile widziane).
We wszystkich zadaniach naley umie uzasadni rozwizanie, np. przez podanie
niezmiennika gwnej ptli algorytmu i oszacowa zoono obliczeniow (czyli
ile razy wykonaj si podstawowe operacje; przede wszystkim chodzi o
rzd wielkoci). Wikszo zada (ale nie wszystkie!) ma zoono liniow.
Proba o niezmienniki jest troch na wyrost bdzie o nich wkrtce na wykadzie
ju po kolokwium - ale ci z Pastwa, ktrzy ju si z nimi zapoznali proszeni s
o nie unikanie ich.
1. Zastp kady element tablicy A przez dodanie jego wartoci do sumy
wartoci wszystkich elementw go poprzedzajcych
2. Odtwrz z tablicy otrzymanej w poprzednim zadaniu oryginalne wartoci.
3. Zastp kady element tablicy A poza pierwszym i
ostatnim przez redni arytmetyczn z ssiadujcych z nim wartoci. Za,
e wszystkie oryginalne wartoci w tablicy A s parzyste.
4. Jeeli to moliwe, odtwrz oryginalne wartoci z tablicy uzyskanej w
poprzednim zadaniu.
5. Zastp kady element tablicy A przez redni arytmetyczn z ssiadujcych
z nim wartoci. Za, e ssiadem lewym pierwszego elementu jest element
ostatni, a ssiadem prawym ostatniego --- element pierwszy.
6. Jeeli to moliwe, odtwrz oryginalne wartoci z tablicy uzyskanej w
poprzednim zadaniu.
7. Znajd najmniejsz i najwiksz warto znajdujc si w A.
8. Znajd warto drugiego co do wielkoci elementu z A.
9. Znajd drug co do wielkoci warto z A. Jeeli takiej nie ma, to
wynikiem niech bdzie warto 0. Rnica midzy tym, a poprzednim zadaniem
polega na tym, e np. dla tablicy A=(3,1,5,4,5,5) odpowiedzi tutaj
powinna by warto 4, a w poprzednim zadaniu warto 5.
10.Zbadaj, ile jest rnych wartoci w tablicy P.
11.Przepisz do tablicy A elementy z P tak, aby kada warto z P pojawia si
w A tylko raz. Elementy tablicy A, do ktrych nie przepisano adnej
wartoci, powinny mie warto 0.
12.Znajd warto, ktra pojawia si w P najwicej razy.
13.Zbadaj, czy w tablicy P wystpuj przynajmniej 3 elementy o tej samej
wartoci.
14.Odbij lustrzanie tablic A wzgldem jej rodka. Przykadowo dla tablicy A
wypenionej wartociami (3,1,5,4,5,5) wynikiem powinna by ta sama tablica
A, ale o wartociach (5,5,4,5,1,3).
15.Sprawd, czy w tablicy A istniej cho dwa elementy, ktrych wartoci s
wzgldnie pierwsze.
16.Sprawd, czy w tablicy A istniej cho dwa elementy, ktrych wartoci nie
s wzgldnie pierwsze.
17.Znajd najwikszy wsplny dzielnik wszystkich wartoci wystpujcych w
tablicy A.
18.Wyznacz liczb lokalnych ekstremw w tablicy A. Lokalnym ekstremum
nazwiemy taki element A[k], e dla kadego k takiego, e 2 <= k <= n-1,
(A[k]-A[k-1])(A[k]-A[k+1])>0.
19.Zakadajc, e elementy tablicy A okrelaj dugoci odcinkw. Zbadaj, czy
a) z kadych 3 odcinkw, ktrych dugoci s reprezentowane w A da si
zbudowa trjkt;

b) istniej takie trzy odcinki, z ktrych da si zbudowa trjkt.


20.Oblicz maksymalna warto bezwzgldn rnicy dwch rnych elementw
tablicy P, przy zaoeniu, e moe ona zawiera liczby ujemne.
21.Sprawd, czy w dwch posortowanych niemalejco tablicach P1, P2 znajduj
si cho dwie takie same wartoci. Odpowied powinna by twierdzca
zarwno wtedy, gdy te dwa rwne elementy znajduj si w rnych tablicach,
jak i wtedy gdy oba s w tej samej.
22.Zaprogramuj podstawowe dziaania arytmetyczne na liczbach naturalnych
wielocyfrowych w ukadzie pozycyjnym o dowolnej bazie. (+,-,*,div/mod).
23. Zadanie o fladze austriackiej. W n urnach znajduje si 2k etonw
czerwonych oraz n-2k biaych (n >= 2k >= 0). Dysponujc funkcj Z(i,j)
zamieniajc zawarto urny i-tej z j-t oraz funkcj KOL(i) podajc
kolor etonu w i-tej urnie doprowad do sytuacji, w ktrej wszystkie biae
etony bd znajdoway si pomidzy dwiema rwnolicznymi grupami
czerwonych.
24.Zadanie o kwiatkach Przy stole przygotowano nakrycia dla k pa i n-k panw
(0 <= k <= n \ge 1). Nakrycia dla pa byy wyrnione kwiatkiem, ktry
sta przy nakryciu. Zaproszeni gocie (k pa i n-k panw) losowo usiedli
przy stole nie zauwaywszy finezji organizatorw. Dysponujc funkcj
KWIATEK(i) przyjmujc warto true wttw gdy przy i-tym nakryciu znajduje
si kwiatek, funkcj PANI(i) stwierdzajc, czy przy i-tym miejscu usiada
pani oraz funkcj Z(i,j) zamieniajc osoby siedzce przy i-tym i j-tym
nakryciu doprowad do waciwego usadowienia uczestnikw bankietu.
25.Zadanie o paniach Przy stole usiady panie i panowie, przy czym panw jest
nie mniej, ni pa. Dysponujc operacj Z(i,j) oraz funkcj PANI(i)
sprawdzajc, czy przy i-tym miejscu siedzi pani, doprowad do sytuacji, w
ktrej adne dwie panie nie siedz koo siebie. (Uwaga: minimalizacja
liczby zamian jest nietrywialna).
26.Zadanie o maksymalnej wysokoci stoku W tablicy liczb cakowitych A[1..n]
stokiem wznoszcym si (l,p), gdzie 1<= l<= p<= n nazywamy spjny fragment
tablicy taki, e A[l] <=...<= A[p]. Wysoko stoku (l,p) wynosi A[p]-A[l].
Napisz fragment programu, ktry znajdzie maksymaln wysoko stoku w
tablicy A.
27.Zadanie o Pracusiu. Pracu postanowi, e bdzie pracowa tak duo i
czsto, aby w cigu kolejnych k dni co najmniej r dni byo dniami
roboczymi. Napisz fragment programu rozstrzygajcy, czy Pracu by
faktycznie tak pracowity, jak zamierza. Kolejne dni kodowane s w tablicy
dni:array[1..n] of Boolean, gdzie dni[i]=true oznacza, e Pracu pracowa
i-tego dnia, a false, e mia wolne.
28.Zadanie o rnicy symetrycznej zbiorw Dane s dwie tablice A[1..n],
B[1..n] liczb cakowitych. Liczby w kadej tablicy uporzdkowane s
(cile) rosnco. Napisz fragment programu, speniajcy warunek kocowy
r=|A B|, gdzie operator , to rnica symetryczna. (Warianty: zamiast
rnicy symetrycznej rozwi zadanie dla sumy, iloczynu, rnicy...)
29.Dane s 3 tablice A,B,C cakowite uporzdkowane rosnco. Napisz fragment
programu obliczajcy liczb tych elementw, ktre wystpuj jednoczenie
we wszystkich trzech tablicach.
30.W fabryce Bardzo Skomplikowanych Urzdze zainstalowano tam produkcyjn
obsugiwan przez roboty. Kady robot w danym dniu ma zaprogramowane
wykonywanie dokadnie jednej czynnoci. Czynnoci oznaczamy liczbami
naturalnymi. Aby zmontowa urzdzenie, naley wykona okrelone czynnoci
w zadanym porzdku. Dane urzdzenie daje si zmontowa, jeli roboty
wykonujce wszystkie operacje konieczne dla zmontowania urzdzenia s
ustawione (niekoniecznie obok siebie) we waciwej kolejnoci wzdu
tamy. W tablicy C: array [1..m] of integer zakodowane s czynnoci w
porzdku koniecznym do zmontowania pewnegourzdzenia U. W tablicy R:array
[1..n] of integer zakodowane s czynnoci wykonywane przez kolejno stojce
przy tamie roboty. Napisz funkcj logiczn, ktra przyjmie warto true
wttw gdy urzdzenie U daje si wykona przy tamie zadanej tablic R.
31.Dana jest tablica A: array[1..n] of real, n\ge 1. Nadaj zmiennej x warto
rwn min1<= k<= n | 1<= i <= k: A[i] - k+1<= i <= n A[i]|
Uzasadnij poprawno programu, najlepiej wpisujc odpowiednie niezmienniki
i wyjaniajc ich uycie. Podaj maksymaln liczb porwna i przypisa,

ktre program wykona.


32.Cig liczbowy x1,...,xn jest bitoniczny, wtedy i tylko wtedy, gdy istnieje
1 <= m <= n takie, e x1 < x2 < ... < xm > xm+1 > ... > xn.
a) Napisz funkcj bitoniczny(var A:tab):Boolean, ktra stwierdzi, czy cig
zapisany w tablicy A jest bitoniczny.
b) Napisz funkcj max(var A: tab):Real obliczajc maksimum cigu
bitonicznego umieszczonego w tablicy A.
c) Napisz procedur sort(var A, B: tab); przepisujc elementy cigu
bitonicznego umieszczonego w tablicy A do tablicy B w kolejnoci
niemalejcej.
33.W dwch tablicach T[1..n], S[1..n] (n>0) znajduj si wartoci cakowite
nieujemne. Napisz fragment programu, ktry zmiennej logicznej tesamesumy
nada warto true, jeli istniej takie indeksy 1<=i,j<=n, e
k=1iT[k]=k=1jS[k].
34.Tablica A jest uporzdkowana niemalejco. Przepisz jej wartoci do tablicy
B tak, aby B bya uporzdkowana wg. wartoci bezwzgldnych.
35.Cig nazwiemy naprzemiennym, jeli kade dwa ssiadujce wyrazy cigu maj
przeciwne znaki (przyjmujemy, e zero nie ma znaku). W tablicy T[1..n] of
real zadany jest cig t_n liczb rzeczywistych. Napisz fragment programu,
ktry obliczy warto najwikszej sumy elementw pewnego spjnego i
naprzemiennego podcigu cigu t_n, czyli max(k=ij t_k: 1 <= i <= j <= n) i
cig t_i,...,t_j jest naprzemienny
36.Oblicz maksymaln rnice indeksw midzy elementami o rwnych wartociach
w tablicy A.
37.Sprawd, czy w tablicy A istniej takie trzy kolejne elementy, e suma
dwch pierwszych rwna jest trzeciemu.
38.Dla n=2k przestaw elementy tablicy A tak, eby wszystkie wartoci A[1..k]
byy mniejsze lub rwne wszystkim wartociom A[k+1..n].
39.Danych jest n liczb zespolonych we wsprzdnych biegunowych. Argumenty
gwne dane s w stopniach w tablicy Arg[1..n] of Real, a moduy w tablicy
R[1..n] of Real. Wiadomo, e dla kadego 1<=i<=n: 0<=Arg[i]<=180, R[i]>0.
Napisz fragment programu, ktry zmiennej logicznej kwadrat nada warto
true wtedy i tylko wtedy, gdy istnieje kwadrat o wierzchoku w rodku
ukadu wsprzdnych zawierajcy wszystkie dane liczby.
40.Transpozycja permutacji, to zamiana jej dwch ssiednich elementw. Dwie
permutacje maj t sam parzysto, jeli istnieje parzysta liczba
transpozycji przeksztacajcych jedn z nich na drug. Dane s dwie
rnowartociowe tablice A,B:array[1..n] of 1..n reprezentujce dwie
permutacje (na i-tym miejscu numer elementu, ktry w wyniku wykonania
permutacji tam trafi). Napisz fragment programu, ktry zmiennej
tasama:Boolean nada warto true wtedy i tylko wtedy, gdy permutacje
zapisane w tablicach A i B maj t sam parzysto.
41.Dana jest tablica C:array[1..m] of Integer o wartociach nieujemnych oraz
dwie liczby a,b:Longint. Napisz fragment programu, ktry zmiennej
logicznej jest nada warto true wtedy i tylko wtedy gdy istniej takie
liczby 1<= i<= j<= m, e a<=k=ij C[k]<= b.
42.Dana jest tablica t: array[1..2*n] of Integer dla staej cakowitej N
wikszej od zera. Dla i,j takich, e 1<= i<= j<= N mwimy, e spjny
fragment tablicy T[i] T[i+1] ... T[j] jest lustrzanym fragmentem w T,jeli
T[i] = T[2*N+1 i],T[i+1] = T[2*n i],...,T[j] = T[2*N+1 -j].Napisz
fragment programu, ktry dla danej tablicy T oblicza dugo najduszego
fragmentu lustrzanego w T. Jeeli T nie ma adnego fragmentu lustrzanego,
to odpowied brzmi 0.
43.Powiemy, e tablica T jest posortowana wierszowo wttw gdy kady wiersz
tablicy T jest posortowany, (a kolumnowo gdy kada kolumna tablicy T jest
posortowana). Dana jest tablica T[1..n,1..m] of real posortowana zarwno
wierszowo jak i kolumnowo oraz liczba x: real. Napisz fragment programu,
ktry ustali warto zmiennej jest na true wttw gdy w tablicy T istnieje
element o wartoci x.
44.Napisz fragment programu, ktry tak poprzestawia elementy tablicy
A[1..n,1..m] of real, aby bya posortowana zarwno wierszowo, jak i
kolumnowo.
45.Tablica A posortowana jest cyklicznie, jeli istnieje taki indeks 1<=i<=

n, e cig A[i+1],A[i+2],...,A[n], A[1],...,A[i] jest posortowany rosnco.


Znajd w cyklicznie posortowanej tablicy jej najwiksz warto.
46.Przesu tablic A cyklicznie w prawo o 1 pozycj, to znaczy e kady
element poza ostatnim ma si znajdowa o jedn pozycj na prawo, a element
ostatni znajdzie si na pierwszej pozycji.
47.Przesu tablic A cyklicznie w prawo o k pozycji dla dowolnego k
cakowitego.
48.Podaj gramatyk generujc jzyk {akbman: k,m,n s nieujemne i takie e k+m
n}. Uzasadnij poprawno podanej gramatyki.
49.Podaj gramatyk, ktra generowaaby wyraenia arytmetyczne dopuszczajce
potgowanie (oznaczone symbolem ^), bdce dziaaniem o najwyszym
priorytecie i prawostronnie cznym (czyli np. wyraenie 3*2^1^2 + 5*2
powinno da warto 16).
50.Podaj gramatyk generujc wszystkie liczby podzielne przez 3
a) w systemie dziesitnym,
b) w systemie dwjkowym.
51.Podaj gramatyk generujc jzyk wszystkich sw nad alfabetem {a,b}
takich, e nigdzie nie wystpuj trzy a obok siebie.
52.Podaj gramatyk, ktra generuje nad alfabetem {(,)} jzyk sw postaci(n)n
dla n>=0,
a) dowolnej poza sowami z poprzedniego podpunktu
b) poprawnie zbudowanych wyrae nawiasowych,
c) dowolnej poza sowem (()).
53.Podaj gramatyk generujc jzyk wszystkich napisw nad alfabetem {a,b},
ktre nie zawieraj trzech liter a wystpujcych obok siebie.
54.Podaj gramatyk generujc jzyk wszystkich napisw nad alfabetem {a,b},
ktre maj parzyst liczb liter a, ale adne dwa a nie wystpuj obok
siebie.
55.Dana jest gramatyka G nad alfabetem {a,b} o nastpujcych produkcjach:
S ::= |aSa | bSb. Podaj gramatyk jzyka {a,b}* \ L(G). Wyka jej
poprawno.
56.Napisz gramatyk generujc wszystkie liczby naturalne w zapisie
dwjkowym, ktre maja t sam liczb jedynek na parzystych i nieparzystych
miejscach.
57.Dana jest gramatyka G nad alfabetem {0,1} o nastpujcych produkcjach:
A::=AA0 | 1. Napisz fragment programu sprawdzajcy, czy w danej tablicy A
wypenionej zerami i jedynkami zapisane jest sowo, ktre naley do jzyka
tej gramatyki.
58.Podaj gramatyk dla jzyka nad alfabetem \a, b\, zoonego ze sw, w
ktrych liczba wystpie symbolu a jest parzysta i adne dwa symbole a nie
wystpuj obok siebie.
59.Wyraenie jest zdefiniowane przez gramatyk o nastpujcych produkcjach:
a) <wyraenie>::= <a>|<a><mniej><wyraenie>
b) <a>::=<b>|<a><wicej><b>
c) <b>::=<c>|<c>+<b>
d) <c>::=<liczba>|(<wyraenie>)
e) <liczba>::=<cyfra>|<liczba><cyfra>
f) <cyfra>::=0|1|2|3|4|5|6|7|8|9|
g) <mniej>::= div |h) <wicej>::=*|^
Wyznacz warto nastpujcych wyrae i zaznacz nawiasami kolejno
wykonywania dziaa, tak aby bya ona zgodna z wyprowadzeniem tych wyrae
w podanej gramatyce:
a) 51+23 div 6^2
b) 2^1+3*2
c) 20*3-(7-3-1)-7 div 2
60.Dany jest nastpujcy fragment programu; wszystkie zmienne typu integer,
x>=0)
a:=0; p:=1; s:=3; r:=3;
while p<=x do begin {s=3(a+1)(a+1), r=3(2a+1) ...
(*)}
a:=a+1;
r:=r+6;
s:=s+r;

p:=p+s-(r div 2)-1;


end;
Poka, e warunki na r i s podane w wierszu oznaczonym gwiazdk s
niezmiennicze wzgldem ptli programu. Ktre z poniszych warunkw mona
doda nie zaburzajc niezmienniczoci wzgldem podanej ptli?
a) p>a2
b) p>a3
c) p>a4
d) p >= ln(a+1)
e) p <= (a+1)2
f) p <= (a+1)3
g) p <= (a+1)4
Powyszy fragment programu nadaje zmiennej a warto pewnej funkcji
zmiennej~ x. Wyznacz t funkcj i udowodnij, e podana ptla warto tej
funkcji wylicza.
61.Dane s dwie funkcje f,g:{a,b}*Z okrelone w nastpujcy sposb:
f()=0, f(aw)=g(w)+1; f(bw)=g(w)-1
g()=0, g(aw)=f(w)-1; g(bw)=f(w)+1 dla kadego sowa w{a,b}*.
Niech L={w {a,b}*:f(w)=0}. Podaj gramatyk jzyka L.
Piotr Chrzstowski-Wachtel