Egy Pascal-szerű programnyelven írtunk programrészletet az alábbiakban. Ezen a nyelven az elágazások és a ciklusok végét is az End
alapszó jelzi.
l
, az m
illetve az n
változók?l:=False; For i:=1 to 100 do If a[i]>0 then If l then If a[i]<m then m:=a[i]; n:=i; End; else l:=True; n:=i; m:=a[n]; End; End; End;
Az N (>1) elemű A vektorban egész számok vannak. Milyen vektorbeli értékek esetén írnak ki az alábbi programok IGEN választ?
V:=IGAZ Ciklus i:=2-től N-ig V:=V AND (A(i)>A(i-1)) Ciklus vége Ha V akkor Ki: ”IGEN”
V:=HAMIS Ciklus i:=2-től N-ig V:=V OR (A(i)>A(i-1)) Ciklus vége Ha V akkor Ki: ”IGEN”
Az A és B halmazok egész számokat tartalmaznak. Mindkét halmaznak van olyan eleme, amelyik a másiknak nem eleme. Használni fogjuk a következő utasításokat:
nemüres(H) | igaz, ha a H halmaznak legalább egy eleme van. |
eleme(e, H) | igaz, ha az e elem benne van a H halmazban. |
üreshalmaz | üres halmazt ad eredményül. |
egyeleme(H) | a H halmaz egy tetszőleges elemét adja eredményül. |
hozzáad(e,H) | az e elemet berakja a H halmazba. |
kivesz(e,H) | az e elemet kiveszi a H halmazból. |
Valami: H:=üreshalmaz Ciklus amíg nemüres(A) vagy nemüres(B) Ha nemüres(A) akkor e:=egyeleme(A) különben e:=egyeleme(B) Ha eleme(e,A) akkor kivesz(e,A) Ha eleme(e,B) akkor kivesz(e,B) hozzáad(e,H) Ciklus vége Eljárás vége.
Egy programozási nyelvben az elágazás (IF utasítás) végét mindig a FI, a ciklus (DO utasítás) végét pedig az OD alapszó jelzi. Készítettünk egy algoritmust, amely ellenőrzi az IF-FI, illetve a DO-OD párok helyes párosítását. A megoldásban az N elemű X vektor tartalmazza a program szavait.
Ellenőr: A:=0: B:=0 Ciklus I=1-től N-ig Elágazás X(I)="IF" esetén A:=A+1: V(A):=B X(I)="DO" esetén B:=B+1 X(I)="FI" esetén A:=A-1: Ha A<0 akkor HIBA1 Ha V(A+1)<B akkor HIBA2 Ha V(A+1)>B akkor HIBA3 X(I)="OD" esetén B:=B-1: Ha B<0 akkor HIBA4 Elágazás vége Ciklus vége Ha A>0 akkor HIBA5 Ha B>0 akkor HIBA6 Eljárás vége.
Milyen hibajelenségek váltják ki a HIBA1..HIBA6 hibajelző utasításokat?
Kukutyinban N napon keresztül mértük a hőmérsékletet. Az egyes napi mérések értékét az A[1..N] tömb tartalmazza.
Valami: L:=hamis Ciklus I=1-től N-ig Ha A[I]<0 akkor Ha nem L akkor L:=igaz: P:=I: M:=A[I] különben Ha A[I]>M akkor P:=I: M:=A[I] Elágazások vége Ciklus vége Eljárás vége.
Az alábbi algoritmus az A, B, C (mindhárom >0) számok alapján számolja ki D értékét.
Valami(A,B,C,D): Ciklus amíg nem(A=B és B=C) Ha A>B akkor A:=A-B Ha B>C akkor B:=B-C Ha C>A akkor C:=C-A Ciklus vége D:=A Eljárás vége.
Az alábbi algoritmus N nemnegatív adatot kap bemenetként (N>2, X(1)>0, X(N)>0, X(i)≥0) az X vektorban, amelyekből több értéket számol ki:
Valami(N,X,A,B,C,E): A:=0; B:=0; C:=0; D:=0 Ciklus i=2-től N-ig Ha X(i-1)>0 és X(i)=0 akkor D:=0 Ha X(i)=0 akkor Ha A=0 akkor A:=i D:=D+1; B:=i Elágazás vége Ha X(i)>0 és X(i-1)=0 akkor C:=C+1; E(C):=D Ciklus vége Eljárás vége.
Az alábbi sorozat első három tagja rögzített, a továbbiakat pedig egy algoritmus számolta, minden negyediket ugyanazzal a módszerrel, amihez egyes esetekben az előző tagokat is felhasználhatta:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
1 | 3 | 2 | 6 | 7 | 4 | 10 | 12 | 11 | 14 | 18 | 8 | 15 | 20 | 26 |
A(1):=1; A(2):=3; A(3):=2 Ciklus i=1-től N-ig A(4*i):=□□□□□□□□□□□ A(4*i+1):=□□□□□□□□□□□ A(4*i+2):=□□□□□□□□□□□ A(4*i+3):=□□□□□□□□□□□ Ciklus vége
Egy kiállítás sorozat N egymást követő napból áll, amelyet egyetlen teremben rendeznek meg. M kiállító jelentkezett. Az egyes kiállítók megadták, hogy mely napon szeretnék megrendezni a kiállításukat (1≤Ki≤N, növekvő sorrendben, egy napra csak egy jelentkező van).
Minden kiállítónak X nap áll rendelkezésre a kiállítás berendezéséhez és a kiállítás után X nappal át kell adniuk a termet a következő kiállítónak. Emiatt lehetnek ütközések. (Például X=2 esetén 2 napjuk van a berendezésre, 1 nap a kiállítás és 1 nap marad a terem kiürítésére.) Az első kiállító építkezése és az utolsó lebontása lehet az N napon kívül is.
A következő kérdésekre ad válasz az alábbi algoritmus:
Egészítsd ki az alábbi algoritmust úgy, hogy a téglalapok helyére írhatsz tetszőlegesen hosszú kifejezést!
Kiállítás(N,M,K,X,A,B,C): A:=; B:=; Ha akkor C:= különben C:=0 Ciklus i=2-től M-ig Ha akkor B:= Ha akkor C:= Ciklus vége Ha akkor C:= Eljárás vége.