{=== Programoz s alapjai === Nagyz rthelyi - 1998. 11. 26. === NZ981126.txt Minden sz mozott feladat megold s t kl”n lapra Ąrja! Minden lapnak csak az egyik fel‚re Ąrhat. A lap tetej‚re Ąrja fel balra a feladat sz m t, jobbra a nev‚t, k˘dj t, tank”rsz m t valamint laborcsoportja id“pontj t ‚s term‚t! A megold shoz haszn lhat bels“ elj r sokat ‚s fggv‚nyeket, de csak ezek haszn lhatnak glob lis v ltoz˘t, a feladatk‚nt kapott elj r sok illetve fggv‚ny nem. --------------------------------------------------------------------------- 1. [ 1-1 pont ] Meg kell  llapĄtani, hogy az al bbi programr‚szek hat s ra mi fog kiĄr˘dni. Az is fontos, hogy mi kerl Łj sorba. Csak a v‚gleges megold st adja be! A r‚szletek egy olyan programban helyekednek el, amelynek a deklar ci˘s r‚sze a k”vetkez“: < v-def.pas > const n=2; type tomb =array [1..n] of boolean; r =record nev :packed array [1..2] of char; suly :integer; end; rectomb =array [1..3] of r; halmaz =set of 1..30; mutato =^lancrec; lancrec =record kulcs :1..40; lanc :mutato; end; lakas =(alberlet,tarsberlet,foberlet,orok,kastely); var e1,e2,e3 :integer; m1,m2,m3 :mutato; v1,v2,v3 :real; b1,b2,b3 :boolean; ch1,ch2,ch3 :char; rect :rectomb; t1 :array [1..10] of integer; t2 :array [1..n] of tomb; l1,l2 :lakas; h1,h2,h3 :halmaz; procedure s (var j :integer; k :integer); var e1 :integer; begin e1:=j+1; j:=j div k; k:=k-e1; writeln(e1:5, j:5, k:5); end; function f (l ,m :integer) :boolean; begin f:=l+m<10; end; --- A --- e1:=1; for l1:=alberlet to orok do e1:=e1+ord(l1); writeln (e1 mod 3 :3); --- B --- m1:=nil; for e1:=8 to 12 do begin new(m2); m2^.kulcs:=e1 div 2; m2^.lanc:=m1; m1:=m2; end; writeln (m1^.lanc^.lanc^.lanc^.kulcs :3); --- C --- for e2:=1 to 10 do t1[e2]:= 11-e2; for e1:=1 to 3 do begin e2:=t1[e1]; t1[e2]:=e1; end; for e1:=1 to 10 do write (t1[e1] :3); writeln; --- D --- e1:=7; e2:=4; while not f(e1,e2) do s(e1,e2); writeln; -------------------------------------------------------------------------- 2. [2 pont] Adott a k”vetkez“, d tum t rol s ra haszn lt tĄpus: type datum = record ev, ho, nap :integer; end; Deklar ljon fggv‚nyt, amely ”sszehasonlĄt k‚t ilyen d tumot, ‚s null t ad vissza, ha egyenl“ek, tetsz“leges pozitĄv eg‚szt, ha az els“ d tum nagyobb, azaz k‚s“bbi, illetve tetsz“leges negatĄv eg‚szt, ha az els“ kisebb. Tudjuk, hogy a param‚terk‚nt kapott d tumok helyes ‚rt‚keket tartalmaznak. -------------------------------------------------------------------------- 3. [2 pont] K‚szĄtsen teljes programot, amely a szabv nyos inputr˘l beolvasott sz”vegben megkeresi a leghosszabb, azaz legt”bb karakterb“l  ll˘ mondatot, ‚s azt kiĄrja a szabv nyos kimenetre. Tudjuk, hogy minden mondat v‚g‚n . ! vagy ? van, ‚s hogy egyik mondat sem hosszabb 1000 karaktern‚l. ============================ BEUGR• VGE ================================= 4. [2 pont] A k”vetkez“ tĄpus egy banksz mla adatait jelenti: const szsz = ...; type szamla = record szam : packed array [1..szsz] of char; egyenleg: real; tulajdonos: ... ... end; Adott az el“z“ napi egyenlegek ‚s a napi forgalom ilyen elemekb“l  ll˘ file-ja, mindkett“ a sz mlasz mok szerint n”vekv“ sorrendbe rendezett. A napi forgalom file-j ban az egyenleg mez“ben az adott napon t”rt‚nt bet‚t eset‚n pozitĄv, kiv‚t eset‚n negatĄv sz m  ll, egy sz mlasz mhoz t”bb rekord is lehet. K‚szĄtsen programot, mely elk‚szĄti a nap v‚gi egyenlegek file-j t. -------------------------------------------------------------------------- 5. A k”vetkez“ rec definĄci˘ egy bin ris fa elem‚t adja meg: type mut =^rec; rec = record adat :real; bal, jobb :mut; end; A) K‚szĄtsen elj r st, amely kiĄrja egy ilyen fa L-edik szintj‚nek elemeib“l az "adat" -ok ‚rt‚k‚t a szabv nyos outputra. A fa gy”k‚releme az 1. szinten van, ennek gyerekei (ha vannak) a 2. szinten, stb. [1 pont] B) K‚szĄtsen fggv‚nyt, amely megadja egy ilyen bin ris fa adott szintj‚n tal lhat˘ elemek sz m t. [1 pont] V lasszon megfelel“ param‚tereket! Nem haszn lhat glob lis v ltoz˘t!