F(P):
Ha A(P)>=0 akkor F:=A(P) különben I:=F(2*P) : J:=F(2*P+1) Ha I= -1 vagy J= -1 akkor F:=-1 különben Ha A(P)= -1 akkor F:=I+J különben Ha A(P)= -2 akkor F:=I-J különben Ha A(P)= -3 akkor F:=I*J különben Ha A(P)= -4 akkor Ha J=0 akkor F:= -1 különben F:=I/J különben F:= -1 Elágazások vége Eljárás vége. |
A. Mi lesz az A tömbben levő számok pontos szerepe, jelentése?
B. Mi lesz F(1) értéke, ha az A tömb tartalma [-2, 7, 5]?
C. Mi lesz F(1) értéke, ha az A tömb tartalma [-1, -3, -4, 2, 2, 6, 2]?
D. Milyen esetekben ad F(1) függvényeljárás-hívás -1-et eredményül?
A programrészletben használt utasítások jelentése a következő:
RIGHT$(T$,i) | a T$ szöveg jobb szélső i db karaktere |
LEFT$(T$,i) | a T$ szöveg bal szélső i db karaktere |
MID$(T$,k,i) | a T$ szöveg középső i db karaktere a k-adiktól kezdve |
LEN(T$) | a T$ szöveg karaktereinek száma |
CHR$(k) | a k kódú karakter |
1000 S=1 : B$=LEFT$(A$,1)
1010 IF B$=A$ THEN 1200 1020 FOR I=2 TO LEN(A$) 1030 IF RIGHT$(B$,1)=MID$(A$,I,1) THEN S=S+1 : GOTO 1090 1040 IF S>2 THEN B$=B$+CHR$(0)+CHR$(S) 1050 IF S=2 THEN B$=B$+RIGHT$(B$,1) 1060 B$=B$+MID$(A$,I,1) : S=1 1090 NEXT 1200 .. |
A. Mi lesz B$-ban az 1200-as sorban, ha A$ tartalma kezdetben
C. Milyen esetekben nem lehet előállítani B$-ból A$ értékét?
D. Egészítsd ki a programot két új sorral (1100 és 1110) úgy, hogy B$-ból A$ mindig előállítható legyen!
A. Mit tartalmaz a megoldásban a B vektor a (*) ponton?
B. Mit tartalmaz a megoldásban a B vektor a (**) ponton?
C. Mit tartalmaz
a megoldásban a B és a C vektor a (***) ponton?
Ciklus I=0-tól M-ig
B(I):=0 Ciklus vége Ciklus I=1-től N-ig B(A(I)):=B(A(I))+1 Ciklus vége (*) Ciklus I=1-től M-1-ig B(I):=B(I)+B(I-1) Ciklus vége (**) Ciklus I=1-től N-ig C(B(A(I))):=A(I) : B(A(I)):=B(A(I))-1 Ciklus vége (***) |
4. feladat: Csak párhuzamosan! (16 pont)
Add meg, milyen forgalmi szituációkat szimulálnak az F1, F2 ... eljárások
közül megírtak, illetve írd meg a szöveggel megadottakat! (A megoldásban
S a maximális sebességet jelenti.)
Ciklus I=N-től 1-ig -1-esével
Ciklus J=1-től 2-ig F1(I,A(I,J),J,K) : F1(I,A(I,J),3-J,L) Ha K=A(I,J) és A(I,J)<S akkor F2(I,J) különben ha K=A(I,J) akkor F3(I,J) különben ha L<A(I,J) akkor F4(I,J,K) különben F5(I,J,L) Ciklus vége Ciklus vége |
F1(I,T,J,K):
|
F2(I,J):
|
F3(I,J):
|
F4(I,J,K):
|
F5(I,J,L):
|
Ciklus I=1-től N-1-ig
Ciklus J=1-től M-1-ig Ha szintvonal(I,J,I+1,J) akkor Szakaszrajz(I*S,J*S-S/2,I*S,J*S) Ha szintvonal(I,J,I,J+1) akkor Szakaszrajz(I*S-S/2,J*S,I*S,J*S) Ha szintvonal(I+1,J,I+1,J+1) akkor Szakaszrajz(I*S+S/2,J*S,I*S,J*S) Ha szintvonal(I,J+1,I+1,J+1) akkor Szakaszrajz(I*S,J*S+S/2,I*S,J*S) Ciklus vége Ciklus vége |
Szintvonal(I,J,K,L):
Szintvonal:=(T(I,J)<SZ és T(K,L)>=SZ) vagy (T(I,J)>=SZ és T(K,L)<SZ) Eljárás vége. |
Ez a megoldás pontnégyesekre bontja a síkot. Ha a pontnégyes egy pontpárja között átmegy szintvonal, az azok közötti felezőpontot összeköti a pontnégyes által meghatározott négyzet középpontjával. Pl:
A. Milyen értékeket vehet fel a B változó a 12310-es sorban?
B. Hogyan változtatja a ciklusmag az A és a B értékét?
C. Legfeljebb
hány kódot kell kipróbálnia a betörőnek, hogy biztosan kinyithassa széfet
és melyek lehetnek ezek?
...
12300 B=INT(ABS(X)) 12310 B=B-INT(B/3)*3+1 12320 INPUT "Mi a titkos kód", A 12325 IF A<100 OR A>999 THEN GOTO 07 12330 A=INT(A-33)*2 12340 FOR I=1 TO 2 12345 C=INT(A/10) 12350 B=B+A-C*10 12360 A=C 12370 NEXT 12380 IF B<>A OR B>3 THEN GOTO 12300 12390 PRINT "Máris nyitom!" ... |
A. Milyen értéket számít ki a függvény?
B. Mi M szerepe?
C. Mi A és B szerepe?
D. Tetszőleges
pozitív X és M esetén adj meg olyan A és B kezdőértékpárt, amely biztosan
jó!
Function Rekurziv(X,M,A,B:Real):Real;
Var C:Real; Begin C:=(A+B)/2; If C-A<M Then Rekurziv:=C Else If C*C>X Then Rekurziv:=Rekurziv(X,M,A,C) Else Rekurziv:=Rekurziv(X,M,C,B) End{Rekurziv}; |
A.
FUNCTION ismerjFel(l1, l2 : Lista): Lista:
RETURN IF l1=NIL Then l2 ELSE hozzLétre(l1.feje, ismerjFel(l1.farka, l2)) ENDIF. |
FUNCTION találjKi(e:Elem, l:Lista): Lista:
RETURN IF l=NIL THEN l ELSE IF e=l.feje THEN l.farka ELSE hozzLétre(l.feje, találjKi(e, l.farka)) ENDIF. |
C. ismerjFel(l1, hozzLétre('+', l2))=?
D. találjKi('E', l1)=?