You are on page 1of 120

Bevezets

A feladatgyjtemny szerkezetileg 3 nagy rszbl ll. Minden rsz elejn


mintapldk tallhatk, majd feladatok.
Az els fejezet a programozsi alapismereteket elmlyt feladatokat tartalmaz.
Itt tallhatk:
Az elemi s sszetett adattpusokat feldolgoz feladatok.
Adatok kiratsa kpernyre, adatok beolvassa billentyzetrl
Itercik s szelekcik
Egyszer pldk az eljrsok s fggvnyek hasznlatra.
A msodik fejezet a programozsi ttelek elmlytst segt pldkat tartalmaz. Az
egyes programozsi tteleknl az ltalnos megold algoritmus is megtallhat.
A harmadik fejezetben a szveges s tpusos llomnykezelshez kapcsold
pldk tallhatk.

I Elemi programozs
I.1 Elemi utastsok
Mintapldk:
1.)

Szmtsuk ki s rassuk ki 5 szm tlagt!


i. Feladatvizsglat:
Bemen adatok:
a, b, c, d, e: egsz szmok
Kimen adat:
f: szmok tlaga, vals szm
A megolds logikja:
Elszr szmoljuk ki a szmok sszegt, s troljuk az f vltozban, majd az f et
elosztjuk ttel, gy a szmok tlagt kapjuk
ii. Feladat megoldsa:

Folyamatbra

Start
Be:
a,b,c,d,e
F:=a+b+c+d+e

f:=f/5

Ki: F

Stop

Mondatszer lers:
Vltozk
a,b,c,d,e: egsz
f: vals
Program tlag
Be: a,b,c,d,e
f:=a+b+c+d+e
f:=f/5
Ki: f
Program vge.
Feladat pascal kdja:
program atlag;
uses crt;
var
a,b,c,d,e: byte;
f: real;
begin
clrscr; {ezzel a paranccsal a kpernyt trljk}
writeln ('t szm tlaga');
writeln ('krem az els szmot');
readln (a);
writeln ('krem a msodik szmot');
readln (b);
writeln ('krem a harmadik szmot');
readln (c);
writeln ('krem a negyedik szmot');
readln (d);
writeln ('krem az tdik szmot');
readln (e);
f:=a+b+c+d+e;
f:=f/5;
writeln ('a keresett tlag:',f:10:2); {kt tizedesnyi pontossggal rja ki a szmot}
readkey;
end.
2.) Almt szeretnnk vsrolni. rjunk egy programot, amely billentyzetrl krje be
elszr azt, hogy mennyibe kerl egy kilogramm alma, majd azt, hogy hny kilogramm
almt szeretnnk venni. A program szmolja ki, hogy ennyi almrt hny forintot
fogunk fizetni.
i. Feladatvizsglat:
Bemen adatok:
N: hny kg almt vesznk, egsz szm
Ear: 1 kg alma ra, egsz szm
Kimen adatok:
Ar:a fizetend sszeg, egsz szm
A megolds logikja:
A vsrolni kvnt alma rt gy kapjuk meg, hogy az egysgrat sszeszorozzuk a
mennyisggel
3

ii. Feladat megoldsa:


Folyamatbra:

Start
Be: N,Ear
Ar:=Ear*N
Ki: Ar

Stop

Mondatszer lers:
Vltozk:
N,Ear,Ar: egsz
Program alma
Be: N, Ear
Ar:=N*Ear
Ki: Ar
Program vge
Feladat pascal kdja:
program alma;
uses crt;
var
Ear,N,Ar:integer;
begin
clrscr;
write ('Egy kg alma ra: ');
readln (Ear);
write ('Hny kg almt veszel: ');
readln (N);
Ar:=Ear*N;
writeln ('Ennyi alma ra ',ar,' forint.');
end.

3.) rjunk programot, amely beolvas kt termszetes szmot, az elsknt megadott


szmot maradkosan osszuk a msodikkal. A program rja ki a kt szm hnyadost s
maradkt. A program a beolvass utn hagyjon ki egy res sort.
i. Feladatvizsglat
Bemen adatok:
a,b: a kt szm, termszetes szmok
Kimen adatok:
m: a kt szm maradka, termszetes szm
h: a kt szm hnyadosa, termszetes szm
A megolds logikja:
A megoldshoz a div s a mod fggvnyeket hasznljuk. A div fggvny kt szm
hnyadost, mg a mod fggvny kt szm maradkt szmolja.
ii. Feladat megoldsa:
Folyamatbra:

Start
Be: a,b
m:=a mod b

h:=a div b

Ki: h,m

Stop

Mondatszer lers
Vltozk
a,b: egsz
m,h: egsz
Program osztas
Be: a,b
m:=a mod b
h:=a div b
Ki: m,h
Program vge.
5

Feladat pascal kdja:


program osztas;
uses crt;
var
a,b: integer;
m,h: integer;
begin
clrscr;
write ('Els szm: ');
readln (a);
write ('Msodik szm: ');
readln (b);
writeln; {res sort hagy ki}
h:= a div b; {a s b hnyadost szmolja}
m:=a mod b; {a s b maradkt szmolja}
writeln (a,':',b,'=',h,', maradk ',m);
end.

Feladatok
1) Krj be kt, egy napon belli, idpontot (elszr az rt, aztn a percet, vgl a
msodpercet). Szmtsd ki a kt idpont kzti klnbsget msodpercekben s rasd ki!
2) rj programot, amely bekr egy szmot, majd kirja a kis szorztblt erre a szmra
(1-tl 5-ig). A program a beolvass utn hagyjon ki egy res sort.
3) Krj be hrom termszetes szmot, ezek rendre 5, 2 s 1 koronsaink szmt
jelentik. Hatrozd meg, s rasd ki a teljes sszeget.
4) Krj be hrom termszetes szmot, ezek rendre 5, 2 s 1 forintosaink szmt
jelentik. Hatrozd meg, s rasd ki a teljes sszeget.
5) rj programot, amely bekri egy tglalap adatait, s kiszmolja a terlett, s a
kerlett.
6) rj programot, amely szgmrtket vlt t fokrl radinra.
7) Adott egy vals szm, hatrozd meg az abszolt rtkt!
8) Adott a skban kt pont. Szmold ki a tvolsgukat!
9) A kvetkez program szmtgpbe rsa nlkl hatrozd meg, hogy mit r ki a
kpernyre. rj egy rvidebb (egyszerbb) programot, amely vltoz hasznlata nlkl
kirja ugyanezt az zenetet a kpernyre. A teljes program maximum 5 soros legyen!
Program valtozo;
var
x: integer;
begin
x:=12;
write (x,'-');
x:=3;
write (x,'=');
writeln (12-x);
write (x+6,'+',x,'=');
x:=4*x;
writeln(x);
end.
10) Az albbi program begpelse nlkl prbld meg meghatrozni, mit fog kirni a
kpernyre. Ellenrzskppen a programot berhatod a szmtgpbe.
program szamok;
var
k:integer;
begin
k:=1;
writeln (k);
k:=k+1;
write (k);
k:=k+1;
writeln (k);
k:=k+1;
write (k);
k:=k+1;
write (k);
k:=k+1;
writeln (k);
end.

I.2 Elgazsok
A

Ktirny elgazs

Mintapldk
1.) Ksztsnk programot, amely bekr kt egsz szmot, majd kirja szavakkal, hogy
az els szm kisebb, nagyobb, vagy egyenl, mint a msodik szm.
i. Feladatvizsglat:
Bemen adatok:
a,b: egsz szmok
Kimen adatok:
Nincs kimen vltoz, szveges vlaszt adunk
A megolds logikja:
A kt szmot sszehasonltjuk, s a kapott eredmnyt kiratjuk a kpernyre.
ii. Feladat megoldsa:
Folyamatbra:
Start
Be:
a,b
igaz
a>b

Ki: az a nagyobb

a<b

Ki: az a kisebb

hamis

A kt szm
egyenl

Stop

Mondatszer lers:
Vltozk:
a,b: egsz
program eldnt
be: a,b
ha a>b akkor ki: az els szm a nagyobb
klnben
ha a<b akkor ki: az els szm a kisebb
klnben
ki: a kt szm egyenl
elgazs vge
program vge.
A feladat pascal kdja:
program osszehasonlit;
var
a,b:integer;
begin
write ('Krem az els szmot: ');
readln (a);
write ('Krem a msodik szmot: ');
readln (b);
if a<b then writeln ('Az 1. szm a kisebb.')
else
if a>b then writeln ('Az 1. szm a nagyobb.')
else writeln ('A kt szm egyenl.');
end.
2.) A hromszg hrom oldalnak ismeretben szmtsuk ki a kerlett, majd a
megadott Hron-kplet segtsgvel a terlett! Elszr vizsgljuk meg az adatokat,
hogy lehetnek-e egy hromszg oldalai! Ha hibs adatokat adtunk meg, akkor rassunk
ki egy tjkoztat zenetet!
i. Feladatvizsglat:
Bemen adatok:
a, b, c: a hromszg hrom oldala, legyenek egsz szmok
Kimen adatok:
k: a hromszg kerlete, mivel az oldalak egszek, gy a kerlet is egsz szm
t: a hromszg terlet, vals szm
Megolds logikja:
Hrom szakaszbl akkor szerkeszthet hromszg, ha brmelyik kettnek az sszege
nagyobb a harmadik szakasz hossznl. Elszr ezt vizsgljuk. Ha nem teljesl,
akkor hibajelzst kldnk a felhasznlnak, klnben matematikai kpleteket
alkalmazva kiszmoljuk a hromszg kerlett, majd a terlett.

ii. Feladat megoldsa:


Folyamatbra:

Start
Be:
a,b,c

igen
a+b<=c vagy
a+c<=b vagy
b+c<=a

nem

k:=a+b+c

s:=k/2

t:=sgrt(s*(s-a)*(s-b)*(s-c))
Ki: k,t

Stop

Mondatszer lers
Vltozk
a,b,c: egsz
t,k,s: egsz
Program
Be: a,b,c
Ha (a+b<c) vagy (a+c<b) vagy (b+c<a) akkor
ki: hibs adat
klnben
k:=a+b+c
s:=t/2
t:=sqrt(s*(s-a)*(s-b)*(s-c))
elgazs vge
ki: t,k
program vge.

10

A feladat pascal kdja:


program haromszog ;
uses crt ;
var
a,b,c : byte ;
k : byte ;
s,t : real;
begin
clrscr ;
writeln ('Krem az a oldal rtkt: ');
readln (a) ;
writeln ('Krem a b oldal rtkt: ');
readln (b);
writeln ('Krem a c oldal rtkt: ');
readln (c) ;
if (a+b<=c) or (a+c<=b) or (b+c<=a) then
writeln ('Sajnos hibsak az adatok!');
k:=a+b+c ;
s:=k/2 ;
t:=sqrt (s*(s-a)*(s-b)*(s-c)) ;
writeln ('A hromszg kerlete: ',k);
writeln ('A hromszg terlete: ',t:10:2);
readkey;
end.

Tbbg elgazs

Mintapldk
3.)

Olvassunk be egy ember letkort, s ettl fggen rjuk ki a kvetkez szveget:


0 - 13
gyerek
14 17
fiatalkor
18 23
ifj
24 59
felntt
60 vtl
ids
i. Feladat vizsglata:
Bemen adatok:
Kor: egsz szm
Kimen adatok:
Nincs kimen vltoznk, a program a szemly korcsoportjnak megnevezst adja
vissza.
Megolds logikja:
Beolvassuk a szemly letkort, majd vgignzzk, hogy melyik korcsoportba
tartozik, majd kiratjuk a korcsoportnak megfelel elnevezst.

11

ii. Feladat megoldsa:


Folyamatbra:
Start
Be: kor
igaz
Kor=0..13

Ki:gyerek

hamis
igaz
Kor=14..17

Ki: fiatalkor

hamis
igaz

Ki: ifj

Kor=14..17
hamis
Kor=14..17

igaz

Ki: felntt

hamis
Ki: ids
Start
Mondatszer lers
Vltozk
Kor: egsz
Program korcsoport
Be: kor
Elgazs
Kor=0..13 esetn ki: gyerek
Kor=14..17 esetn: ki: fiatalkor
Kor=18..23 esetn: ki: ifj
Kor=24..59 esetn ki: felntt
Klnben ki: ids
Elgazs vge
Program vge.

12

Feladat pascal kdja:


program korcsoport ;
var
kor: integer;
begin
write ('krem a keresett letkort! ');
readln (kor);
case kor of
0..13: write (' gyerek');
14..17: write ('fiatalkor');
18..23: write ('ifj');
24..59: write ('felntt');
else write ('ids');
end;
end.
4.) rjunk programot, amely bekri az ppen aktulis hnap szmt, s kirja a hnap
nevt. Ha nem 1 s 12 kztti szmot adunk meg, akkor a program jelzi, hogy 'Nincs
ilyen hnap'.
i. Feladat vizsglata:
Bemen adatok:
Honap: egsz szm, a hnap szmt adjuk meg benne.
Kimen adatok
Nincs kimen vltoznk, a hnap nevt rja ki a programunk.
A megolds logikja:
Ellenrizzk, hogy a bekrt hnapszm melyik hnapnak felel meg, ha nem
hnapszmot adtunk meg, akkor rjuk ki, azt, hogy nem hnapszm.
ii. Feladat megoldsa:
Mondatszer lers:
Vltoz
Honap: egsz
Program honapok
be: hnap
Elgazs
honap=1 esetn ki: janur
honap=2 esetn ki: februr
honap=3 esetn ki: mrcius
honap=4 esetn ki: prilis
honap=5 esetn ki: mjus
honap=6 esetn ki: jnius
honap=7 esetn ki: jlius
honap=8 esetn ki: augusztus
honap=9 esetn ki: szeptember
honap=10 esetn ki: oktber
honap=11 esetn ki: november
honap=12 esetn ki: december
klnben ki: nem hnapszm
Elgazs vge
Program vge
13

Feladat pascal kdja:


program honapok;
var
honap:integer;
begin
Write ('Adja meg az aktulis hnap szmt: ');
Readln (honap);
case honap of
1: Write ('Janur');
2: Write ('Februr');
3: Write ('Mrcius');
4: Write ('prilis');
5: Write ('Mjus');
6: Write ('Jnius');
7: Write ('Jlius');
8: Write ('Augusztus');
9: Write ('Szeptember');
10: Write ('Oktber');
11: Write ('November');
12:Write ('December');
else Write ('Nincs ilyen hnap');
end;
end.
5.) Olvassunk be egy karaktert a billentyzetrl. Dntsk el, hogy szmjegyet,
magnhangzt, vagy mssalhangzt olvastunk be! Elg, ha az angol ABC betit
vizsglja a program! Ha ezek kzl egyik se, akkor rjuk ezt vlasznak!
i. Feladat vizsglata:
Bemen adatok:
a: ebbe vltozba olvassuk be a karaktert a billentyzetrl, karakter tpus
Kimen adatok:
Nincs kimen vltoznk, szveges vlaszt adunk
Megolds logikja:
Beolvasunk a billentyzetrl egy karaktert, majd ellenrizzk, hogy melyik
csoportba tartozik a karakter, majd ezt adjuk vlaszul!
ii. Feladat megoldsa:
Mondatszer lers:
Vltoz:
a: karakter
Program karakter
be: a
Elgazs
a=0..9 esetn ki: szmjegy
a=a,A,e,E,i,I,o,O,u,U esetn ki: magnhangz
a=b..d,f..h,j..n,p..t,v..z esetn ki: mssalhangz
a=B..D,F..H,J..N,P..T,V..Z esetn ki: mssalhangz
klnben ki: a beolvasott karakter nem bet, s nem szmjegy
Elgazs vge
Program vge
14

A feladat pascal kdja


program karakter;
uses crt;
var
a: char;
begin
clrscr;
write ('olvass be egy tetszleges karaktert');
readln (a);
case a of
'0'..'9':writeln('szmjegy');
'a','e','i','o','u','A','E','I','O','U': writeln ('magnhangz');
'b'..'d','f'..'h','j'..'n','p'..'t','v'..'z': writeln ('mssalhangz');
'B'..'D','F'..'H','J'..'N','P'..'T','V'..'Z': writeln ('mssalhangz');
else
writeln ('a beolvasott karakter nem szmjegy s nem bet');
end;
readkey;
end.

15

Feladatok
11) Olvass be egy szmot! rj programot, amely eldnti, hogy -30 s 40 kztt van-e?
12) rj programot, amely kiszmolja kt tetszleges szm hnyadost! Vigyzza 0-val
val osztsra!
13) rj programot, amely bekr kt szmot, ha azonos eljelek, akkor rja ki a
szmokat, klnben krjen jabb szmprt!
14) rj programot, amely egy tetszleges vals szmrl eldnti, hogy egsz szm e,
ebben az esetben rassuk ki!
15) rj programot,amely egyetlen if utasts segtsgvel eldnti, hogy egy tetszleges
szm egyenl-e 1, 2, 3 szmok valamelyikvel!
16) rj programot, amely egy tetszleges pozitv, de 1 millinl kisebb szmrl,
megllaptja, hogy hny jegy a szm?
17) rj programot a msodfok egyenlet megoldsra. A lehetsges eseteket vizsgld!
(a<>0, a diszkriminns pozitv vagy nulla kell legyen).
18) rj programot, amely egy hnapszma alapjn, eldnti, hogy melyik vszakhoz
tartozik?
19) rj programot, amely egy beolvasott nap szmrl eldnti, hogy a hnap melyik
negyedbe esik! (1-10: I. negyed, 11 20: II. negyed, 21.-30: III. negyed, 31: IV.
negyed)
20) rj programot, amely adott vszmrl eldnti, hogy szkv-e?
21) rj programot, amely bekr egy dtumot, majd eldnti hogy helyes e? Februrt
tekintsd 28 naposnak!
22) Egsztsd ki az elz programot, gy hogy vizsglja, hogy az v szkv-e!
23) rj egy dtum-talakt programot! Nemzetkzi formban megadott dtumot
alaktsa t magyar formj dtumm, gy hogy a hnap nevt rja ki! (Pl.: 02.04.2006
helyett: 2006. prilis 02.)
24) Szmold ki a kvetkez fggvny rtkt!

x9

ha x 1

f ( x)

2
x 1 ha 1 x 3

x
x2

ha 3 x 7
ha x 7

16

I.3 Ciklusok
A

Szmll ciklus

Mintapldk:
1.) rjunk programot, amely 1-tl 10-ig kirja az sszes szmot s mell a szm
ngyzett!
i. Feladatvizsglat:
Bemeneti adatok:
i: egsz szm, rtkei 1-tl 10-ig vltoznak
Kimeneti adatok:
Nincs kimeneti vltoz, a mveleteket a bemeneti vltozval vgezzk, s kiratjuk a
kpernyre.
Megolds logikja:
Szmll ciklus segtsgvel 1-tl 10-ig kiszmoljuk a szmok ngyzett, s kiratjuk
a kpernyre.
ii. Feladat megoldsa:
Folyamatbra:
Start
Be: N

I:=1..10

Ki: i

Ki: i*i
Stop

Mondatszer lers:
Vltozk
i: egsz
Program ngyzet
Ciklus i:=1-tl 10-ig
ki: i
ki: i*i
Ciklus vge
Program vge.
17

A feladat pascal kdja:


program negyzetszamok;
uses crt;
var
i:integer;
begin
clrscr;
for i:=1 to 10 do writeln (i,' ngyzete = ',i*i);
end.
2.) Szmtsuk ki egy tetszlegesen vlasztott pozitv egsz szm hatvnyait egy
vlasztott pozitv egsz kitevig!
i. Feladatvizsglat
Bemen adatok:
a: hatvnyalap, egsz szm
b: a vlasztott legmagasabb hatvnykitev, egsz szm.
Kimen adatok:
i: egsz szm, mutatja, hogy hnyadik hatvnyt kpezzk, egsz szm
h: az aktulis hatvnyrtk, minden lpsben kiratjuk, egsz szm
Megolds logikja:
Beolvassuk a hatvnyalapot, majd a maximlis kitevt. A hatvnyrtk els lpsben
legyen 1. Utna rendre 1-tl a megadott kitevig szorozzuk az alappal, gy
megkapjuk hatvny rtkt s kiratjuk a kpernyre.
ii. Feladat megoldsa:
Mondatszer lers:
Vltozk
a,b: egsz
i,h: egsz
program hatvanyozas
be: a
be: b
h:=1
ciklus i:=1-tl b-ig
h:=h*a
ki: h
ciklus vge
program vge

18

Feladat pascal kdja:


program hatvany;
uses crt;
var
a,b,i: byte;
h: longint;
begin
writeln ('rd le, mely szmnak keresed a hatvnyt! ');
readln (a);
writeln ('Hnyadik hatvnyig rjam ki? ');
writeln ('Vigyzz, hogy az eredmny 10-nl kevesebb szmjegy legyen ');
readln (b);
h:=1;
for i:=1 to b do begin
h:=h*a;
writeln (' Teht az ',a,' alap ',i,'. hatvnya: ',h);
end;
readkey;
end.
3.) rassuk ki az angol nagy abc-t oda, majd a kis abc-t vissza!
i. Feladatvizsglat:
Bemen adatok:
nincsenek.
Kimen adatok:
nincsenek
Megolds logikja:
Kt szmll ciklust hasznlunk, az egyikben ellrl a msikban visszafele ratjuk ki
az abc-t.
ii. Feladat megoldsa:
Mondatszer lers:
Vltoz
i: karakter
Program abc
Ciklus i:=A - tl Z ig
Ki: i
Ciklus vge
Ciklus i:= z tl a ig
Ki:i
Ciklus vge
Program vge.

19

A feladat pascal kdja:


Program abc;
uses crt;
var
i:char;
begin
clrscr;
for i:='A' to 'Z' do
write (i,' ');
writeln;
for i:='Z' downto 'A' do
write (i,' ');
readkey;
end.

20

Elltesztel ciklus

Mintapldk
4.) Olvassuk be krk sugarait addig, amg egy nullt nem tnek be. Minden esetben
rjuk ki a kr kerlett! Ha vgjelet tnek, fejezzk be a jtkot!
i. Feladatvizsglat
Bemen adatok:
sugar: a krk sugarai, egsz szm
Kimen adatok:
Nincs, az eredmnyt a bemen adat segtsgvel szmoljuk
Megolds logikja:
Beolvassuk a kr sugart, minden beolvassnl ellenrizzk, hogy a bert szm 0-e?
Ha nem kiszmoljuk a kr kerlett, ha 0, akkor befejezzk a programot.
ii. Feladat megoldsa:
Folyamatbra
Start
Be: sugar

sugar<>0
hamis

Igaz
ki: sugar*2*pi

be: sugar

Stop

Mondatszer lers:
Vltozk:
Sugar: egsz
Program korok
be: sugar
ciklus amg sugar <> 0
ki: sugar*2*pi
be: sugar
ciklus vge
program vge.

21

A feladat pascal kdja:


program korok
uses crt;
var
Sugar: integer;
begin
clrscr;
write (a kr sugara: );
readln (sugar);
while sugar <> 0 do
begin
write (a kr kerlete: ,2*sugar*pi);
write (a kr sugara: );
readln (sugar);
end;
end.
5.) Ksztsnk programot, amely kiszmolja kt ltalunk megadott egsz szm
legkisebb kzs tbbszrst s legnagyobb kzs osztjt!
i. Feladatvizsglat:
Bemen adatok
a,b: kt egsz szm
Kimen adatok
Lnko, lkkt: a kt szm legnagyobb kzs osztja, illetve legkisebb kzs
tbbszrse, egsz szmok
Megolds logikja:
A szmolshoz a matematikbl ismert Euklideszi algoritmust alkalmazzuk. Els
lpsben ellenrizzk, hogy az els szm legyen a nagyobb, ha nem gy van, akkor
felcserljk a kt szm rtkt. Utna kpezzk a kt szm szorzatt s a kt szm
osztsi maradkt, egszen addig, mg az osztsi maradk nem nulla. a nagyobb
szm rtknek a kisebb szm rtkt adjuk, a kisebbnek az osztsi maradkot
vesszk,majd jra kiszmoljuk e kt szm osztsi maradkt. Ha a maradk 0 lesz, a
feladatunk vgre jutottunk. A kt szm legnagyobb kzs osztja kisebb vltozban
megrztt rtk, mg a legkisebb kzs tbbszrse a kt szm szorzatnak s a
legnagyobb kzs osztjnak a hnyadosa.

22

ii. Feladat megoldsa:


Mondatszer lers:
Vltozk:
a, b: egsz
lnko, lkkt: egsz
s, h, m: egsz
program lnko_lkkt
be: a,b
ha a<b akkor
s:=a, a:=b, b:=s
elgazs vge
h:=a*b, m:=a mod b
ciklus amg m<>0
b:=a;
a:=m;
m:=a mod b
ciklus vge
lnko:= b
lkkt:=h div b
ki: lnko
ki: lkkt
program vge.
A feladat pascal kdja:
program lnko_lkkt;
uses crt;
var
a,b: integer;
lnko, lkkt: integer;
s,h,m: integer;
begin
clrscr;
write ( Krem a kt termszetes szmot: );
read (a, b);
if a<b then
begin
s:=a; a:=b; b:=s; {felcserljk az a s b rtkt}
end;
h:=a*b;
m:=a mod b;
while m<>0 do
begin
b:=a;
a:=m;
m:=a mod b;
end;
lnko:= b;
lkkt:=h div b;
writeln ( a kt szm legnagyobb kzs osztja: ,lnko);
writeln ( a kt szm legkisebb kzs tbbszrse: ,lkkt);
readkey;
23

end.

Htultesztel ciklus

Mintapldk
6.) A szmtgp vletlenszeren vlasszon (gondoljon) egy szmot 1-tl 10-ig.
Krdezze meg a felhasznltl melyik ez a szm. A felhasznl addig tallgathat, amg
nem tallja el ezt a szmot. A szmtgp csak annyit rjon neki ki: "eltalltad, ez az a
szm", vagy "sajnos nem ez az a szm".
i. Feladatvizsglat:
Bemen adatok:
a: a gondolt szm
Kimen adatok:
Nincs, szveges vlaszt adunk
ii. Feladat megoldsa:
Folyamatbra:
Start
b:=vletlen szm (1..10)
Be: a

hamis

igaz
b=a

Ki: nem tallt

Ki: eltalltad

hamis
b=a
igaz
Stop

24

Mondatszer lers:
Vltozk
a,b: egsz
Program talalgatas
b:=vletlen szm (1..10)
ciklus
be: a
ha b=a akkor ki: Eltalltad ez a szm!
klnben
ki: sajnos nem ez a szm
elgazs vge
amg b=a
ciklus vge
program vge.
A feladat pascal kdja:
program talalgatas;
uses crt;
var
a,b:integer;
begin
clrscr;
randomize;
b:=random (10)+1; { egy egsz szmot generl 1-tol 10-ig }
repeat
write ('Melyik szmra gondoltam? ');
readln (a);
if b=a then writeln ('Eltalltad, ez az a szm!')
else writeln ('Sajnos nem ez az a szm.');
until b=a;
writeln ('Nyomd meg az ENTER billentyt.');
readkey;
end.
7.) rjunk programot, mely segtsgvel menbl lehet vlasztani, hogy hasb, henger
vagy gmb trfogatt akarjuk szmolni. Amelyik funkcit vlasztottuk, az ahhoz tartoz
adatokat krje be, majd rja ki az eredmnyt!
i. Feladatvizsglat
Bemen adatok:
c: a men betjele, karakter tpus
r: jelentse a henger, illetve a gmb sugart, egsz szm
m: jelentse a hasb, illetve a henger magassgt, egsz szm
a,b: a hasb alaplapjnak szlessge, illetve hosszsga, egsz szmok
Kimen adatok:
v: a keresett trfogatok, vals szm
A megolds logikja:
A lehetsgeket ismtelten felknljuk, mg a felhasznl gy dnt, hogy nem akar
tbb lehetsget ignybe venni. Annak fggvnyben, hogy melyik funkcit
vlasztotta, a program krje be a megfelel adatokat, majd a matematikai kpleteket
felhasznlva szmolja ki a testek trfogatt!
25

ii. Feladat megoldsa


Mondatszer lers:
Vltozk:
c: karakter
r,m,a,b: egsz
v: vals
program menu
ciklus
ki: H: Henger trfogata
ki: T: Hasb trfogata
ki: G: Gmb trfogata
ki: V: Vge
be: c
elgazs
c= H esetn
be: r,m
v:= r*r*m*pi
ki: v
c= T esetn
be: m, a,b
v:=a*b*m
ki: v
c=G esetn
be: r
v:=(4*pi*r*r*r)/3;
ki: v
elgazs vge
amg c=V
ciklus vge
program vge.

26

A feladat pascal kdja:


program menu;
uses crt;
var
c:char;
r,m,a,b: integer;
v: real;
begin
repeat
clrscr;
gotoxy (20,10); write ('H: henger trfogata '); {a kperny pozicionls}
gotoxy (20,11); write ('T: hasb trfogata ');
gotoxy (20,12); write ('G: gmb trfogata ');
gotoxy (20,13); write ('V: vge ');
readln(c);
c:=upcase (c); {talaktjuk a karaktert nagybetss}
case c of
'H': begin
clrscr;
write ('A henger sugara= '); readln (r);
write ('A henger magassga= '); readln (m);
v:=r*r*m*pi;
writeln;
writeln ('A henger trfogata= ',v:0:2);
readkey;
end;
'T': begin
clrscr;
write ('a hasb magassga= '); readln (m);
write ('a hasb alaplapjnak hosszsga= '); readln (a);
write ('a hasb alaplapjnak szlessge= '); readln (b);
v:=a*b*m;
writeln;
writeln ('a hasb trfogata= ',v:0:0);
readkey;
end;
'G': begin
clrscr;
write ('a gmb sugara= '); readln (r);
v:=(4*pi*r*r*r)/3;
writeln;
writeln ('a gmb trfogata= ',v:0:2);
readkey;
end;
end;
until c='V';
end.

27

Feladatok
1) Kszts programot, amely kirja 1-tl 10-ig az egsz szmok ngyzett egyms al.
Ez utn az egsz kirs utn rakjon ki egy mnuszjelekbl ll vonalat s ez al a vonal
al rja ki a program, hogy mennyi a kirt ngyzetszmok sszege, teht hogy mennyi az
1+4+9+16+25+36+...+100 sszeg
2) Kszts programot, amely bekr egy n termszetes szmot, majd kihagy egy res
sort, s kirja egyms mell n-tl 0-ig az egsz szmokat s mindegyik szm utn egy
szkzt rak.
3) rj programot, mely a kpernyre rja a tzes szorztblt!
4) rj programot, amely bekr egy szmot, ellenrzi, hogy a szm pozitv-e, ha nem
megismtli a beolvasst, majd kiszmtja a szm faktorilist! (n!=1*2*..*n)
5) Kszts programot, amely bekr egy N termszetes szmot, majd kirajzol a
kpernyre egyms mell N-szer az "XO" betket s a kirs utn a kurzort a kvetkez
sor elejre teszi.(Pldul N=3-ra XOXOXO).
6) Egsztsd ki az elz programot gy, hogy az elz kirs al rja ki N-szer az
"OX" betket is egyms mell, majd a kurzort ismt a kvetkez sor elejre tegye.
(Pldul
N=3-ra
XOXOXO
OXOXOX)
7) Kszts programot, amely kiszmolja az els N db. pros szm sszegt.
8) Kszts programot, amely kiszmolja az els N db. pratlan szm sszegt.
9) Krj be kt termszetes szmot (M,N), majd rajzoljunk ki a kpernyre egy MxN mret
tglalapot csillag (*) jelekbl.(Pldul M=8 s N=3-ra:

********
********
********
10) rj programot, mely bekri, hogy mennyi pnzt akarunk betenni a takarkba,
mennyi az ves kamat s mennyi idre szeretnnk lektni a pnznket. A program
szmolja ki, hogy mennyi pnznk lesz, mikor kivesszk a pnznket.
11) Kszts programot, amely vgjelig bekr egsz szmokat (a vgjel legyen 0). A
program hatrozza meg s rja ki a beadott egsz szmok kzl a legkisebbet s a
legnagyobbat. (A 0-t ne szmtsa bele a beadott szmokba, ez csak a bevitel vgt jelzi.)
12) Olvassunk be pozitv egsz szmokat 0 vgjelig. rjuk ki a szmok szmt s a
szmok tlagt.
13) Kszts programot, amely ki fogja krdezni a matematikt (kt szm sszeadst,
kivonst s szorzst az (1,10) intervallumbl). A kt szmot s a mveletet a
szmtgp vletlenszeren vlassza ki. A program akkor fejezdjn be, ha a
felhasznl 10 pldt kiszmolt helyesen. Rossz vlasz esetn krdezze jra ugyanazt a
pldt. A program vgn rja ki az eredmnyessget szzalkokban.
14) Kszts programot, amely bekr egy egsz szmot s felbontja prmtnyezk
szorzatra. (Pl. 12 = 2*2*3 - a szorzatban csak prmszmok vannak.)
15) Kszts programot, amely kiszmolja a/b+c/d (kt trt sszegt), majd az eredmny
trzsalak trt alaktja (amely mr nem egyszersthet tovbb).

28

I.4 Adattpusok
A

Szvegfeldolgozs

Mintapldk:
1.) Ksztsnk programot, amely beolvas egy mondatot, majd kirja hny karakterbl
ll a mondat.
i. Feladatvizsglat:
Bemen adatok:
s: szveg tpus
Kimen adatok:
h: a szveg hossza, egsz szm
Megolds logikja:
Elszr beolvassuk a mondatot. Beolvass utn ennek a vltoznak a hosszt a
length() fggvnnyel kapjuk meg.
ii. Feladat megoldsa:
Folyamatbra:

start

Be:s

H:=hossz (s)

Ki:h

stop

Mondatszer lers:
Vltozk
s: szveg
h: egsz
Program MondatHossza
be: s
h:=hossz (s)
ki: h
Program vge
29

A feladat pascal kdja:


program MondatHossza;
uses crt;
var
s:string;
h: integer;
begin
clrscr;
write ('rj be egy mondatot: ');
readln (s);
h:=length(s);
writeln ('A mondat hossza: ',h,' karakter.');
readkey;
end.
2.) Ksztsnk programot, amely beolvas egy mondatot, majd kirja a mondatot nagy
betkkel.
i. Feladatvizsglat
Bemen adatok:
s: a megadott mondatot tartalmazza, szveg tpus
Kimen adatok:
Nincs, a bemen vltozban adjuk meg az eredmnyt
A megolds logikja:
Elszr beolvassuk a mondatot. Beolvass utn a mondat minden egyes karaktert
egy cikluson bell megvltoztatjuk nagybetre. Az s vltozban lev mondat els
betjt az s[1] adja meg, msodik betjt az s[2] adja meg, stb. Egy karaktert
nagybetre az upcase() fggvny segtsgvel vltoztathatunk meg.
ii. Faladat megoldsa:
Mondatszer lers:
Vltozk
s: szveg
i: egsz
Program MondatNagyBetukkel;
be: s
ciklus i:= 1-tl hossz(s)-ig
s(i):=nagybetre(s(i))
ciklus vge
ki: s
Program vge.

30

A feladat pascal kdja:


program MondatNagyBetukkel;
uses crt;
var
s: string;
i:integer;
begin
clrscr;
write ('rj be egy mondatot: ');
readln (s);
for i:=1 to length(s) do
s[i]:=upcase (s[i]);
writeln (s);
end.
3.) Ksztsnk programot, amely bekr egy mondatot, majd kirja ugyanezt a
mondatot gy, hogy mindegyik bet (karakter) utn kirak egy szkzt.
i. Feladatvizsglat:
Bemen adtok:
s: a beolvasott mondat, szveg tpus
Kimen adatok:
Nincs, a bemen adatok segtsgvel adjuk meg az eredmnyt
Megolds logikja:
Elszr beolvassuk a mondatot. Beolvass utn a mondat minden egyes karaktert
egy cikluson bell kiratjuk, s utna egy szkzt runk.
ii. Feladat megoldsa:
Mondatszer lers:
Vltozk:
s:szveg;
i: egsz
Program szethuzott_mondat
be: s
ciklus i:=1-tl hossz (s) ig
ki: s(i),
ciklus vge
Program vge.
A feladat pascal kdja:
Program szethuzott_mondat;
uses crt;
var
s: string;
i: integer;
begin
clrscr;
write ('rj be egy mondatot: ');
readln (s);
for i:=1 to length (s) do write (s[i],' ');
end.
31

Feladatok
1) rj mese (vagy vicc) vlaszt programot kistestvred szmra, mellyel hrom rvid
mese (illetve vicc) kzl egyet vagy egyms utn tbbet is vlaszthat tetszlegesen!
2) Kszts programot, amely bekr egy mondatot, majd kirja ugyanezt a mondatot
fordtva. Pldul, ha berjuk "Szp napunk van ma.", kirja ezt: ".am nav knupan
pzS"
3) Olvass be egy karaktert, majd rasd ki a sorszmt, az eltte s az utna ll
karaktert, valamint a karakter nagybets formjt.
4) Olvass be kt nevet egyms utn. rd ki a neveket nvsorban!
5) Olvass be neveket * vgjelig! rd ki ezek kzl a nvsorban az elst!
6) Olvass be egy karakterlncot. Cserld ki az sszes szkzt a 250-es ASCII kd
pici karikra
7) Olvass be egy karakterlncot. Cserld ki az sszes kutya szt eb-re.
8) Olvass be egy nevet. rd ki az illet monogramjt! (Vigyzz, van akinek 2-nl tbb
neve van, pl.: Nagy Ilona Mria).
9) Szmold meg egy szvegben az s betket!
10) rj programot, amely egy tetszleges karaktersorozatban, megszmolja, hogy hny
bett, hny szmjegyet s hny egyb karaktert tartalmaz!

32

Tmb

Egydimenzis tmb

Mintapldk
1.) Ksztsnk programot, amely beolvas 10 egsz szmot egy tmbbe, majd kirja
ket fordtott sorrendben.
i. Feladatvizsglat
Bemen adatok:
10 egsz tpus bemen adatra van szksgnk. Ne talljunk ki az elemeknek egyedi
neveket, hanem adjunk egy gyjtnevet az egsz csoportnak, s az elemekre
hivatkozzunk indexekkel.
t: az egsz szmokat tartalmaz adatcsoport neve, az elemeket 1-tl 10-ig indexeljk,
elemei egsz szmok.
Kimen adatok:
Nincs, a beolvasott adatokat ratjuk ki.
Megolds logikja:
A tmb egyes elemeit gy hasznljuk, mint ha azok egyedi vltozk lennnek.
Pldul a t(3) a 3. egsz szmot jelenti. Vigyzzunk, hogy az elemre val
hivatkozskor az indexnek olyan rtke legyen, mely egy ltez tmbelemre
hivatkozik. A t(11) pldul helytelen hivatkozs.
A 2. fejezetben megismert for ciklust hasznljuk. Az indexelsi technikval az egsz
tmbt egyetlen itercival fel tudjuk tlteni.
ii. Feladat megoldsa:
Folyamatbra:
Start

I:=1..10

Be: t(i)

I:=10..1

ki: t(i)

Stop

33

Mondatszer lers:
Vltozk:
t: tmb (1..10: egsz) {tmb deklarcija}
i: egsz {a ciklusban a tmb aktulis elemt fogja jelenteni}
program szamokPr
ciklus i:=1-tl 10.ig
be: t(i) {10 beolvasst hajt vgre, rendre az 1., 2. ...10. egszet olvassuk be}
ciklus vge
kpernytrls
ciklus i:=10-tl 1-ig
ki: sulyok(i) {10 kirst hajt vgre, rendre a 10.,9.,...1. szmot rjuk ki}
ciklus vge
program vge.
A feladat pascal kdja:
program szamokPr;
uses crt;
var
a:array [1..10] of integer;
i: integer;
begin
clrscr;
for i:=1 to 10 do begin
write (i,'. szam: ');
readln (a[i]);
end;
writeln ('A szamok fordtott sorrendben:');
for i:=10 downto 1 do write (a[i]:6);{6 karakternyi tvolsgot hagy ki a szmok
kztt}
readkey;
end.
2.) Mrjk meg 10 gyerek testslyt, s a mrt rtkeket sorban vigyk be a
szmtgpbe, majd trljk le a kpernyt, s rjuk ki a gyerekek testslyt!
i. Feladatvizsglat
Bemen adatok:
slyok: a slyokat tartalmaz adatcsoport neve, az elemeket 1-tl 10-ig indexeljk,
elemei egsz szmok
Kimen adatok:
Nincs, a beolvasott adatokat ratjuk ki.
Megolds logikja:
Hasonlan az elz mintapldhoz, kt for ciklust hasznlunk, egyet a beolvasshoz,
s egyet a kiratshoz.

34

ii. Feladat megoldsa:


Folyamatbra:
Start

I:=1..10

Be:
sulyok(i)
I:=1..10

ki:
sulyok(i)

Stop

Mondatszer lers:
Vltozk:
sulyok: tmb (1..10: egsz) {tmb deklarcija}
i: egsz {a ciklusban a tmb aktulis elemt fogja jelenteni}
program SulyokPr
ciklus i:=1-tl 10.ig
be: sulyok(i) {10 beolvasst hajt vgre, rendre az 1., 2. ...10. gyerek slyt
olvassuk be}
ciklus vge
kpernytrls
ciklus i:=1-tl 10-ig
ki: sulyok(i) {10 kirst hajt vgre, rendre az 1., 2. ...10. gyerek slyt rjuk ki}
ciklus vge
program vge.

35

A feladat pascal kdja:


Program SulyokPr;
Uses crt;
var
sulyok: array[1..10] of integer; {tmb deklarcija}
i: integer;
begin
clrscr;
for i:=1 to 10 do begin
write (i,. gyerek slya: );
readln (sulyok[i]);
end;
clrscr;
for i:=1 to 10 do begin
write (i,. gyerek slya: );
writeln (sulyok[i]);
end;
readkey;
end.
4.) Alaktsuk t a 2-es programot, gy, hogy szmoljuk ki a gyerekek slynak
tlagt, s az tlagot rja ki a program!
i. Feladatvizsglat:
Bemen adatok:
sulyok: a slyokat tartalmaz adatcsoport neve, az elemeket 1-tl 10-ig indexeljk,
elemei egsz szmok
Kimen adatok:
a: a gyerekek slynak tlaga
Megolds logikja:
Egy ciklus segtsgvel olvassuk be az adatokat, s szmoljuk az tlagot. A
beolvasst ugyangy tesszk, mint az els feladatban. Az tlagot lpsenknt
szmoljuk, a vltozt (a gyerekek tlaga) tegyk egyenlv nullval, majd minden
lpsnl hozzadjuk az aktulisan beolvasott rtket.
ii. Feladat megoldsa
Mondatszer lers:
Vltozk:
sulyok: tmb (1..10: egsz) {tmb deklarcija}
i: egsz {a ciklusban a tmb aktulis elemt fogja jelenteni}
program SulyokPr
a:=0
ciklus i:=1-tl 10.ig
be: sulyok(i) {10 beolvasst hajt vgre, rendre az 1., 2. ...10. gyerek slyt
olvassuk be}
a:=a+sulyok(i)
ciklus vge
kpernytrls
ki: a
program vge.
36

A feladta pascal kdja:


Program SulyokPr;
Uses crt;
var
sulyok: array[1..10] of integer; {tmb deklarcija}
i: integer;
begin
clrscr;
a:=0;
for i:=1 to 10 do begin
write (i,. gyerek slya: );
readln (sulyok[i]);
a:=a+sulyok[i];
end;
clrscr;
write (a gyerekek tlagslya: );
writeln (a/10); {a ciklusban az a vltozban a gyerekek slyainak sszegt
szmoltuk}
readkey;
end.
5.) rjunk programot, amely egy egyszer pnztrgp mkdst mutatja be! Troljuk
a vsroland ruk mennyisgt (darabszmt), s az egysgrt, majd szmoljuk ki,
hogy mennyit kell fizessnk! Maximum 20 ruflre szmtunk, a 0 vgjelig.
i. Feladatvizsglat
Bemen adatok:
db:a vsroland ruk mennyisgt tartalmaz sorozat, elemei vals szmok.
ear : a vsroland ruk egysgrt tartalmaz sorozat, elemei vals szmok
Kimen adatok:
fizet:vals szm, a fizetend sszeg
Megolds logikja:
Az adatok beolvassnl ellenrizzk, hogy 20 termknl tbbet ne vigynk be,
illetve a vgjelnl fejezzk be az adatok bekrst!
A megfelel r egysgrt s a vsrolt mennyisget sszeszorozzuk, majd ezeket
az rtkeket sszeadjuk, gy a vgsszeget kapjuk. A megoldsban

37

ii. Feladat megoldsa:


Mondatszer lers:
Vltozk
db, ear: tmb(1..20: vals)
fizet: vals
i,j: egsz
Program vasarlas
i:=0
ciklus
i:=i+1
be: db(i)
ha db(1)=0 akkor ear(i)=0 klnben
be: ear(i)
elgazs vge
amg (i=20) vagy (db(i)=0)
ciklus vge
ha db(i)=0 akkor j:=i-1
fizet:=0
ciklus i:=1-tl j-ig
fizet:=fizet+db(i)*ear(i)
ciklus vge
ki: fizet
program vge.
A feladat pascal kdja:
program vasarlas;
uses crt;
var
db,ear: array [1..10] of real;
i,j: integer;
fizet:real;
begin
clrscr;
i:=0;
write ('A pnztrgp max. 20 rra s 0 vgjelre mkdik');
writeln ('Ezen a pnztrgpen tizedes vessz helyett pontot hasznlunk.');
repeat
i:=i+1;
write ('Krem a(z) ',i,' . r mennyisgt: ');
readln (db[i]);
if (db[i]=0) then ear[i]:=0 else {a megadott vgjel miatt kell ellenrizni}
begin
write ('egysgra: ');
readln (ear[i]);
end;
until (db[i]=0) or (i=20); {addig ismteljk, mg elrtk a 20 rt, vagy 0-t tttnk}
if db[i]=0 then j:=i-1;
fizet:=0;
for i:=1 to j do fizet:=fizet;
writeln;
writeln (' A fizetend sszeg: ',fizet:10:2);
38

end.

Feladatok:
1) rj programot, amely egy tanv alatt sszegylt zsebpnznket szmolja ki a havi
adatokbl.
2) Olvass be egsz szmokat 0 vgjelig egy maximum 100 elem tmbbe. rj ki a
szmokat a beolvass sorrendjben majd fordtva.
3) llts el egy 30 elem tmbt vletlen egsz szmokbl (0-tl 99-ig), majd rd ki a
tmbt a kpernyre.
4) Olvass be, hogy menyi pnzt klttt ruhra venknt Mrti s Gbor 1981 s 1994
kztt. rj programot, amely lehetv teszi azt, hogy lekrdezzk, hogy mennyi pnzt
klttt adott vben Gbor, Mrti illetve kzsen.
5) rj programot, mely kivlasztja az 5-s lott nyer szmait, s egy tmbben trolja
ket!
6) Szmold ki 1-tl 20-ig a minden szm ngyzett, kbt, negyedik hatvnyt! rasd
ki a kpernyre tlthat formban!
7) rasd ki, a kettes szm 1-tl 25-dik hatvnyait!
8) A ngyes mintapldt alaktsd t gy, hogy a pnztrgpet mi szrprbaszeren
tudjuk ellenrizni, hogy adott rucikkbl hny darabot vettnk s az mennyibe kerlt?
9) Egy iskola kt osztlyt sszevonjk. A kt osztly nvsora kt kln tmbben volt
trolva. rj programot, amely a kt nvsorbl egyet forml!
10) Egy brtnben 1000 cella van, mindenikben 1 rab l. Kezdetben minden cella zrva
van. A brtnr vgigmegy az sszes ajt eltt s minden ajt zrjn fordt egyet (ha
nyitva volt bezrja, ha zrva volt kinyitja). Ha vgigment elkezdi ellrl s minden
msodik ajt zrjn fordt egyet, majd minden harmadikon fordt, s gy tovbb.
Legvgl fordt egyet az ezrediken, s ksz. Ezutn amelyik cella nyitva van abbl a rab
elmehet. Kik a szerencss rabok?
11) Az albbi program begpelse nlkl javtsd ki a hibkat s prbld meg elre
meghatrozni, mi lesz a program eredmnye! Ellenrzskppen a programot berhatod a
szmtgpbe.
Program sok_hiba;
uses crt;
var
jegy: array [110] of real;
i:byte;
begin
clrscr;
writeln ( Ebben a programban rengeteg hiba van. Javtsd ki!)
writeln (Most krek 10 darabot a matek osztlyzataidbl!);
writeln (Talld ki, hogy mit teszek velk! Rajzold meg a folyamatbrjt!),
for i=1 to 10 do
begin
write ( Krem a(z) ,i., jegyet: );
readln (jegy[i];
if jegy[i]<5 then jegy[i]:=jegy[i]+1;
else jegy[i]:=jegy[i];
end.
Writeln (A jegyeid a kvetkezk lettek: ,jegy[i]);
end.

39

Ktdimenzis tmb

Mintapldk:
1.) Olvassunk be egy N egsz szmot (1<N<10), majd egy NxN-es ktdimenzis
tmbbe generljunk vletlen egsz szmokat 10-tol 99-ig.- rassuk ki a generlt tmbt,
pl. N=3-ra:
34 58 19
85 50 11
99 25 17
i. Feladatvizsglat:
Bemen adatok:
n: egsz szm (a tmb sorainak s oszlopainak a szma)
t: n sorra s n oszloppal rendelkez tmb, elemei egsz szmok
Kimen adatok:
Nincs, a tmbt ratjuk ki
Megolds logikja:
Elszr fel kell tlteni a tmbnket. Hasonlan jrunk el, mint az egydimenzis
tmb esetben, itt kt gynevezett futvltozra van szksg, az egyik az aktulis
sort, a msik pedig az aktulis oszlopot jelenti. Pldul t(1,2) az els sor msodik
eleme. Vletlenszm generlshoz a mr megismert randomize fggvnyt
hasznljuk. Ha a beolvasssal ksz vagyunk ki kell rassuk a tmbt a kpernyre.
ii. Feladat megoldsa
Folyamatbra:
Start
Be: n

i:=1..n
j:=1..n
t(i,j):= vletlenszm (10..99)

i:=1..n
j:=1..n
ki t(i,j)

Stop

40

Mondatszer lers:
Vltozk:
n: egsz
t,: tmb(1..n,1..n: egsz)
program tomb1
be: n
{a kvetkez ciklussal a t tmbt tltjk fel, vletlen szmokkal}
ciklus i:=1-tl n-ig
ciklus j:=1-tl n-ig
t(i,j):= vletlenszm (10..99)
ciklus vge
{a kvetkez ciklussal a t tmb elemeit ratjuk ki}
ciklus i:=1-tl n-ig
ciklus j:=1-tl n-ig
ki: t(i,j)
ciklus vge
program vge.
A feladat pascal kdja:
program tomb1;
uses crt;
var
t:array [1..9,1..9] of integer;
n,i,j:integer;
begin
clrscr;
write (Add meg az N rtkt (1<N<10): );
readln (n);
writeln;
randomize;
{NxN-es tmb feltltse}
for i:=1 to n do
for j:=1 to n do begin
t[i,j]:=random(89)+10;
end;
writeln;
{tmb kirsa }
for i:=1 to n do begin
for j:=1 to n do write(t[i,j]:3);
writeln;
end;
writeln;
readkey;
end.

41

2.) Olvassunk be egy N egsz szmot (1<N<10), majd egy NxN-es ktdimenzis
tmbbe olvassunk be tetszleges termszetes szmokat
rjuk ki a tmbt a kpernyre, pl. N=4-re s a kvetkez szmokra ilyen formban:
60 19 17 53
17 82 26 10
8 11 29 90
64 77 19 70
rjunk a tmb tljba 0-kat, majd rjuk ki a tmbt jra a kpernyre:
0 19 17 53
17 0 26 10
8 11 0 90
64 77 19 0
i. Feladatvizsglat:
Bemen adatok:
n: egsz szm (a tmb sorainak s oszlopainak a szma)
t: n sorra s n oszloppal rendelkez tmb, elemei egsz szmok
Kimen adatok:
kt: n sorra s n oszloppal rendelkez tmb, elemei egsz szmok
Megolds logikja:
Tltsk fel a t tmbt, ha ezzel ksz vagyunk, fel kell tlteni a kimen tmbt. Ezt
16 rtkadssal tesszk meg, a ftl elemei 0-k, minden ms elem a bemen
tmbnk megfelel elemnek rtkvel lesz egyenl. Azok az elemek vannak a
ftlban, amelyeknek a sor s oszlop indexk megegyezik (itt a t(1,1), t(2,2), t(3,3),
s a t(4,4)).
ii. Feladat megoldsa:
Mondatszer lers:
Vltozk:
n: egsz
t, kt: tmb(1..n,1..n: egsz)
program tomb2
be: n
{a kvetkez ciklussal a t tmbt tltjk fel, ltalunk megadott elemekkel}
ciklus i:=1-tl n-ig
ciklus j:=1-tl n-ig
be: t(i,j)
ciklus vge
{a kvetkez ciklussal a t tmb elemeit ratjuk ki}
ciklus i:=1-tl n-ig
ciklus j:=1-tl n-ig
ki: t(i,j)
ciklus vge
{most a kt tmbt tltjk fel}
ciklus i:=1-tl n-ig
ciklus j:=1-tl n-ig
ha i=j akkor kt(i,j):=0 {a ftl elemeit nullzzuk}
klnben
kt(i,j):=t(i,j) {a tbbi elemet egyenlv tesszk a bemen rtkekkel}
elgazs vge
ciklus vge
42

{kt tmb elemeit ratjuk ki}


ciklus i:=1-tl n-ig
ciklus j:=1-tl n-ig
ki: kt(i,j)
ciklus vge
program vge.
A feladat pascal kdja:
program tomb2;
uses crt;
var
t, kt: array [1..9,1..9] of integer;
n,i,j:integer;
begin
clrscr;
write ('Add meg az n rtkt (1<n<10): ');
readln (n);
writeln;
{ NxN-es tmb beolvassa }
for i:=1 to n do
for j:=1 to n do begin
write ('T[',i,',',j,'] = ');
read (t[i,j]);
end;
writeln;
{tmb kirsa}
for i:=1 to n do begin
for j:=1 to n do write (t[i,j]:3);
writeln;
end;
writeln;
{tmbben a 0-k bersa az tlba}
for i:=1 to n do
for j:=1 to n do
if i=j then kt[i,j]:=0
else kt[i,j]:=t[i,j];
{tmb kirsa}
for i:=1 to n do begin
for j:=1 to n do write (kt[i,j]:3);
writeln;
end;
writeln;
readkey;
end.

43

3.) Hatrozza meg egy ktdimenzis tmb elemeinek soronknti, oszloponknti teljes
tlagt!
i. Feladatvizsglat:
Bemen adatok:
n,m: egsz szmok (a tmb sorainak s oszlopainak a szma)
t: n sorral s m oszloppal rendelkez tmb, elemei egsz szmok
Kimen adatok:
soratlag: a sorok tlagt tartalmaz n elem vals vektor
oszlopatlag: az oszlopok tlagt tartalmaz m elem vals vektor
Megolds logikja:
A beolvasst vgezzk a mr megismert mdn. Utna szmoljuk ki a soratlag vektor
elemeit tegyk egyenlv a sorok tlagval, ugyanezt tegyk meg az oszlopatlaggal is.
ii. Feladat megoldsa:
Mondatszer lers:
Vltozk:
n,m: egsz
tomb: tmb(1..10,1..10: egsz)
soratl, oszlatl: tmb (1..10: vals)
i,j: egsz
program tomb3
be: n,m
{a kvetkez ciklussal a tomb tmbt tltjk fel, ltalunk megadott elemekkel}
ciklus i:=1-tl n-ig
ciklus j:=1-tl m-ig
be: tomb(i,j)
ciklus vge
{a sorok tlagait }
ciklus i:=1-tl n-ig
soratl[i]:=0
ciklus j:=1-tl m-ig
soratl[i]:=soratl[i]+tomb[i,j]
soratl[i]:=soratl[i]/m
ciklus vge
ciklus i:=1-tl n-ig
oszlatl[j]:=0;
ciklus j:=1-tl m-ig
oszlatl[j]:=oszlatl[j]+tomb[i,j]
oszlatl[j]:=oszlatl[j]/n
ciklus vge
ciklus i:=1-tl n-ig
ki: soratl[i]
ciklus vge
ciklus i:=1-tl n-ig
ki: oszlatl[i]
ciklus vge
program vge.

44

A feladat pascal kdja:


program tomb3;
uses crt;
var
tomb: array [1..10, 1..10] of integer;
soratl, oszlatl: array [1..10] of real;
n,m,i,j: integer;
begin
clrscr;
writeln ('hny sora van a tmbnek? ');
readln (n);
writeln ('hny oszlopa van a tmbnek?');
readln (m);
for i:=1 to n do
for j:=1 to m do begin
write ('T(',i,',',j,') = ');
readln (tomb[i,j]);
end;
for i:=1 to n do begin
soratl[i]:=0;
for j:=1 to m do
soratl[i]:=soratl[i]+tomb[i,j];
soratl[i]:=soratl[i]/m;
end;
for j:=1 to m do begin
oszlatl[j]:=0;
for i:=1 to n do
oszlatl[j]:=oszlatl[j]+tomb[i,j];
oszlatl[j]:=oszlatl[j]/n;
end;
writeln ('a sorok: ');
for i:=1 to n do write (soratl[i]:0:2,' ');
writeln;
writeln ('az oszlopok tlagai: ');
for j:=1 to m do write (oszlatl[j]:0:2,' ');
readkey;
end.

45

Feladatok
1) Az 1-es mintapldt alaktsd t gy, hogy a program keresse meg a tmb legkisebb
elemt, s cserlje ki az els sor els elemvel.
2) rj programot, amely egy ktdimenzis tmb adott kt sort, majd kt oszlopt
felcserli!
3) rj programot, amely meghatrozza egy mtrix soraiban az elemek minimumt,
majd a minimlis elemek maximumt! Ugyanezt vgezd el az oszlopokkal is!
4) Hatrozd meg, hogy egy adott mtrixnak van-e nyeregpontja (nyeregpontnak olyan
elemet neveznk, amelyik legkisebb a sajt sorban, s legnagyobb az oszlopban.)
5) rj programot, mely bekr 25 szmot egy 5x5-s mtrixba, s megszmolja a
pozitv s negatv szmokat!
6) rj programot, amely egy 11x11-es mtrix els sorban s oszlopban trolja a
szmokat 1-tl 10-ig, majd kirja a szorztblt!

46

Rekord tpus

Mintapldk
1.) rjunk programot, amely lehetsget ad 1 tanul nevnek, osztlynak s
tlagnak bekrsre. A tetszleges adatok beolvassa utn rassa ki a kpernyre
formzottan az els sortl kezdden kzpre igaztva.
i. Feladatvizsglat:
Bemen adatok:
tanulo: rekord tpus vltoz, hrom mezje van:
nev: szveg tpus vltoz, a tanul nevt tartalmazza
oszt: egsz szm, a tanul osztlyt tartalmazza
atl: vals szm, a tanul tlagt tartalmazza
Kimen adatok:
Nincs, a bemen adatot ratjuk ki a kpernyre
Megolds logikja:
A tanulo rekordnak hrom mezje van. Az elemekre gy hivatkozhatunk, hogy a
rekord azonostja utn ponttal elvlasztva rjuk a mez nevt. A rekord egyes
mezire gy hivatkozunk, mint ha azok egyedi vltozk lennnek. Pldul
tanulo.nev a tanul rekord nev mezjt jelenti.
ii. Feladat megoldsa:
Mondatszer lers:
Vltozk
tanulo: rekord
(nev: szveg
oszt: egsz
atl:vals)
program rekord1
{adatok beolvassa: }
be: tanulo.nev
be: tanulo.oszt
be: tanulo.atl
{adatok kirsa: }
ki: tanulo.nev
ki: tanulo.oszt
ki: tanulo.atl
program vge.
A feladat pascal kdja:
program rekord1;
uses crt;
var
{a tanul rekord definilsa:}
tanulo: record
nev: string;
oszt:integer;
atl: real;
end;
47

begin
clrscr;
{adatok beolvassa:}
Write ('Krem a nevt: ');
Readln (tanulo.nev);
Write ('Melyik osztlyba jr?: ');
Readln (tanulo.oszt);
Write ('krem az tlagt: ');
Readln (tanulo.atl);
clrscr;
{adatok kirsa:}
Writeln ('nv: ':33, tanulo.nev);
Writeln ('osztly: ':33, tanulo.oszt);
Writeln ('tlag: ':33, tanulo.atl);
Readkey;
end.
2.) Hozzunk ltre egy datum (ev, ho, nap) nev vltozt! Beolvasskor ellenrizzk,
hogy dtumnak megfelel adatot rtunk-e! (Minden hnapot tekintsnk 31 naposnak!)
i. Feladatvizsglat
Bemen adatok:
datum: rekord tpus vltoz, hrom mezje van:
ev: egsz szm, az vet jelenti
ho: egsz szm, a hnapok szmt jelenti
nap: egsz szm, a napot jelenti
Kimen adatok:
Nincs, a bemen adatot ratjuk ki a kpernyre
A megolds logikja:
Beolvassuk a dtum hrom mezjt, (v/ h/ nap), majd rendre ellenrizzk, hogy a
megfelel intervallumban vannak-e. Ha nem, akkor jra beolvassuk a hibs adatot, s
jra ellenrizzk, egszen addig, amg helyes adatokat runk.
ii. Feladat megoldsa:
Mondatszer lers:
Vltozk:
datum: rekord
(ev, ho, nap: egsz)
program rekord2;
be: datum.ev, datum.ho, datum.nap
{v ellenrzse}
ha (datum.ev<1970) vagy (datum.ev>2010) akkor
ki: 'biztos j vet rtl?'
ciklus
be: datum.ev
amg (datum.ev<=2010) s (datum.ev >=1970)
ciklus vge
elgazs vge

48

{hnap ellenrzse}
ha (datum.ho<1) vagy (datum.ho>12) akkor
ki: 'biztos j a hnap szma?'
ciklus
be: datum.ho
amg (datum.ho<=12) s (datum.ho>=1);
ciklus vge
elgazs vge
{nap ellenrzse}
ha (datum.nap<1) vagy (datum.nap>31) akkor
ki: 'biztos j napot rtl?'
ciklus
be: datum.nap
amg (datum.nap<=31) s (datum.nap>=1);
ciklus vge
elgazs vge
{hnap kirsa a kpernyre}
ki: datum.ev, datum.ho, datum.nap
program vge
A feladat pascal kdja:
program rekord2;
uses crt;
var
datum : record
ev, ho, nap: word;
end;
begin
clrscr;
writeln ('krem a dtumot v/h/nap formban, 1970 s 2010 kztti vet tudsz
berni! ');
read (datum.ev, datum.ho, datum.nap);
{v ellenrzse}
if (datum.ev<1970) or (datum.ev>2010) then
begin
writeln ('biztos j vet rtl?');
repeat
write ('v: ');
read (datum.ev);
until (datum.ev<=2010) and (datum.ev >=1970);
end;
{hnap ellenrzse}
if (datum.ho<1) or (datum.ho>12) then
begin
writeln ('biztos j a hnap szma? ');
repeat
write ('h:');
read (datum.ho);
until (datum.ho<=12) and (datum.ho>=1);
end;

49

{nap ellenrzse}
if (datum.nap<1) or (datum.nap>31) then
begin
writeln ('biztos j napot rt l? ');
repeat
write ('nap:');
read (datum.nap);
until (datum.nap<=31) and (datum.nap>=1);
end;
{hnap kirsa a kpernyre, pozicionlssal}
writeln;
writeln ('a bert hnap: ':30,datum.ev,'.', datum.ho,'.', datum.nap,'.');
readkey;
end.

50

Definilt tpus

Jellemzk:
A Pascalban lehetsg van az alaptpusokon kvl sajt, n. felhasznli tpusok
definilsra. Ehhez a type kulcsszt kell hasznlni a program deklarcis rszben:
type sajttpus=alaptpus;
Elszr a ltrehozand j tpus azonostjt kell megadni, majd egyenlsgjel utn egy
mr ltez tpus azonostja kvetkezik. Ezutn kell az j tpust vltozkhoz
hozzrendelni. A sajt tpus ltrehozst elssorban sszetett tpusok esetben
alkalmazzuk.

Rekordtpus

Mintapldk:
1.) rjunk programot, amely lehetsget ad egy szemly nevnek, szletsi
dtumnak s szletsi helynek bekrsre. A tetszleges adatok beolvassa utn rassa
ki a kpernyre!
i. Feladatvizsglat:
Bemen adatok:
datum: rekord tpus vltoz, hrom mezje van:
ev: egsz szm, az vet jelenti
ho: egsz szm, a hnapok szmt jelenti
nap: egsz szm, a napot jelenti
szem: rekord tpus vltoz, hrom mezje van:
nev: szveg tpus vltoz, a szemly nevt tartalmazza
szd: datum tpus vltoz, a szemly szletsi dtuma
szh: szveg tpus vltoz, a szemly szletsi helye
Kimen adatok:
Nincs, a bemen adatot ratjuk ki a kpernyre
Megolds logikja:
A C alfejezetben megismert rekord tpust hasznljuk! Kt rekord egyttes
hasznlatra van szksg, a szem rekordban hasznlnunk kell a datum ot, ezrt
ltrehozzuk a datum tpust, a fejezet elejn bemutatott mdon!
ii. Feladat megoldsa:
Mondatszer lers:
Tpus
datum: rekord
(ev, ho, nap: egsz)
Vltozk:
diak: rekord
(nev: szveg
szd: datum { datum tpust az szd vltozhoz rendeli}
szh: szveg)

51

program tipus1
ki: krem a szemly adatait:
be: diak.nev
{praktikus lehet itt is a dtum ellenrzse, segtsgl lsd a C.2-es mintapldt! }
be: diak.szd.ev
be: diak.szd.ho
be: diak.szd.nap
be: diak.szh
ki: a szemly adatai:
ki: diak.nev
ki: diak.szd.ev
ki: diak.szd.ho
ki: diak.szd.nap
ki: diak.szh
program vge.
A feladat pascal kdja:
program tipus1;
uses crt;
type
datum = record
ev,ho,nap: word;
end;
var
diak: record
nev: string[20];
szd: datum; { datum tpust az szd vltozhoz rendeli}
szh: string[20];
end;
begin
clrscr;
writeln ('krem a szemly adatait! ');
writeln ('a szletsi dtumot v/h/nap formban rd! ');
writeln; {res sor}
{ A with utasts magjban nem kell kirnunk a rekord azonostjt:}
with diak do
begin
write ('Nv: ');
readln (nev);
write ('szletsi dtuma: ');
readln (szd.ev, szd.ho, szd.ev);
write ('szletsi helye: ');
readln (szh);
end;
writeln;
writeln ('a bert szemly adatai: ');
with diak do
begin
writeln (nev);
writeln (szd.ev, szd.ho, szd.nap);
writeln (szh);
end;
end.
52

2.) rjunk programot, amely egy osztly tanulinak adatait (nv/ anyja neve/ szletsi
dtum/ szletsi hely) kri be, majd kirja az osztlyban jr tanulk nevt!
i. Feladatvizsglat:
Bemen adatok:
n: egsz szm, az osztly ltszma
datum: rekord tpus vltoz, hrom mezje van:
ev: egsz szm, az vet jelenti
ho: egsz szm, a hnapok szmt jelenti
nap: egsz szm, a napot jelenti
szem: rekord tpus vltoz, hrom mezje van:
nev: szveg tpus vltoz, a tanul nevt tartalmazza
an: szveg tpus vltoz, a tanul anyja nevt tartalmazza
szd: datum tpus vltoz, a tanul szletsi dtuma
szh: szveg tpus vltoz, a tanul szletsi helye
diakok: n elem sorozat, a tanulk szemlyes adataival, elemei szem tpusak
Kimen adatok:
Nincs, a bemen adatot ratjuk ki a kpernyre
Megolds logikja:
Az elz pldhoz hasonlan ltrehozzuk a szem tpust, majd a mr megismert
mdon definilunk egy tmbt, aminek elemei szem tpusak lesznek. A tmb
elemeire val hivatkozsnl meg kell adjuk, hogy a tmb hnyadik elemnek, melyik
mezjre vagyunk kvncsiak, pldul a harmadik dik nevt a diakok(i).nev adja.
ii. Feladat megoldsa:
Mondatszer lers:
Tpus
datum: rekord
(ev, ho, nap: egsz)
diak: rekord
(nev: szveg
an: szveg
szd: datum { datum tpust az szd vltozhoz rendeli}
szh: szveg)
Vltozk:
n,i: egsz
diakok: tomb(1..n: diak)
program tpus2
be: n
ciklus i:=1-tl n-ig
be: diakok(i).nev, diakok(i).an
{praktikus lehet itt is a dtum ellenrzse, segtsgl lsd a C.2-es mintapldt! }
be: diakok(i).szd.ev
be: diakok(i).szd.ho
be: diakok(i).szd.nap
be: diakok(i).szh
ciklus vge
ciklus i:=1-tl n-ig
ki: diakok(i).nev
ciklus vge
program vge.
53

A feladat pascal kdja:


program tipus2;
uses crt;
type
datum = record
ev, ho, nap: word;
end;
diak= record
nev: string [20];
an: string [20];
szd: datum;
szh: string [20];
end;
var
i,n: integer;
diakok: array [1..50] of diak;
begin
clrscr;
write ('hny dik jr az osztlyba? ');
readln (n);
clrscr;
writeln ('krem a dikok adatait! ');
writeln ('a szletsi dtumot v/h/nap formban rd! ');
writeln; {res sor}
for i:=1 to n do
with diakok[i] do
begin
write ('Nv: ');
readln (nev);
write ('Anyja neve: ');
readln (an);
write ('szletsi dtuma: ');
readln (szd.ev, szd.ho, szd.ev);
write ('szletsi helye: ');
readln (szh);
end;
writeln;
writeln ('az osztlyba jr dikok: ');
writeln;
for i:=1 to n do
with diakok[i] do writeln (nev);
readkey;
end.

54

Halmaztpus:

Mintapldk
1.) rjunk programot, mely bekr egy szmot, s eldnti, hogy a szm 1 s 5 kztt
van-e?
i. Feladatvizsglat:
Bemen adatok:
i: a beolvasott szm, egsz tpus vltoz,
Kimen adatok
nincs, szveges vlaszt adunk
A megolds logikja:
Az eddig megismert mdtl eltren oldjuk meg a feladatot. Ltrehozunk egy
felsorolt tpust, melynek elemei 1-tl 5-ig terjed egsz szmok. Ellenrizzk, hogy
a beolvasott szm eleme-e (in) ennek a halmaznak. Ha igen, akkor, kiratjuk, hogy a
szm megfelel a kvetelmnynek, klnben meg azt, hogy nem megfelel a szm.
ii. Feladat megoldsa
Mondatszer lers:
Konstans
jegy=[1..5]
vltozk
i: egsz
program halmazok1
be: i
ha (i eleme jegy) akkor ki: a szm megfelel a feltteleknek
klnben ki: nem megfelel a szm
elgazs vge
program vge.
A feladat pascal kdja:
program halmazok1;
uses crt;
const
jegy=[1..5];
var
i: integer;
begin
clrscr;
write ('krem a jegyet: ');
readln (i);
if (i in jegy) then write ('a szm megfelel a feltteleknek)
else
writeln ( nem megfelel a szm);
readkey;
end.

55

2.) rjunk programot, amely egy beolvasott szvegben felhasznlt betket rja ki ABC
sorrendben, egy bet csak egyszer szerepeljen!
i. Feladatvizsglat:
Bemen adatok:
s: a beolvasott szveg, szveg tpus vltoz,
Kimen adatok
nincs, kpernyre ratjuk ki az eredmnyt
A megolds logikja:
A feladathoz definilunk egy halmazt, amelyet elszr belltunk resre, majd a
betket sorban belerakjuk ebbe a halmazba. Vgl egy for ciklus segtsgvel
vgignzzk, hogy az ABC melyik betje van ebben a halmazban (in). Ha az adott
bet benne van a halmazban, kirjuk a kpernyre.
ii. Feladat megoldsa
Mondatszer lers:
Konstans
betu = ['A'..'Z','a'..'z']; {az ABC kis s nagybetit tartalmaz felsorolt tpus}
Tpus
nagybetu = 'A'..'Z';
Vltozk:
h: halmaz(nagybetu); {halmaz definilsa}
s: szveg;
i: egsz;
ch: karakter;
program halmaz1
ki: 'rj be egy mondatot: '
be: s
res (h)
ciklus i:=1-tl hossz(s)- ig
ha s[i] eleme betu akkor h:=h+[nagybetv(s[i])]
elgazs vge
ciklus vge
ki: 'A felhasznlt betk: '
ciklus ch:='A' tl 'Z' -ig
ha ch eleme h akkor ki: ch:2
elgazs vge
ciklus vge
program vge.

56

A feladat pascal kdja:


program halmazok1;
uses crt;
const
betu = ['A'..'Z','a'..'z'];
type
nagybetu = 'A'..'Z';
var
h: set of nagybetu; {halmaz definilsa}
s: string;
i: integer;
ch: char;
begin
clrscr;
write ('rj be egy mondatot: ');
readln (s);
h:=[]; {a h halmaz legyen reshalmaz}
for i:=1 to length (s) do {vgignzzk az s szveg betit}
{ha a karakter bet, akkor tvltjuk nagybetv s betesszk a h halmazba}
if s[i] in betu then h:=h+[upcase(s[i])];
write ('Felhasznlt betk:');
for ch:='A' to 'Z' do {vizsglunk minden karaktert a-tl z-ig}
{ha a vizsglt bet benne van a h halmazban, kiratjuk a kpernyre}
if ch in h then write (ch:2);
writeln;
readkey;
end.

57

Feladatok
1) rj programot, mely autk adatait (rendszm, tpus, szn) tartja nylvn egy 100
elem tmbben!
2) Kszts programot, amely kir egy ment:
nvsor kirsa
j dik hozzadsa
dik trlse
kilps a programbl
majd a vlasztott menpont alapjn vgrehajtja az adott mveletet utna ismt kirja ezt
a ment. A dikokrl trold a nevket, szletsi vket s a nemket (fi, lny). A
dikokat a programban egy 100 elem tmbben trold.
12) Minden munkatrsnak feljegyezzk a nevt s azt, hogy milyen munkt kpes
elvgezni. Az egyes sorozatokat rendezve troljuk. Kszts egy sszestst, arrl, hogy
milyen munkt kik tudnak elvgezni a munkacsoportban!
13) Hat bart megvitatja ki melyik vben jrt 1960 s 1994 kztt Spanyolorszgban.
Mindenki bediktlja a nevt, s az vszmot, amikor ott jrt. Mely vekben nem jrt
senki Spanyolorszgban a megadott idszakban? Van-e a bartok kztt 2, aki
ugyanabban az vbe jrt ott. Ha igen rja ki az vszmot, s a nevket!
14) Krj be karaktereket billentyzetrl, mindaddig, mg ESC-et nem tnek. Ekkor
jelentsd meg ABC sorrendben elszr azokat a betket, amelyeket letttek, majd
azokat amelyeket nem tttek le. Minden bett csak egyszer rj ki, s a nagy s
kisbetket ne klnbztesd meg!
15) Olvass be hrom szveget. rd ki azokat a betket, melyek
Szerepelnek valamelyik szvegben
Mindenik szvegben szerepelnek
Egyik szvegben sem szerepelnek
16) rj programot, mely beolvassa s kirtkeli a tippelt lottszmokat. Tippelni 1 s
max kztt lehet, s Hzsszm darabszmot lehet betni. (A program ts, hatos
lottra is hasznlhat). A nyer szmokat konstansknt adjuk meg. Beolvasskor csak
akkor fogadjuk el a bettt tippet, ha az tnyleg szm s 1 s max kztt van. Kt
egyforma tippet ne engedjnk betni!
17) Hrom jtkos mindegyike mond 10 szmot, 100 s 200 kztt. Krd be ezeket a
szmokat, de gyelj arra, hogy minden jtkosnak pontosan 10 darab 100 s kztti
szma legyen! A program rja ki, hogy mely szmok hangzottak el, majd rja ki azokat a
szmokat, melyeket mindegyik jtkos mondott!

58

I.5 Eljrsok s fggvnyek


Jellemzk:
A Pascalban lehetsg van arra, hogy ha a program futsa sorn, tbb helyen is
ugyanazt az utastssorozatot kell vgrehajtani, akkor ezt az utastscsoportot egy
alprogramba foglalhassuk. Ktfle alprogramot hozhatunk ltre: eljrst vagy
fggvnyt. Az eljrsok s fggvnyek megadsa a program deklarcis rszben
trtnik.

Eljrsok

Mintapldk:
1.) rjunk programot, mely bemutatja, hogy mit tesz a program, ha ugyanolyan nev a
loklis s globlis vltoznk is!
i. Feladatvizsglat:
Bemen adatok:
v: tetszleges vltoz, legyen egsz szm
Kimen adatok
Nincs, a bemen vltozt ratjuk ki a kpernyre
ii. Feladat megoldsa
Mondatszer lers:
Vltozk:
v: egsz
Eljrs alpr
Vltozk
v: egsz
v:=888
ki: v
Eljrs vge
Program proba
v:=555
ki: v
alpr
ki:v
Program vge
A feladat pascal kdja:
program proba;
uses crt;
var
v: integer;
procedure alprg;
var
v: integer;
begin
v:=888; {a vltoz rtke legyen 888, s rassuk is ki}
writeln ( 'Loklis V nev vltoz rtke: ',v);
end;
59

begin {fprogram}
clrscr;
v:=555; {a vltoz rtke legyen 888, s rassuk is ki}
writeln ('Globlis V nev vltoz rtke: ',v);
alprg; {hvjuk meg az eljrst}
writeln (''Globlis V nev vltoz rtke: ',v);
readkey;
end.
Megolds eredmnye:
A program kirja elszr az 555-t, majd a 888-at vgl ismt az 555-t.
2.) rjunk eljrst, mely kiszmtja egy kr terlett s kerlett!
i. Feladatvizsglat:
Bemen adatok:
r: a kr sugara, vals szm
Kimen adatok
k: a kr kerlete, vals szm
t: a kr terlete, vals szm
A megolds logikja:
Kln alprogramban (eljrsban) kiszmoljuk a kr kerlett, s a terlett. A
fprogramunkban a megfelel adatokkal, erre az eljrsra hivatkozunk.
ii. Feladat megoldsa
Mondatszer lers:
Vltozk:
r: vals
kerulet, terulet: vals
Eljrs kor (r: vals, vltoz k,t: vals)
k:=0;
t:=0;
ha r>0 akkor
t:=r*r*pi;
ki: 'a kr terlete: '
ki: t
k:=2*r*pi;
ki: 'a kr kerlete: '
ki: k
elgazs vge
Program korok
be: r
kor (r,kerulet,terulet); {eljrs hvsa}
Program vge.
A feladat pascal kdja:
program korok;
uses crt;
var
r: real;
terulet,kerulet: real;
60

{a kimen vltozkat a var utn kell deklarljuk }


procedure kor (r: real;var k,t: real);
begin
k:=0;
t:=0;
if r>0 then begin
t:=Sqr (r)*pi;
writeln ('a kr terlete: ',t:0:2);
k:=2*r*pi;
writeln ('a kr kerlete: ',k:0:2);
end;
end;
begin
write ('krem a kr sugart');
readln(r);
kor(r,kerulet,terulet); {eljrs hvsa}
end.
3.) rjunk eljrst, amely felcserli kt tetszleges vltoz rtkt!
i. Feladatvizsglat:
Bemen adatok:
x,y: 2 egsz szm
Kimen adatok
Nincs, a bemen adatot ratjuk ki a kpernyre
A megolds logikja:
A cserhez szksgnk van egy segdvltra, legyen ez s. Az s-rtke legyen
egyenl x rtkvel, ezutn az x rtke legyen egyenl y rtkvel, vgl y legyen
egyenl s el!
4.) rjunk programot, amely ltrehoz egy vletlen szmokbl ll 10 elem tmbt,
kirja az elemeit, majd minden elemt megszorozza 2-vel, s jra kirja azokat!
i. Feladatvizsglat:
Bemen adatok:
a: 10 egsz szmbl ll sorozat
Kimen adatok
Nincs, a bemen adatot ratjuk ki a kpernyre
A megolds logikja:
Kln alprogramban (eljrsban) beolvassuk a tmb elemeit. A fprogramunkban a
megfelel adatokkal, erre az eljrsra hivatkozunk.
ii. Feladat megoldsa
Mondatszer lers:
Vltozk:
i: egsz
a:tmb (1..10: egsz)
Eljrs kir
ciklus i:=1.tl 10-ig
ki: a(i)
ciklus vge
Eljrs vge
61

Program tombkiiras_alprogrammal;
ciklus i:=1-tl n-ig
a(i):=vletlenszm(99)+1
ciklus vge
kir
ciklus i:=1-tl n-ig
a(i):=2*a(i)
ciklus vge
kir
program vge.
A feladat pascal kdja:
program tombkiiras_alprogrammal;
uses crt;
const
n=10;
var
i:integer;
a:array [1..n] of integer;
procedure kiir;
begin
write ('A tmb elemei: ');
for i:=1 to n do write (a[i],' ');
writeln;
end;
begin
for i:=1 to n do a[i]:=random (99)+1; {tmb ellltsa}
kiir; {tmb kirsa alprogrammal: }
for i:=1 to n do a[i]:=2*a[i]; { tmb megvltoztatsa}
kiir; { tmb kirsa ismt alprogrammal: }
end.
5.) rjunk eljrst amely egy beolvasott dtumot ellenriz!
i. Feladatvizsglat:
Bemen adatok:
d: a beolvasott dtum
Kimen adatok
Nincs, szveges vlaszt adunk
Megolds logikja
Egy eljrst runk, amiben beolvassuk a dtumot, s egyben ellenrznk is.
ii. Feladat megoldsa
Mondatszer lers
Konstans {30 illetve 31 napos hnapok szmai}
hho=[1,3,5,7,8,10,12];
rho=[4,6,9,11];
Tpus
datum = rekord
(ev, ho, nap: egsz)
Vltozk:
d: datum;
62

Eljrs datumolvas (vltoz d: datum)


Be: d.ev, d.ho, d.nap
ha (d.ev<1970) vagy (d.ev>2010) akkor {Elszr az vet ellenrizzk}
ki: 'biztos j vet rtl?'
ciklus
be: d.ev;
amg (d.ev<2010) s (d.ev >1970)
ciklus vge
elgazs vge
ha (d.ho<1) vagy (d.ho>12) akkor {a hnap szma 1 s 12 kztt kell legyen!}
ki: 'biztos j a hnap szma? '
ciklus
be: d.ho
amg (d.ho<=12) s (d.ho>=1)
ciklus vge
elgazs vge
ha (d.ho eleme hho) akkor max:=31 klnben {belltjuk a hnap max napjt}
ha (d.ho eleme rho) akkor max:=30 klnben
ha (d.ho =2) s (d.ev mod 4 = 0) akkor max:=29 klnben {szkv vizsglata}
ha (d.ho=2) s (d.ev mod 4 <>0) akkor max:=28
elgazs vge
ha (d.nap<1) vagy (d.nap>max) akkor
ki: 'biztos j napot rtl? ';
ciklus
be: d.nap
amg (d.nap<=max) s (d.nap>=1)
ciklus vge
elgazs vge
ki: 'a beolvasott dtum: '
ki: d.ev,'. ',d.ho,'. ',d.nap,'
eljrs vge.
Program datumell
datumolvas (d)
Program vge.
A feladat pascal kdja:
program datumell;
uses crt;
const
hho=[1,3,5,7,8,10,12];
rho=[4,6,9,11];
type
datum = record
ev,ho,nap: word;
end;
var
d: datum;

63

procedure datumolvas (var d: datum);


begin
read (d.ev, d.ho, d.nap);
if (d.ev<1970) or (d.ev>2010) then
begin
writeln ('biztos j vet rtl?');
repeat
write ('v: ');
read (d.ev);
until (d.ev<2010) and (d.ev >1970);
end;
if (d.ho<1) or (d.ho>12) then
begin
writeln ('biztos j a hnap szma? ');
repeat
write ('h:');
read (d.ho);
until (d.ho<=12) and(d.ho>=1);
end;
if (d.ho in hho) then max:=31 else
if (d.ho in rho) then max:=30 else
if (d.ho =2) and (d.ev mod 4 = 0) then max:=29 else
if (d.ho=2) and (d.ev mod 4 <>0) then max:=28;
if (d.nap<1) or (d.nap>max) then
begin
writeln ('biztos j napot rtl? ');
repeat
write ('nap:');
read (d.nap);
until (d.nap<=max) and (d.nap>=1);
end;
writeln;
write ('a beolvasott dtum: ') ;
writeln (d.ev,'. ',d.ho,'. ',d.nap,'.');
end;
begin
clrscr;
write ('krem a dtumot!');
datumolvas(d);
readkey;
end.

64

Fggvnyek

Mintapldk
1.) rjunk fggvnyt, mely eldnti egy vals szmrl, hogy pozitv-e, vagy sem!
rjunk programot, amely eldnti egy msodfok egyenletrl, hogy van-e kt megoldsa!
i. Feladatvizsglat:
Bemen adatok:
a,b,c: a beolvasott vals szmok
Kimen adatok
ketgyok: logikai vltoz, igaz, ha az egyenletnek kt megoldsa van
Megolds logikja:
A pozitv fggvny egy logikai rtket ad vissza, igaz, ha a szm pozitv, ellenkez
esetben pedig hamis lesz.
ii. Feladat megoldsa
Mondatszer lers
Vltozk
a,b,c: vals
ketgyok: logikai
fggvny pozitiv (szam: vals): logikai
pozitiv:=szam>0
fggvny vge
program pozitiv
be: a,b,c
ketgyok:=pozitiv(b*b-4*a*c)
ha ketgyok akkor ki: kt megoldsa lesz az egyenletnek!
program vge.
A feladat pascal kdja:
program pozitivPR;
uses crt;
var
a,b,c: real;
ketgyok: boolean;
function pozitiv (szam: real):boolean;
begin
pozitiv:=szam>0;
end;
begin {fprogram}
clrscr;
writeln ('krem az egytthatkat');
read (a,b,c);
ketgyok:=pozitiv (sqr(b)-4*a*c);
if ketgyok then writeln ('a feladatnak kt megoldsa van!')
else writeln ('nincs kt megolds);
readkey;
end.

65

2.) Ksztsnk egy fggvnyt, amely megszmolja, hogy egy megadott szvegben
hny szkz van s ezt a szmot adja vissza!
i. Feladatvizsglat:
Bemen adatok:
s: a beolvasott szveg
Kimen adatok
A fggvny ltal visszaadott rtk lesz az eredmny.
Megolds logikja
A h vltoz jelentse a szkzk szmt! A h-t tegyk egyenlv 0-val, majd nzzk
vgig a szveget, ha tallunk szkzt benne, akkor h rtkt nveljk 1-gyel! Ha a
teljes szveget megvizsgltuk, a fggvny visszaadott rtkt tegyk egyenlv hval.
ii. Feladat megoldsa
Mondatszer lers
Vltozk
s: szveg
fggvny helyekszama (x:szveg):egsz;
(vltoz i,h:egsz) {loklis vltozk}
h:=0;
ciklus i:=1-tl hoszz(x) ig {a mondatunk minden karaktert ellenrizzk}
ha x[i]=' ' akkor h:=h+1
helyekszama:=h
elgazs vge
ciklus vge
fggvny vge
program szokozok {fprogram}
be: s
ki: 'A mondatban ',helyekszama(s),' szkz van.' {fggvny meghvsa}
program vge.
A feladat pascal kdja:
program szokozok;
uses crt;
var
s: string;
{rjuk meg a helyekszama nev fggvnyt! Bemen paramtere egy szveg, visszaadott
rtke pedig egsz szm lesz}
function helyekszama (x: string):integer;
var
i,h:integer; {loklis vltozk}
begin
h:=0;
for i:=1 to length(x) do {a mondatunk minden karaktert ellenrizzk}
if x[i]=' ' then h:=h+1;
helyekszama:=h;
end;

66

begin {fprogram}
clrscr;
write ('rj be egy mondatot: ');
readln (s);
writeln ('A mondatban ',helyekszama(s),' szkz van.'); {fggvny meghvsa}
readkey;
end.
3.) rjunk fggvnyt egy szm faktorilisnak kiszmtsra!
i. Feladatvizsglat:
Bemen adatok:
n: egsz szm
Kimen adatok
A fakt fggvny ltal visszaadott rtk lesz az eredmny
ii. Feladat megoldsa:
Mondatszer lers:
vltozk
n: egsz
fggvny fakt (szam: egsz): vals;
(vltozk i: egsz;f: vals)
f:=1
ciklus i:=1 tl szam ig f:=f*i
fakt:=f
fggvny vge
program faktorialis {Fprogram}
be: n
ki: 'n! = '
ki: fakt(n):8:1
program vge.
A feladat pascal kdja:
Program faktorialis;
uses crt;
Var
n: integer;
Function fakt (szam: integer): real;
Var
i: integer;
f: real;
begin
f:=1;
for i:=1 to szam do f:=f*i;
fakt:=f;
end;
Begin {Fprogram}
write ('rj be egy szmot: ');
read (n);
write ('n! = ');
writeln (fakt (n):8:1);
readkey;
end.
67

Feladatok
1) rj eljrst mely, az tadott karakterlncbl kitrli z sszes megadottal egyez
rszlncot!
2) rj egy eljrst, mely egy szorztblt jelent meg a kpernyn! A tnyezk 1 s 10
kztti szmok.
3) rj egy eljrst, mely paramterknt megkap hrom szmot, s
Azokat rendezve kirja a kpernyre
Azokat rendezi
Visszaad egy logikai rtket, hogy a hrom szm rendezett-e!
4) rj Nyjt eljrst, amely a megadott szmot megnyjtja (megszorozza) a megadott
rtkkel!
5) rj eljrst, mely bekr hrom nevet, s rendezi ezeket nvekv sorrendbe!
6) rj eljrst s/vagy fggvnyt a kvetkez feladatok megoldsra:
Egy tglalap terletnek szmtsa, a tglalap oldalai alapjn
Vals szm kbgyknek szmtsa
Inch konvertlsa centimterr
Kt karakterlnc kzs karaktereinek meghatrozsa
Karakterlnc kirsa fordtva
Karakterlnc tmrtse, szkzket kivesszk belle
7) rj 3 fggvnyt:
Signum(x), a szm eljelt adja vissza,
Reciprok(x), egy szm reciprokt adja vissza
Negyzet(x) .egy szm ngyzett adja vissza!
8) rj 2 fggvnyt:
VektAbs(x,y), egy vektor (x,y) koordintj vektor abszolutrtkt adja vissza.
Hatvany(a,n), egy vals alap egsz kitevj hatvnyt adja vissza.
9) rj fggvnyt, melynek bemeneti vltozja egy szm, s visszaadja az els nla
nagyobb prmszmot!
10) rj UPPER azonostj fggvnyt, amely egy bet karaktert nagybetre konvertl
Ha a bemen paramter nagybet, akkor vltozatlanul hagyja, ha kisbet, akkor annak
nagybet megfeleljt adja vissza.
11) rj KICSI azonostj fggvnyt, amely egy bet karaktert kisbetre konvertl. Ha
a bemen paramter kisbet, akkor vltozatlanul hagyja, ha nagybet, akkor annak
kisbet megfeleljt adja vissza.
12) rj fggvnyt, mely visszaadja a paramterknt megkapott karakterlnc utols 5
karaktert!
13) rj MAX2(x,y) ktvltozs fggvnyt, amely a kt adott szm rtke kzl a
nagyobbikat adja vissza!
14) rj MAX3(x,y,z) hromvltozs fggvnyt, amely a hrom adott szm rtke kzl
a legnagyobbikat adja vissza!
15) rj fggvnyt, amely bemenete egy hromszg hrom oldalnak hossza, s igaz
logikai rtkkel tr vissza, ha a hromszg derkszg!
16) rj fggvnyt mely visszaadja, hogy egy megadott karakterlncban a megadott
karakterekbl mennyi szerepel!

68

II Elemi programozsi ttelek


Az elemi programozsi ttelek egy sorozathoz egy elemet rendel.
A feladatoknak csak a feldolgoz eljrst tallod itt. Az adatok beolvassra, illetve
kirsra csak a Beolvas s Kir eljrssal utalunk. Lsd: I fejezet

II.1

Sorozatszmts

Mintapldk
1.) Egy osztly tanulinak egyni tlageredmnyei ismeretben adjuk meg az osztly
tlagt!
i. Feladatvizsglat:
Bemen adatok:
n: az osztly tanulinak szma, egsz szm
va: a tanulk tlageredmnyeit tartalmaz n elem vals sorozat
Kimen adatok:
atlag: az osztly tlaga, vals szm.
A program (megolds) logikja:
Az atlag nev vltoz kezdrtke legyen 0, ezt a ciklus eltt lltjuk be,
cikluslpsenknt egy-egy tmbelemet hozzadunk. A ciklus befejezse utn a
vltozt elosztjuk n-nel, gy az tlagot kapjuk
ii. Feladat megoldsa:
Folyamatbra:
Start
Be: n,va
atlag:=0
I:=1..n
atlag:=atlag+va[i]

atlag:=atlag / n
Ki: atlag /
n
Stop

69

Mondatszer lers:
vltozk
n,i: egsz
va: tmb (1..n: vals)
atlag: tmb (1..n: vals)
Program tlag
beolvas (N,va)
sszegzs (N, Va, atlag)
ki: atlag
Program vge.
sszegzs (n: egsz, Va: tmb, vltoz atlag: vals)
atlag:=0
ciklus i:=1-tl n-ig
atlag:=atlag+va[i]
ciklus vge
atlag:=atlag/n
eljrs vge.
A feladat pascal kdja:
program atlag;
uses crt;
type
jegyek=array [1..30] of real;
var
n,i: byte;
va:jegyek;
atlag: real;
Procedure beolvas (var N: integer; var Va: jegyek);
begin
.............................................................
{a megvalstst lsd 1.4.B, 1.5 fejezetben}
end;
Procedure atlagol (n: integer; va: jegyek; var atlag: real);
begin
atlag:=0;
for i:=1 to n do atlag:=atlag+va[i]; {a jegyek sszegt adja}
atlag:=atlag/N;
end;
begin {ez a fprogram rsz}
clrscr;
beolvas (N,Va);
atlagol (N,Va,atlag);
writeln (a jegyek tlaga: ,atlag); {az eredmny kiratsa}
end.

70

2.) Adott egy lista, amiben egy tel receptjt troljuk, egy msikban a megadott
nyersanyagok rt! rjunk programot, amely az kiszmolja elksztend tel nyersanyag
kltsgt!
i. Feladatvizsglat:
Bemen adatok:
N: a ksztend telhez szksges nyersanyagok szma, egsz szm.
X: az telhez szksges nyersanyag mennyisgeket tartalmaz vals sorozat.
Y: nyersanyagok egysgrait tartalmaz vals sorozat;
Kimen adatok:
kolt: az tel kltsge, vals szm
A program logikja:
a kolt nev vltoz kezdrtkt legyen nulla, cikluslpsenknt a kt tmb egy-egy
elemt sszeszorozzuk, majd hozzadjuk a kolt vltozhoz. A ciklus befejezse utn
a vltoznk a keresett kltsget tartalmazza.
ii. Feladat megoldsa:
Mondatszer lers
Tpus
elemek= tmb (1..n: vals)
Vltozk
n: egsz
x, y: elemek
kolt: vals
Program koltseg
Beolvas (N, X, Y)
Nyersanyag (N, X, Y, kolt)
Ki: kolt
program vge.
Eljrs nyersanyag (N: egsz, vltoz x,y: elemek, kolt: vals)
(vltoz i: egsz)
kolt:=0
ciklus i:= 1-tl n-ig
kolt := kolt+x[i]*y[i]
ciklus vge
eljrs vge;
A pascal kd:
program koltseg;
uses crt;
type
elemek =array[1..100] of real;
var
N: byte;
kolt: real;
x, y:tomb;

71

Procedure beolvas (var N:byte; var X: elemek; var Y: elemek);


(Var i: byte)
Begin
.............................................................
{megvalstshoz segtsget az 1.4.B, 1.5 fejezetekben tallsz}
end;
Procedure szamol (N:integer; X,Y: elemek; var kolt: real);
begin
kolt:=0;
for i:=1 to n do kolt:=kolt+x[i]*y[i];
end;
begin {fprogram}
clrscr;
beolvas (N,X,Y);
szamol (N,X,Y,kolt);
write (az tel kltsge: ,kolt);
end.

72

Kzs jellemzk:
Egy sorozathoz hozzrendeljk az elemein vgzett valamilyen mvelet eredmnyt.
Pldul: N szm sszegt, szorzatt. A feladatok egy rsznl az gy kiszmtott rtkkel
esetleg mg egyszer mveletet kell vgezni. (Lsd 1-es mintaplda).
Ehhez a feladattpushoz az albbi ltalnos feldolgoz eljrs tartozik:
i. Feladatvizsglat:
Bemen adatok:
N: egy adott sorozat elemeinek a szma, egsz szm
tomb: a sorozat elemeit tartalmaz tmb, tpusa a feladattl fggen vltozik
Kimen adatok:
E: a keresett rtket tartalmazza, tpusa a feladattl fggen vltozik
A program logikja:
az E nev vltoznak a ciklus eltt kezdrtket adunk, cikluslpsenknt egy-egy
tmbelemet dolgozunk fel, pldul hozzadjuk, szorozzuk. A ciklus befejezse utn a
vltozban az eredmnyt kapjuk.
ii. Feladat megoldsa:
Folyamatbra:

Start
Be:
N,tomb
E:=kezdoertek
I:=1..N
E:=E muv tomb[i]

Ki: E
Stop

73

Mondatszer lers:
Program sorozatszmts
Beolvas (N, T)
Sorozatszmts (N, T, E)
Kir (E)
Program vge.
Eljrs szmts (N:egsz, T:tomb, vltoz E:eredmny)
E:=kezdrtk
Ciklus I:=1-tl N-ig
E:=E mvelet A(i)
Ciklus vge;
Eljrs vge.

74

Feladatok
1.) Hatrozd meg K db egsz szm kbnek sszegt!
2.) N hnapon t trlesztettnk egy klcsnt, havonknti fizetssel. (Havonta
klnbz sszegeket is fizethetnk.) rj programot, mely megadja az eddig kifizetett
sszeget!
3.) Adott egy tekz sorozata (melyik fordulban hny ft ttt. rj programot, amely
meghatrozza a versenyz sszestett eredmnyt!
4.) Egy labdarug bajnoksgon ismerjk minden csapatrl, hogy hnyszor gyztt s
hnyszor jtszott dntetlent. rj programot, mely megadja, melyik csapatnak hny pontja
van! (gyzelemrt 2, dntetlenrt 1 pont jr)
5.) Mrjk meg N napig a lehullott csapadk mennyisget (mm-ben). Hatrozd meg,
hogy mennyi es esett sszesen!
6.) Adott egy tblzat, amely tartalmazza az egyes vrosok kzton mrt tvolsgt,
valamint adott a gpkocsink tlagos fogyasztsa s a hasznlt zemanyag egysgra. rj
programot, amely bekri az tvonalat, majd meghatrozza az tlagos zemanyag
kltsget!
7.) Egy horgszverseny adatait egy mtrixban truljuk, M(i,j) jelenti, hogy az i.
horgsz j. halfajtbl mennyit fogott. rj programot, amely kiszmtja, hogy az egyes
horgszok sszesen mennyit fogtak!

75

II.2 Eldnts
Mintapldk
1.)

Dntsk el egy tanul v vgi jegyei alapjn, hogy kitn tanul-e!


i. Feladatvizsglat:
Bemen adatok:
N: a tanul v vgi jegyeinek szma, egsz szm,
jegy: a tanul tantrgyi jegyeit tartalmaz egsz sorozat,
Kimen adatok:
kituno: logikai vltoz, igen esetn kitn, nem esetn nem kitn a tanul,
A program logikja:
Nzzk vgig a jegyeket, elszr az elst, majd sorra a tbbit s ellenrizzk, hogy
ts-e. Ha talltunk olyat, ami nem ts, akkor nem kell megnzni a tovbbi
jegyeket, mert van nem ts osztlyzat, azaz nem kitn.
ii. Feladat megoldsa:

Folyamatbra:
Start
Be: N, jegy
I:=1

hamis

i<=N s jegy[i]=5

Igaz
i:=i+1

mind=(i>N)

Ki: mind

Stop

76

Mondatszer lers
Tpus
jegyek= tmb(1..n: egsz)
Program kitn
Beolvas (N,jegy)
Kitn (N, jegy, kitn)
Ki: kitn
Program vge
Eljrs kitn (N:egsz, jegy: jegyek, vltoz kitn: logikai);
(vltoz i: egsz)
i:=1;
ciklus amg (i<=n) s (jegy[i]=5)
i:=i+1;
ciklus vge;
mind:=(i>N);
Eljrs vge
A feladat pascal kdja:
program kituno;
uses crt;
type
jegyek=array[1..100] of integer;
var
jegy: jegyek;
i,N: integer;
mind: boolean;
procedure beolvas (var N:integer; var jegy:jegyek);
begin
..................................................................
end;
procedure kituno (N:integer; jegy: jegyek; var mind:boolean);
begin
i:=1;
while (i<=N) and (jegy[i]=5) do i:=i+1;
mind:=(i>N);
end;
begin
clrscr;
beolvas (N,jegy);
kituno (N,jegy,mind);
if mind then writeln ('a tanul kitn)
else write ('a tanul nem kitn');
readkey;
end.

77

2.) rjunk programot, amely bekri egy kzpiskolai negyedikes osztly tanulinak
nevt, s szletsi dtumt, valamint az aktulis nap dtumt. Ezek alapjn eldnti,
hogy az adott osztly tanuli kztt van-e nagykor!
i. Feladatvizsglat:
Bemen adatok:
N: a tanulk szma, egsz szm,
d: a tanulk adatait tartalmaz sorozat,
elemei rekordok, nv, dtum mezvel
a dtum mez is rekord, v, h, nap mezkkel
anap: aktulis dtum, dtum tpus (v/h/nap)
Kimen adatok:
nk: logikai vltoz, igen esetn van nagykor dik, nem esetn nincs.
A program logikja:
Hasonlan az elz mintapldnkhoz, nzzk vgig a dikok letkort. Most azt
vizsgljuk, hogy ne legyen nagykor. A ciklus addig fut, amg tall egy nagykort,
vagy minden dikot megvizsgltunk. Teht, akkor van nagykor dik az osztlyban,
ha nem kellett minden elemet megvizsgljunk.
ii. Feladat megoldsa:
Folyamatbra
Start
Be: N, d
I:=1

hamis

i<=N s d[i] nem


nagykor

Igaz
i:=i+1

nk:=(i<=N)

Ki: nk

Stop

78

Mondatszer lers
tpus
datum = rekord
(ev,ho,nap: egsz)
diak= record
(nev: szveg
szd: datum)
diakok = tmb(1..n: diak)
Program nagykor
Beolvas dtum (anap) {a dtumot clszer ellenrizni, ezrt ajnlott a kln eljrs}
Beolvas adatok (N, d)
Eldnt (N, d, nk)
Ki: nk
Program vge.
Eljrs eldnt (N:egsz, d: diakok, anap: dtum, vltoz nk: logikai)
i:=1
ciklus amg (i<=N) s (anap.ev-d[i].szd.ev<18) vagy (anap.ho- d[i].szd.ho)>0) vagy
(anap.nap-d[i].szd.nap)>0) {nagykorsg ellenrzse }
i:=i+1
ciklus vge
nk=(i<=N)
eljrs vge.
Feladat pascal kdja
Program nagykoru;
uses crt;
type
datum = record
ev,ho,nap: word;
end;
diak= record
nev: string[20];
szd: datum
end;
diakok = array[1..50] of diak;
var
N,i:integer;
d: diakok;
nk: boolean;
anap: datum;
procedure datumolvas (var anap: datum);
begin
..................................................................
end;
procedure beolvas (var N:integer; var d: diakok);
begin
..................................................................
end;

79

procedure eldont(N:integer; d:diakok; var anap:datum; var nk:boolean);


begin
write('rd be a mai dtumot: ');
datumolvas(anap);
i:=1;
while (i<=N) and ((anap.ev-d[i].szd.ev<18) or (anap.ho-d[i].szd.ho<0)
(anap.nap-d[i].szd.nap<0)) do
i:=i+1;
nk:=(i<=N);
if nk then writeln('van az osztlyban nagykor')
else writeln('nincs nagykor az osztlyban');
end;
begin
clrscr;
beolvas(N,d);
eldont(N,d, anap, nk);
readkey;
end.

80

or

Kzs jellemzk
A bemenetknt megadott sorozathoz egy logikai rtket kell rendelni. A vizsglt sorozat
elemeirl felttelezzk: mindegyikrl eldnthet, hogy rendelkezik egy bizonyos
tulajdonsggal vagy nem.
Ezek a feladatok 2 csoportba sorolhatk aszerint, hogy azt kell eldnteni, hogy
a sorozatban ltezik-e egy bizonyos tulajdonsg elem, (2-es mintaplda) vagy
mindegyik elem rendelkezik-e ezzel a tulajdonsggal.(1-es mintaplda)
Az els csoport ltalnos megoldsa:
i. feladatvizsglat:
Bemen adatok:
N: egy adott sorozat elemeinek a szma, egsz szm
X: a sorozat elemeit tartalmaz tmb, tpusa a feladattl fggen vltozik
T: a sorozat elemeire vonatkoz tulajdonsg
Kimen adatok:
van: logikai vltoz, rtke igaz, ha ltezik a sorozatban keresett tulajdonsg elem.
A megolds logikja:
Tesztel ciklust hasznlunk, vizsgljuk, hogy van-e sorozatban adott tulajdonsg
elem. Amint talltunk egyet, a ciklus lell. Teht, akkor van T tulajdonsg elem a
sorozatban, ha a nem kellett minden elemt megvizsgljuk.
ii. Feladat megoldsa:
Folyamatbra:
Start
Be: N, X
I:=1

hamis

i<=N s
nem T(X[i])

Igaz
i:=i+1

Van:=(i<=N)

Ki: van

Stop

81

Mondatszer lers
Tpus
T=tmb(1..N: elemtpus)
Program keres
Beolvas (N, X)
Eldnt (N, X, van)
Kir (van)
Program vge.
Eljrs eldnt (N:egsz, X: T, vltoz van: logikai)
I:=1
Ciklus amg i<= N s nem T(tomb[i])
I:=i+1
Ciklus vge
Van:=(i<=N)
Eljrs vge.
A msodik csoport ltalnos megoldsa:
i. Feladatvizsglat:
Bemen adatok:
N: egy adott sorozat elemeinek a szma, egsz szm
X: a sorozat elemeit tartalmaz tmb, tpusa a feladattl fggen vltozik
T: a sorozat elemeire vonatkoz tulajdonsg
Kimen adatok:
mind: logikai vltoz, rtke igaz, ha a sorozat minden eleme rendelkezik az adott
tulajdonsggal
A program logikja:
Ennl a csoportnl olyan elemet keresnk, ami nem T tulajdonsg. Ha egyet
talltunk nem kell tovbb vizsglni a sorozatunkat, mivel biztosan nem lesz minden
elem T tulajdonsg.
ii. Feladat megoldsa:
Folyamatbra:
Start
Be: N, X
I:=1

hamis

i<=N s T(X[i])

Igaz
i:=i+1

Mind:=(i>N)

Ki: Mind

Stop

82

Mondatszer lers:
Tpus
T=tmb(1..N: elemtpus)
Program mind
Beolvas (N, X)
Eldnt (N, X, mind)
Kir (mind)
Program vge.
Eljrs eldnt (N:egsz, X: T, vltoz mind: logikai)
I:=1
Ciklus amg i<= N s T(X[i])
I:=i+1
Ciklus vge
Mind:=(i>N)
Eljrs vge.

83

Feladatok
1) Adott egy szm, rj programot, mely eldnti, hogy prmszm-e?
2) rj programot, mely eldnti egy szrl a ht napjainak sorozata alapjn, hogy nap
neve-e!
3) Szeptemberben minden nap megmrtk a dli hmrskletet. rj programot, mely
eldnti, hogy a hmrskletek sorozata monoton fogy-e!
4) A vasti nyilvntarts tartalmazza a Savaria expresszre kiadott helyjegyeket. rj
programot, mely eldnti hogy van-e mg szabadhely a vonaton!
5) Egy sznhz pnztrnak nyilvntartsa tartalmazza, hogy egy adott eladsra mely
helyekre keltek mr el jegyek. (Jelentse pl. a B(i,j) tmbelem az i. sor j. helyt a
baloldalon, J(i,j) ugyanezt a jobboldalon. A tmbelemek rtke 1, ha az adott helyre
szl jegy mr elkelt, 0, ha nem). rj programot, mely eldnti, hogy van-e kt
szomszdos szabad hely az eladsra!
6) Egy bngyi nyilvntartsban a zsebtolvajokrl ngy adatot trolnak: magassg,
szemszn, hajszn, eddig letlttt bntets. rj programot, mely eldnti, hogy van-e kt
olyan zsebtolvaj, akinek legalbb kt nyilvntartott adata megegyezik!
7) Egy bngyi nyilvntartsban a zsebtolvajokrl ngy adatot trolnak: magassg,
szemszn, hajszn, eddig letlttt bntets. rj programot, mely eldnti, hogy van-e kt
olyan zsebtolvaj, akiket a nyilvntarts nem klnbztet meg!
8) Egy bngyi nyilvntartsban a zsebtolvajokrl ngy adatot trolnak: magassg,
szemszn, hajszn, eddig letlttt bntets. rj programot, mely eldnti, hogy van-e
olyan zsebtolvaj, akit ez a ngy adat a nyilvntartsban szmon tartott minden ms
szemlytl megklnbztet!
9) Adott a tanulk neve s magassga nvsor szerint rendezve. Dntsk el, hogy a
nvsor s a magassg szerinti sorrend megegyezik-e?

84

II.3

Kivlaszts

Mintapldk
1.) Adjuk meg egy pozitv egsz szmokbl ll tmb els, 9-cel oszthat elemnek
sorszmt, ha tudjuk, hogy ilyen biztosan van!
i. Feladatvizsglat:
Bemen adatok:
N: A sorozat elemeinek a szma, egsz szm
X: az egsz szmokat tartalmaz tmb
Kimen adatok:
sz: az els, 9-cel oszthat szm indexe a tmbben.
A program logikja:
A sorozat minden elemre kpezzk a 9-cel val oszts maradkt mindaddig, amg
ez nagyobb 0-nl. Az els olyan elem, sorszma, amelyre ez a felttel nem teljesl, a
feladat megoldsa lesz. Ilyen elem biztosan van, ezrt nem foglalkozunk azzal, hogy
nincs.
ii. Feladat megoldsa:
Folyamatbra:
Start
Be: N, X
I:=1

hamis

X[i] mod 9>0

Igaz
i:=i+1

Sz:=i

Ki: sz

Stop

Mondatszer lers
Tpus
szamok=tmb(1..N: egsz)
Program kivlaszts
Beolvas (N, X)
Kivlaszt (N, X, sz)
Kir (sz)
Program vge
85

Eljrs kivlaszt (N: egsz, X: szamok, vltoz sz: egsz)


i:=1
ciklus amg X[i] mod 9 > 0
i:=i+1
ciklus vge
sz:=i
eljrs vge
A feladat pascal kdja
program kivalasztas;
uses crt;
type
szamok=array [1..100] of integer;
var
X: szamok;
N,sz,i: integer;
procedure beolvas (var N:integer; var X: szamok);
begin
..................................................................
end;
procedure kivalaszt(N: integer; X: szamok; var sz: integer);
begin
i:=1;
while(X[i] mod 9 > 0) do i:=i+1;
sz:=i;
write('a sorozat ',i,'. eleme oszthat kilenccel');
end;
begin
clrscr;
beolvas (N,X);
kivalaszt (N,X,sz);
readkey;
end.
2.) Hatrozzuk meg az N (N>=1) termszetes szm, legnagyobb nmagtl
klnbz osztjt!
i. Feladatvizsglat:
Bemen adatok:
N: termszetes szm
Kimen adatok:
o: az N szm legnagyobb osztja
A program logikja:
A szmokat 1-tl N-ig egy olyan sorozatnak tekintjk, amiben az elemek sorszma
megegyezik az elemek rtkvel. Mivel a legnagyobb osztt keressk, gy az
elemeket az htulrl visszafel dolgozzuk fel. Tudjuk, hogy egy szmnak a
legnagyobb, nmagtl klnbz osztja biztos kisebb, mint a szm fele, elg csak
N/2 egszrsztl vizsglni az elemeket. N-nek kpezzk a sorozat elemeivel val
oszts maradkt mindaddig, amg ez nagyobb 0-nl. Az els olyan elem, amelyre ez
a felttel nem teljesl, a feladat megoldsa lesz.

86

ii. Feladat megoldsa:


Mondatszer lers
Program oszt
Beolvas (N)
Kivlaszt (N, o)
Kir(o)
Program vge.
Eljrs Kivlaszt (N: egsz, vltoz o: egsz)
i:=egszrsz(N/2)
Ciklus amg (N mod i)>0
i:=i-1
Ciklus vge
o:=i
Eljrs vge.
A feladat pascal kdja
program oszto;
uses crt;
var
N, i, o: integer;
procedure beolvas (var N: integer);
begin
..................................................................
end;
procedure kivalaszt (N: integer; var o: integer);
begin
i:= N div 2;
while N mod i >0 do i:=i-1;
o:=i;
write ('a legnagyobb oszt: ',o);
end;
begin
clrscr;
beolvas (N);
kivalaszt (N,o);
readkey;
end.

87

Kzs jellemzk
Adott egy N elem sorozat, s egy a sorozat elemein rtelmezett T tulajdonsg. Tudjuk,
hogy a sorozatban van legalbb egy T tulajdonsg elem A feladat, ezen elem
sorszmnak vagy rtknek meghatrozsa. Az elem sorszmbl az rtke nagyon
knnyen meghatrozhat.
A feladathoz tartoz ltalnos feldolgoz eljrs:
i. Feladatvizsglat
Bemen adatok:
N: A sorozat elemeinek a szma
X: N elem sorozat, tpusa a feladattl fggen vltozik
T: A sorozat elemeire vonatkoz tulajdong
Kimen adatok:
sorsz: az els,T tulajdonsggal rendelkez elem indexe a tmbben.
A program logikja:
Tesztel ciklust hasznlunk, keressk a sorozat T tulajdonsg elemt. Az els ilyen
elem, sorszma lesz a feladat megoldsa. Ha az elem rtkre vagyunk kvncsiak,
akkor a sorozat sorszm adik eleme lesz a megolds. Ilyen elem biztosan van, ezrt
nem foglalkozunk azzal, hogy nincs.
ii. Feladat megoldsa
Folyamatbra
Start
Be: N, X
I:=1

hamis

nem T(X[i])

Igaz
i:=i+1

Sorsz:=i

Ki: sorsz

Stop

88

Mondatszer lers
Program kivlaszts
Beolvas (N, X)
Kivlaszt (N, X, sorsz)
Kir(sz) {ha az rtke is kell: X(sorsz)}
Program vge.
Eljrs kivlaszt (N:egsz, X: tmb, vltoz sorsz: egsz)
I:=1
Ciklus amg nem T(X[i])
i:=i+1
ciklus vge
sorsz:=i
Eljrs vge.

89

Feladatok
1) Hatrozd meg, egy termszetes szm legkisebb, 1-tl klnbz pozitv osztjt!
2) Hatrozd meg, az els 1 re vgzd ngyjegy prmszmot!
3) Hatrozd meg azt a legnagyobb, legfeljebb hromjegy szmot, amely
szmjegyeinek sszege ngyzetszm!
4) Egy klubdlutnra 17 rtl lehet jnni. llaptsd meg hnykor rkezett az els
lny, ha a vendgeket rkezsi sorrendben regisztrltk.
5) Kszts egy hazugsg-vizsgl gpet, amely rzkeli a figyelt szemly
pulzusszmt, s ezek alapjn megadja hogy mekkora volt a pulzusa, amikor elszr
hazudott. (Valaki hazudik, ha a pulzusszma meghalad egy adott K rtket)
6) Az rarend ismeretben hatrozd meg, mikor lesz az els informatika ra a hten!
7) Jniusban minden nap megmrtk Sifoknl a Balaton hmrsklett. Adj meg egy
napot, amikor a vz hmrsklete nem rte el a 20 fokot!
8) Ismerjk egy hnap nevt. A hnapnevek sorozata alapjn mondd meg a sorszmt!
9) A november havi nvnapok sorozata alapjn mondd meg, hogy hnyadikn van
Katalin nvnap!
10) Egy tmbben fontos, magyar, trtnelmi esemnyek s vszmai szerepelnek.
Mikor mondta ki a romn npgyls Magyarorszgtl val elszakadst? rj programot
trtnelmi vszmok keressre!

90

II.4

Lineris keress

Mintapldk
1.) rjunk programot, amely bekr egy termszetes szmot, majd kirja a legkisebb
valdi osztjt!
i. Feladatvizsglat
Bemen adatok:
N: egy termszetes szm
Kimen adatok:
van: logikai vltoz, megmutatja, hogy van-e valdi osztja a szmnak
sorsz: az els valdi oszt indexe a szmsorban.
A program logikja:
Tesztel ciklust hasznlunk. Tudjuk, hogy egy szmnak a legnagyobb, nmagtl
klnbz osztja biztos kisebb, mint a szm fele, ezrt elg 2-tl N/2 egszrszig
vizsglni az elemeket. N-nek kpezzk a sorozat elemeivel val oszts maradkt.
Ha talltunk olyat, ahol a maradk nulla, akkor van megolds, s a megolds a
megtallt szm sorszma, ami ez esetben megegyezik a szmmal, klnben nincs
megolds.
ii. Feladat megolds
Mondatszer lers
Program valdi_oszt
Beolvas (N)
Keres (N, sorsz)
Ki: sorsz
Program vge
Eljrs keres (N: egsz, sorsz:egsz, vltoz van: logikai)
I:=2
Ciklus amg (i<=egszrsz(N/2)) s (N mod i>0)
i:=i+1
Ciklus vge
Van:=(i<=N)
Ha van akkor sorsz:=i
Eljrs vge.

91

Folyamatbra
Start
Be: N
I:=2

hamis

(i<=N div 2) s
(N mod i>0)

Igaz
i:=i+1

Van:=(i<=N)

igaz
Van

hamis

Sorsz:= i

Ki: van
sorsz

Stop

A feladat pascal kdja:


program oszto;
uses crt;
var
i: integer;
N: integer;
sorsz: integer;
van: boolean;
procedure beolvas (var N: integer);
begin
..................................................................
end;

92

procedure keres(N: integer; var sorsz: integer; var van: boolean);


begin
i:=2;
while (i<= (N div 2)) and ((N mod i) >0) do i:=i+1;
van:=(i<=N div 2);
if van then
begin
sorsz:=i;
writeln ('a szm legkisebb valdi osztja: ',sorsz);
end
else writeln ('a szm prmszm');
end;
begin
clrscr;
beolvas (N);
keres (N,sorsz, van);
readkey;
end.
2.) Egy kosrlabda csapat nyilvntartsa tbbek kztt tartalmazza a jtkosok nevt
s magassgt. rjunk olyan programot, amely kirja egy 210 cm-nl magasabb jtkos
nevt!
i. Feladatvizsglat
Bemen adatok:
N: a csapat tagjainak szma, egsz szm,
k: a tanulk adatait tartalmaz sorozat,
elemei rekordok, nv: szveg, mag: egsz tpus mezkkel, melyek a jtkosok
nevt, illetve magassgt tartalmazzk
Kimen adatok:
van: logikai vltoz, megmutatja, hogy van-e 210 cm-nl magasabb jtkos
neve: az els ilyen magas jtkos neve, ha van ilyen.
A program logikja:
Nzzk vgig a sorozat elemeit, amg tallunk 210 cm -nl magasabb jtkost. Ha
talltunk ilyet, akkor a megolds ennek a jtkosnak a neve, klnben nincs ilyen
jtkos.
ii. Feladat megolds:
Mondatszer lers
Tpus
jatekosok = rekord
(nev: szveg
mag: egsz)
Program magassg
Beolvas (N,k)
Keres (N, k, van, neve)
Ki :van, neve
Program vge.

93

Eljrs keres(N: egsz, K: jatekosok, vltozk van: logikai, neve:szveg)


i:=1
ciklus amg (i<=N) s (k(i).mag<=210)
i:=i+1
ciklus vge
van:=(i<=N)
ha van akkor neve:=k(i).nev
ki: neve
eljrs vge.
Feladat pascal kdja:
program magassag;
uses crt;
type
szoveg=string[10];
jatekos=record
nev:szoveg;
mag:integer;
end;
jatekosok=array[1..100] of jatekos;
var
k: jatekosok;
i: integer;
N: integer;
van: boolean;
neve: szoveg;
procedure beolvas(var n: integer; var k: jatekosok);
begin
..................................................................
end;
procedure keres(N: integer; k: jatekosok; var van: boolean; var neve: szoveg);
begin
i:=1;
while (i<=N) and (k[i].mag-210 <=0) do i:=i+1;
van:=(i<=N);
if van then
begin
neve:=k[i].nev;
writeln(k[i].nev,' jtkos magasabb, mint 210 cm');
end
else writeln('nincs ilyen magas jtkos a csapatban');
end;
begin
clrscr;
beolvas(n,k);
keres(N,k,van,neve);
readkey;
end.

94

Kzs jellemzk
Adott egy N elem sorozat, s egy a sorozat elemein rtelmezett T tulajdonsg. Egy T
tulajdonsg elem sorszmnak vagy rtknek meghatrozsa a feladat, ha egyltaln
van ilyen.
A feladathoz tartoz ltalnos feldolgoz eljrs:
i. Feladatvizsglat
Bemen adatok:
N: A sorozat elemeinek a szma
X: N elem sorozat, tpusa a feladattl fggen vltozik
T: A sorozat elemeire vonatkoz tulajdonsg
Kimen adatok:
van: logikai vltoz, megmutatja, hogy van-e a sorozatban T tulajdonsg elem
sorsz: az els,T tulajdonsggal rendelkez elem indexe a tmbben.
A program logikja:
Tesztel ciklus segtsgvel nzzk vgig a sorozat elemeit, amg tallunk egy T
tulajdonsg elemet. Ha talltunk ilyet, akkor a megolds ennek az elemnek a
sorszma, klnben nincs megoldsa a feladnak.
ii. Feladat megoldsa
Mondatszer lers
Program keress
Beolvas (N)
Keres (N, sorsz)
Program vge.
Eljrs keres (N: egsz, sorsz: egsz, van: logikai)
I:=1
Ciklus amg (i<=N) s (nem T(X(i))
i:=i+1
Ciklus vge
Van:=(i<=N)
Ha van akkor sorsz:=i
Ki: sorsz
Eljrs vge.

95

Folyamatbra
Start
Be: N
I:=1

hamis

(i<=N) s
Nem T(X(i))

Igaz
i:=i+1

Van:=(i<=N)

igaz
Van

hamis

Sorsz:= i

Ki: van
sorsz

Stop

96

Feladatok
1) A november havi nvnapok sorozata alapjn mondd meg, hogy van-e Botond
nvnap, s ha van hnyadikn!
2) Ismerjk egy zlet egy havi forgalmt, napi bevtelt s kiadst. Adj meg egy
olyan napot, ha van, amelyik nem volt nyeresges!
3) A Bp. Batthyny tr - Szentendre HV menetrend reggeli rkezsi adatai alapjn
adj meg egy olyan rkezsi idpontot, amely 1/2 8 s 3/4 8 kztt van Szentendrn!
4) rj olyan programot, amely egy szabszat szemlyi nyilvntartsbl kiderti az
egyik frfi dolgoz szemlyi szmt
5) Egy hzi telefonknyvben keress egy adott nvhez tartoz telefonszmot!
6) A vradk nyilvntartsban szerepel a szemlyi szm, az rtestsi cm s a
vrcsoport. Egy balesetet szenvedett A pozitv vrcsoport emberhez keress megfelel
donort! rjuk t gy a programot, hogy tetszleges vrcsoportra is mkdjn!
7) Egy elektronikus osztlyknyv trolja a tanulk tantrgyait, a tantrgyakbl szerzett
osztlyzatainak szmt s az osztlyzatokat. rj olyan programot, amely megkeres egy
olyan tanult, akinek adott tantrgybl kevesebb, mint 2 jegye van!
8) Alaktsd t a programot, gy hogy olyan tanult keressen, akinek az adott
tantrgybl van legalbb egy egyese!
9) Egy csomag krtyt sszekevertnk
10) Add meg, hol van egyms mellett kt egyforma szn krtya
11) Add meg, hol van egyms mellett kt azonos figura
12) Add meg, hogy hol van benne joker.
13) Dolgozatrskor a tanr lsi sorrendben szedte ssze a dolgozatokat, s jegyezte
fel az rdemjegyeket. Keress olyan tanult, aki ugyangy teljestett, mint a szomszdja.

97

II.5

Megszmols

Mintapldk
1.) Adott egy pozitv egsz szmokbl ll szmsorozat. Hny pros szm van
benne?
i. Feladatvizsglat
Bemen adatok:
N: A sorozat elemeinek a szma
X: N elem egsz sorozat
Kimen adatok:
db: a pros szmok darabszma
A program logikja:
A db vltoz kezdrtke legyen nulla. Vizsgljuk a sorozat minden elemt, ha
tallunk olyat, ami oszthat kettvel, (ekkor pros egy szm), akkor nveljk eggyel
a db rtkt. A db tartalmazza a pros szmok darabszmt, ha megvizsgltuk a
sorozat minden elemt.
ii. Feladat megoldsa
Mondatszer lers
Program pros_szmok
Beolvas (N, X)
Szmols (N, X, db)
Program vge
Eljrs szmols ( N: egsz, vltoz db: egsz )
(Vltoz i: egsz)
DB : = 0
ciklus i : = 1 -tl N -ig
ha ( N mod 2) = 0 akkor DB : = DB + 1
ciklus vge
ki:DB
Eljrs vge

98

Folyamatbra
Start
Be: N,X
Db:=0

I:=1..N
igaz

hamis

hamis

igaz
N mod 2
=0
Db:=db + 1

Ki: db

Stop

Feladat pascal kdja


program paros_szamok;
uses crt;
type
szamok=array[1..50] of integer;
var
N, i: integer;
X: szamok;
db: integer;
procedure beolvas ( var N: integer; var X: szamok);
begin
..................................................................
end;
procedure szamol (N: integer; X: szamok; var db: integer);
begin
db:=0;
for i:=1 to N do
if X[i] mod 2 = 0 then db:=db + 1;
write (' a szmsorban ',db,' pros szm van');
end;
begin
clrscr;
beolvas (N, X);
szamol (N, X, db);
readkey;
end.
99

2.) Egy iskola nyilvntartsban szerepel a tanulk csaldjnak ltszma, s tlagos


havi jvedelme. rjunk programot, amely meghatrozza, hogy hny diknak jr tkezsi
tmogats! Akkor jr tmogats, ha az egy fre es havi jvedelem nem haladja meg a
60 000 forintot.
i. Feladatvizsglat
Bemen adatok:
N: Az iskolba jr tanulk ltszma
X: N elem sorozatelemei rekordok,
nv: szveg, lsz: egsz, jov: egsz tpus mezkkel, melyek a dikok nevt,
csaldjuk ltszmt s csaldra es tlagjvedelmt tartalmazzk
Kimen adatok:
db: a tmogatsra jogosult dikok szma, egsz szm
A program logikja:
A db vltoz kezdrtke legyen nulla. Vizsgljuk rendre a csaldokban az egy fre
es jvedelmet (tlagjvedelem osztva a csald ltszmval), ha tallunk olyat, ahol
ez kisebb, mint 60 000, akkor nveljk eggyel a db rtkt. A db tartalmazza a
tmogatsra jogosult dikok szmt, ha megvizsgltuk a sorozat minden elemt.
ii. Feladat megolds:
Mondatszer lers
Program tmogats
Tpus
dikok = rekord
(nev: szveg
Lsz, jov: egsz)
Beolvas (N, X)
Szmols (N, X, db)
Program vge
Eljrs szmols (N: egsz, X: dikok, vltoz db: egsz)
(Vltoz i: egsz)
DB : = 0
ciklus i : = 1 -tl N -ig
ha ( X(i).jov div X(i).lsz <= 60 000) akkor DB : = DB + 1
ciklus vge
ki:DB
Eljrs vge
Feladat pascal kdja
program paros_szamok;
uses crt;
type
diak=rekord
nev: string[20];
lsz: integer;
jov: longint;
end;
diakok=array[1..100] of diak;
var
N, i: integer;
X: diakok;
100

db: integer;
procedure beolvas( var N: integer; var X: diakok);
begin
end;
procedure szamol(N: integer; X: diakok; var db: integer);
begin
db:=0;
for i:=1 to N do
if X[i].jov div X[i].lsz <= 60000 then db:=db + 1;
write (' az iskolban ',db,' dik jogosult tmogatsra');
end;
begin
clrscr;
beolvas (N, X);
szamol (N, X, db);
readkey;
end.

101

Kzs jellemzk
Adott egy N elem sorozat, s egy a sorozat elemein rtelmezett T tulajdonsg. A
feladatunk az, hogy a T tulajdonsggal rendelkez elemeket szmoljuk ssze.
A feladathoz tartoz ltalnos feldolgoz eljrs:
i. Feladatvizsglat
Bemen adatok:
N: A sorozat elemeinek a szma
X: N elem sorozat, tpusa a feladattl fggen vltozik
T: A sorozat elemeire vonatkoz tulajdonsg
Kimen adatok:
db: egsz szm, T tulajdonsg elemek szma a tmbben
A program logikja:
Szmll ciklust hasznlunk. A db vltoz kezdrtke legyen nulla. Vizsgljuk
rendre a sorozat elemeit, hogy rendelkeznek-e T tulajdonsggal, ha tallunk ilyet,
akkor nveljk eggyel a db rtkt. A db tartalmazza T tulajdonsg elemek szmt,
ha megvizsgltuk a sorozat minden elemt.
ii. Feladat megoldsa
Folyamatbra
Start
Be: N,X
Db:=0

I:=1..N
igaz
igaz
hamis

hamis

T(X(i))

Db:=db + 1

Ki: db

Stop

102

Mondatszer lers
Tpus
elemek= tmb(1..N : elemtpus)
Program szmol
Beolvas (N, X)
Szmols (N, X, db)
Program vge
Eljrs szmols ( N: egsz, X: elemek, vltoz db: egsz )
Vltoz
i: egsz
DB : = 0
ciklus i : = 1 -tl N -ig
ha (TX(i)) akkor DB : = DB + 1
ciklus vge
ki:DB
Eljrs vge.

103

Feladatok
1) Hatrozd meg egy adott N termszetes szm osztinak a szmt!
2) Adott egy vals szmokbl ll szmsorozat. Szmold meg, hny pozitv, nulla
illetve negatv eleme van a sorozatnak!
3) Hatrozd meg, hogy hny olyan legfeljebb tjegy termszetes szm van, aminek
az els kt jegybl alkotott szm osztja az eredeti szmnak!
4) Egy futverseny eredmnyei alapjn hatrozd meg, hnyan futottak az egyni
legjobb eredmnykhz kpest jobbat!
5) Adott egy osztly tanulinak v vgi osztlyzatai. rj programot amely
meghatrozza, hogy hny tanul bukott, illetve hny kitn volt az osztlyban.
6) Dobkockval szzszor dobunk. Add meg , hogy hnyszor dobtunk pros szmot.
Alaktsd t a programot gy hogy, meg tudja adni egy adott szm elfordulsnak
szmt!
7) Egy budapesti kzpiskolai msodikos osztly nyilvntartsban troljuk a dikok
nevt, szletsi dtumt, lakcmt. Hatrozd meg:
8) Hny dik tlttte be a 16 vet!
9) Hny dik nem budapesti!
10) Hny diknak lesz szletsnapja az v adott hnapjban. A hnapot a felhasznl
tudja megadni!
11) Egy informatikai cg llsplyzatot r ki. Adottak a plyzktl elvrt kpessgek,
s a plyzk ltal felsorolt ismeretek. Kszts programot, amely megadja, hogy hny
plyz felel meg a kritriumoknak!

104

II.6

Maximumkivlaszts

Mintapldk
1.) Ismerjk egy csald havi kiadsait s bevteleit dntsk el, hogy melyik hnapban
takartottk meg a legtbbet!
i. Feladatvizsglat
Bemen adatok:
N: A vizsglt hnapok szma
X: N elem egsz sorozat elemei rekordok,
kiad: egsz szm, bev: egsz szm tpus mezkkel, melyek a havi bevtelt s a
kiadst tartalmazzk
Kimen adatok:
max: a keresett hnap sorszma
A program logikja:
Kiszmoljuk az els hnapban megtakartott sszeget. A max vltozban
megjegyezzk az els hnap sorszmt. A tbbi hnap megtakartsait is
vgignzzk, s ha valamelyik nagyobb, mint az eddig megjegyzett, akkor azt
jegyezzk meg. Ha minden elemet megvizsgltunk, akkor a max vltoz a keresett
hnap sorszmt fogja tartalmazni.
ii. Feladat megoldsa
Mondatszer lers
Tpus
nyilvntart = rekord
(kiad: egsz
bev: egsz)
Program kiadsok
Beolvas (N, X)
Kivalasztas (N, X, max)
Program vge
Eljrs kivalasztas ( N: egsz, X: nyilvntart, vltoz max: egsz )
(Vltoz i: egsz)
max : = 1
ciklus i : = 2 -tl N -ig
ha ( X(max).bev - X(max).kiad < X(i).bev - X(i).kiad ) akkor max : = i
ciklus vge
Eljrs vge

105

Folyamatbra
Start
Be: N,X
Max:=1

I:=2..N
igaz
Megtakart(max)<
megtakart(i)

hamis

hamis

igaz

Max:=i
Ki: max

Stop

A feladat pascal kdja:


program maxkeres;
uses crt;
type
nyilvantart=record
bev: longint;
kiad: longint;
end;
osszeg = array [1..24] of nyilvantart;
var
N, i: integer;
X: osszeg;
max: integer;
procedure beolvas(var X: osszeg; var N: integer);
begin
..................................................................
end;

106

procedure kivalaszt(N:integer; X: osszeg; var max: integer);


begin
max:=1;
for i:=2 to N do
if X[i].bev-X[i].kiad >X[max].bev-X[max].kiad then max:=i;
write (max,'. hnapban tudtak a legtbbet flretenni: ',X[max].bev-X[max].kiad);
end;
begin
clrscr;
beolvas (X,N);
kivalaszt (N,X,max);
readkey;
end.
2.) Egy rdi reggeli idjrs jelentsbl, llaptsuk meg, melyik vrosban volt a
leghidegebb!
i. Feladatvizsglat
Bemen adatok:
N: A felsorolt vrosok szma
X: N elem egsz sorozat elemei rekordok,
Nev: szveg, fok: egsz tpus mezk melyek a vrosok nevt, illetve a mrt
hfokot tartalmazzk
Kimen adatok:
min: a leghidegebb vros neve, szveg tpus
A program logikja:
A min vltozban megjegyezzk az els vros nevt. A tbbi vrosban mrt
hmrskletet is vgignzzk, s ha valamelyik kisebb, mint az eddig megjegyzett,
akkor azt jegyezzk meg. Ha minden elemet megvizsgltunk, akkor a min vltoz a
leghidegebb vros nevt fogja tartalmazni.
ii. Feladat megoldsa
Mondatszer lers
Tpus
hofok = rekord
(nev: szveg
fok: egsz)
hofokok= tmb(1..N: hofok)
Program hofokok
Beolvas (N, X)
Kivlaszts (N, X, min)
Program vge
Eljrs kivlaszts ( N: egsz, X: hofokok, vltoz max: egsz )
(Vltoz i: egsz)
min : = 1
ciklus i : = 2 -tl N -ig
ha ( X(min).fok>X(i).fok) akkor min : = i
ciklus vge
ki: X(min).nev
Eljrs vge

107

Folyamatbra
Start
Be: N,X
min:=1

I:=2..N
igaz
igaz

hamis

hamis

X(min).fok >
X(i).fok
Min:=i

Ki:
X(min).nev

Stop

Feladat pascal kdja:


Program hofokokPr;
uses crt;
type
hofok = record
nev: string [20];
fok: integer;
end;
hofokok= array [1..100] of hofok;
var
N: integer;
X: hofokok;
min: integer;
procedure beolvas (var X: hofokok; var N: integer);
begin
..................................................................
end;
procedure kivalasztas ( N: integer;X: hofokok; var min: integer);
var i: integer;
begin
min := 1;
for i := 2 to N do
if( X[min].fok>X[i].fok) then min := i;
writeln('a leghidegebb vros: ',X[min].nev);
end;
begin
clrscr;
Beolvas ( X,N);
Kivalasztas (N, X, min);
readkey;
end.
108

Kzs jellemzk
Adott egy N elem sorozat A feladat ezen legnagyobb elemnek meghatrozsa (nha
csupn az rtkre van szksg). Hasonl feladat csupn a relcit kell megfordtani
a minimum-kivlaszts.
A feladathoz tartoz ltalnos feldolgoz eljrs:
i. Feladatvizsglat
Bemen adatok:
N: A sorozat elemeinek a szma
X: N elem sorozat, tpusa a feladattl fggen vltozik
Kimen adatok:
max: egy olyan index, amelyre a max-adik elem a sorozat minden ms elemnl
nagyobb vagy egyenl.
A program logikja:
A max vltozban megjegyezzk az els sorszmot. A sorozat tovbbi elemeit
vgignzzk, s ha valamelyik nagyobb, mint az eddig megjegyzett, akkor annak a
sorszmt jegyezzk meg. Ha minden elemet megvizsgltunk, akkor a max vltoz a
legnagyobb elem sorszmt fogja tartalmazni. A sorozat legnagyobb eleme pedig a
max-adik elem lesz.
ii. Feladat megoldsa
Folyamatbra
Start
Be: N,X
Max:=1

I:=2..N
igaz
igaz
hamis

hamis

X(max) > X(i)

Max:=i
Ki: max
X(max)

Stop

109

Mondatszer lers
Tpus
elemek= tmb(1..N: elemtpus)
Program maxPr
Beolvasas (N,X)
Maxvalasztas (N, X,max)
Ki: max
Program vge
Eljrs Maxvalasztas (N:egsz, X: elemek, vltoz max: egsz)
vltoz i:egsz
max : = 1
ciklus i : = 2 -tl N -ig
ha ( X(max) < X( i )) akkor
max : = i
elgazs vge
ciklus vge
eljrs vge

110

Feladatok
1) Adott egy osztlyban tanul dikok lsrendje. rj programot, mely megkeresi az
elst a nvsorban!
2) Egy kosrlabdacsapat minden jtkosrl tudjuk a magassgt. rj programot, mely
megkeresi ki a legmagasabb!
3) Egy kzilabdacsapat minden jtkosrl tudjuk az letkort. Ki a legfiatalabb?
4) Egy kzilabdacsapat minden jtkosrl tudjuk az letkort. Mekkora a
korklnbsg a legidsebb s a legfiatalabb jtkos kztt?
5) rj programot, mely a tavalyi villanyszmlk ismeretben eldnti, hogy mikor
fizettnk a legkevesebbet!
6) Influenzajrvny idejn az osztlybl otthon maradt 10 diktl telefonon
megkrdeztk az elz napi legmagasabb hmrsklett. Kinek volt kzlk
legmagasabb?
7) Dobkockval szzszor dobunk, melyik szmot dobtuk a legtbbszr?
8) Adott egy n elem, egsz szmokbl ll sorozat. Hatrozd meg ezt a legnagyobb
elemt ha van- amely n-nel osztva 1-et ad maradkul!
9) Ismerjk egy osztly tanulinak tlagt. rj programot, mely meghatrozza a
legjobb tanul tlagt, valamint azt, hogy a tbbiek mennyivel maradnak le mgtte!

111

IIIllomnyok
III.1 Szveges llomnyok
Mintapldk
1.) rjunk programot, mely egy ltez proba.txt nev llomny tartalmt kirja a
kpernyre!
i. Feladatvizsglat
Bemen adatok:
Poba.txt: szveges llomny, melynek a tartalmt kiratjuk a kpernyre
Kimen adatok:
Nincs, az llomny tartalmt ratjuk ki a kpernyre
Megolds lpsei:
A szveges llomnyt a vltozk deklarlsnl text tpusknt kell deklarljuk. Az
assign(f,'proba.txt'); parancs hozzrendeli az f llomnyhoz a merevlemezen tallhat
proba.txt llomnyt. Ha az llomny nem az aktulis knyvtrban tallhat, mg kell
adni az elrsi tvonalt! Ezek utn nyissuk meg az llomnyt olvassra a reset(f);
paranccsal. A {$I-} s {$I+} utastsok kikapcsoljk/bekapcsoljk a Pascal
hibaellenrzst, teht azt, hogy ha a file megnyitsnl hiba keletkezik, akkor azt ne a
Pascal rtkelje ki, hanem mi. A megnyits utn az IOResult vltoz rtke 0, ha
sikerlt megnyitni az llomnyt, klnben a hiba kdjt tartalmazza. Ha sikerlt
megnyitni az llomnyt, akkor egy ciklus segtsgvel kiolvasunk belle egy sort a
readln(f,s); paranccsal, majd ezt kirjuk a kpernyre. A ciklus ezt a kt utastst addig
ismtli, amg nem rtnk az llomny vgre - not eof(f). (eof = end of file). Vgl a
close(f) paranccsal bezrjuk az llomnyt.
ii. Feladat megoldsa
A feladat pascal kdja
program allomanyPr1;
uses crt;
var
f:text;
s: string;
begin
assign (f,'proba.txt'); {proba.txt f-hez val rendelse}
{$I-}
reset (f); {f megnyitsa olvassra}
{$I+}
if ioresult=0 then begin {hiba ellenrzse}
while not eof(f) do begin
readln (f, s); {soronknt olvassuk ki f tartalmt}
writeln(s);
end;
close(f); {f bezrsa}
end;
readkey;
end.

112

2.) rjunk programot, amely az 1-es pldban megadott llomnyhoz, hozzfz mg


nhny sort / vgjelig! Ellenrizzk le, hogy a fjl ltezik-e!
i. Feladatvizsglat
Bemen adatok:
Poba.txt: szveges llomny, melynek a tartalmt kiratjuk a kpernyre
s: szveg, melyet a proba.txt-be berunk
Kimen adatok:
Nincs, az llomny tartalmt vltoztatjuk
Megolds lpsei:
Elszr rendeljk hozz a proba.txt llomnyt az f llomnyhoz, majd nyissuk meg
az append(f) paranccsal, az gy megnyitott fjlban file-mutat mely az aktulis
pozcit mutatja a file-ban az llomny vgn ll. Utna ellenrizzk, hogy sikerlt-e
megnyitni llomnyt. A vgjelig val beolvass, a mr megismert mdon trtnik.
Fjlba a write(file_vltoz, szveg) vagy a writeln(file_vltoz, szveg)
parancsokkal tudunk berni szveget.
ii. Feladat megoldsa
Pascal kd
program szovegtovabb;
uses crt;
var
f: text;
ujsor:string;
begin
clrscr;
assign(f,'proba.txt');
{$I-}
reset(f);
{$I+}
if ioresult=0 then
begin
append(f);{f-et megnyitjuk tovbbrsra}
writeln('Megtalltam a szoveg.txt fjlt,');
writeln('Most nhny sort hozz rhatsz.');
writeln('Ha vge, akkor a kvetkez sor elejre "/" jelet rj!');
readln(ujsor);
while ujsor <> '/' do
begin
writeln(f,ujsor);
readln(ujsor);
end;
close(f);
end;
end.

113

3.) rjunk programot, mely ltrehoz egy szoveg.txt nev text llomnyt az aktulis
knyvtrban. rjunk bele sorokat az res sor vgjelig. Ezutn a letrlt kpernyre
rassuk ki a file tartalmt, vgl zrjuk be!
i. Feladatvizsglat
Bemen adatok:
s: szveg, melyet a szoveg.txt-be berunk
Kimen adatok:
Szoveg.txt llomny.
Megolds lpsei:
Elszr rendeljk hozz a szoveg.txt llomnyt az f llomnyhoz, majd hozzuk ltre
a rewrite(f) paranccsal, ez a parancs j llomnyt hoz ltre, vagy egy mr meglv
tartalmt kitrli s jra rsra teszi alkalmass. A feladat tbbi rszt a mr
megismert mdon oldjuk meg!
ii. Feladat megoldsa
Pascal kd:
program filekezeles;
uses crt;
var f:text;
sor: string;
begin
Assign (f,'szoveg.txt');
Rewrite (f); {ltrehozza a filet}
Clrscr;
writeln ('szoveg.txt llomny feltltse: ');
writeln('ha nem akarsz mr j adatot bevinni, hagyj ki egy res sort!');
repeat
Readln(sor); {bekrs billentyzetrl}
Writeln(f,sor); {rs file-ba}
until sor='';
Clrscr;
Reset(f); {megnyitja a filet olvassra}
while not eof(f) do
begin
Readln(f,sor); {olvass file-bl}
Writeln(sor); {rs kpernyre}
end;
Close(f);
end.

114

III.2 Tpusos llomnyok


Mintapldk
1.) rjunk programot, mely egy iskola tanulinak szemlyes adatait (nv, szletsi
dtum) egy llomnyban trolja! Az adatokat * vgjelig olvassuk be!
i. Feladatvizsglat
Bemen adatok:
diak: rekord, nev s szul mezkkel, melyek a dikok nevt, illetve szletsi dtumt
jelentik
Kimen adatok:
nyilv.dat, egy llomny az aktulis knyvtrban, melyben a diak tpus adatok
vannak
Megolds menete:
A tpusos llomnyok deklarcijban azt kell megadni, hogy a file soraiban trolt
adatok milyen tpusak legyenek. Az llomny file_vltozhoz val rendelse, s
megnyitsa, illetve bezrsa ugyangy mkdik, mint a szveges llomnyoknl.
Tpusos llomnyba val rsnl, s olvassnl a readln s writeln parancsokat nem
hasznlhatjuk. A vgjelig val beolvasst a mr megismert mdon valstjuk meg.
ii. Feladat megolds
Feladat pascal kdja:
program tipusos_allomany;
type
diak=Record
nev:string[20];
szul:integer;
End;
var
f: file of diak;
r:diak;
begin
assign (f,'nyilv.dat');
rewrite (f);
writeln ('Ha nincs tbb dik ss csillagot');
Repeat
Write('Nv: ');
Readln(r.nev);
If r.nev<>'*' then begin
Write('Szletett: ');
Readln(r.szul);
Write(f,r);
End;
Until r.nev='*';
Close(f);
end.

115

2.)

rjunk programot, amely a nyilv.dat file adatait beolvassa egy tmbbe!


i. Feladatvizsglat
Bemen adatok:
Nyilv.dat diak tpus llomny
Kimen adatok:
T: sorozat, elemei diak tpusak
Megolds menete:
T sorozat hosszt gy vlasszuk meg, hogy nagyobb legyen a file vrhat hossznl.
Ennek ellenre a ciklusfelttelben vizsgljuk, hogy fr-e mg adat a tmbbe, gy a
program tl hossz file esetn sem ll le, csak nem olvassa be a file fennmarad
rszt. i vltoz tartja nyilvn, hogy hny elemet olvastunk be a file-bl. Azrt
hasznltunk elltesztel ciklust, hogy ha a file res, akkor a program ne prbljon
meg olvasni belle.
ii. Feladat megolds

program tipusos_allomanybol;
const
Max=1000;
type
diak=Record
nev:string[20];
szul:integer;
End;
var
f:file of diak;
t:Array[1..Max] of diak;
i:integer;
begin
Assign(f,'nyilv.dat');
Reset(f);
i:=0;
write(max+i);
While (not Eof(f)) and (max>i) do
begin
i:=i+1;
Read (f,t[i]);
End;
Close(f);
end.

116

Feladatok:
1) rj programot, mely egy szveges llomnybl kitrli az res sorokat!
2) rj programot, mely megszmolja egy szveges llomnyban a karakterek szmt!
3) Hozz ltre egy szveges llomnyt, szoveg.txt nven, olvass be sorokat / vgjelig.
rasd ki a kpernyre az llomny tartalmt, majd nyomtasd ki!
4) rj programot, mely llomnyban trolja egy vllalat havi djas dolgozinak
trzsadatait. A trzsadatok:
Csaldi nv
Utnv
Besorols
Alapfizets
Ptlk
Tlra
Levons
Adelleg
Azonost
5) rj programot, mely llomnyban trolja egy vllalat leltrt. A leltr adatai:
Termk kdja
Termk neve
Egysgr
Mrtkegysg
6) rj programot, mely ltrehoz egy vllalat eladsaibl egy tpusos llomnyt. A
rekordokban a kvetkez mezk vannak:
Berendezs tpusa
Garancilis id
Megnevezs
r
Eladott darabszm
Ellenrizd, garancilis id, r, eladott darabszm mezket! A helyes rekordokat rd be az
llomnyba, a hibkat a hiba oknak megjellsvel listzd!
7) Egy trzsllomny ltrehozshoz 2 fle adatot hasznlunk:
1-es tpus:
Tpusjelz
Cikkszm
Mennyisg
Egysgr
Als hatr
Fels hatr
Egyb
2-es tpus
Tpusjelz
Cikkszm
Egyb
8) rj programot, mely az adatokat egy llomnyban trolja, s a hibs rekordokrl
listt kszt!
9) rj programot, mely vastlloms menetrendjt trolja. A program tudjon
menetrendet elhelyezni a lemezen, tudjon vonatot trlni, j vonatot berni a
menetrendbe, illetve lehessen mdostani az indulsi s az rkezsi idket!

117

Irodalomjegyzk:
1) Dr. Hetnyi Pln: Szmtsteknikai feladtok 2000-ig I,II ktet
OMIKK Budapest 1988
2) Angster Erzsbet: Programozs tanknyv I.,II. ktet
4KR Bt. 1998
3) Ksa Zoltn: Algoritmusok tervezse
Stdium Knyvkiad, Kolozsvr, 1994
4) Szlvi Pter, Zak Lszl: Mikrolgia 18,19
5) Doina Rancea: Limbajul turbo Pascal I,II ktet
Libris, Cluj 1993
6) Dr. Florin Muntean: Programarea calculatoarelor
Editura Didactica si Pedagocica R-A-Bucuresti, 1993

118

Bevezets...........................................................................................................................1
I
Elemi programozs....................................................................................................2
I.1
Elemi utastsok.................................................................................................2
Mintapldk:..........................................................................................................2
Feladatok...............................................................................................................7
I.2
Elgazsok.........................................................................................................8
A Ktirny elgazs.............................................................................................8
Mintapldk...........................................................................................................8
B Tbbg elgazs............................................................................................11
Mintapldk.........................................................................................................11
Feladatok.............................................................................................................16
I.3
Ciklusok...........................................................................................................17
A Szmll ciklus................................................................................................17
Mintapldk:........................................................................................................17
B Elltesztel ciklus............................................................................................21
Mintapldk.........................................................................................................21
C Htultesztel ciklus.........................................................................................24
Mintapldk.........................................................................................................24
Feladatok.............................................................................................................28
I.4
Adattpusok......................................................................................................29
A Szvegfeldolgozs...........................................................................................29
Mintapldk:........................................................................................................29
Feladatok.............................................................................................................32
B Tmb................................................................................................................33
Mintapldk.........................................................................................................33
Feladatok:............................................................................................................39
Mintapldk:........................................................................................................40
Feladatok.............................................................................................................46
C Rekord tpus.....................................................................................................47
Mintapldk.........................................................................................................47
D Definilt tpus..................................................................................................51
Mintapldk:........................................................................................................51
Mintapldk.........................................................................................................55
Feladatok.............................................................................................................58
I.5
Eljrsok s fggvnyek..................................................................................59
A Eljrsok..........................................................................................................59
Mintapldk:........................................................................................................59
B Fggvnyek.....................................................................................................65
Mintapldk.........................................................................................................65
Feladatok.............................................................................................................68
II Elemi programozsi ttelek.....................................................................................69
II.1
Sorozatszmts...............................................................................................69
Mintapldk.........................................................................................................69
Kzs jellemzk:.................................................................................................73
Feladatok.............................................................................................................75
II.2
Eldnts...........................................................................................................76
Mintapldk.........................................................................................................76
Kzs jellemzk..................................................................................................81
Feladatok.............................................................................................................84
II.3
Kivlaszts.......................................................................................................85
Mintapldk.........................................................................................................85
Kzs jellemzk..................................................................................................88
119

Feladatok.............................................................................................................90
II.4
Lineris keress...............................................................................................91
Mintapldk.........................................................................................................91
Kzs jellemzk..................................................................................................95
Feladatok.............................................................................................................97
II.5
Megszmols...................................................................................................98
Mintapldk.........................................................................................................98
Kzs jellemzk................................................................................................102
Feladatok...........................................................................................................104
II.6
Maximumkivlaszts.....................................................................................105
Mintapldk.......................................................................................................105
Kzs jellemzk................................................................................................109
Feladatok............................................................................................................111
III
llomnyok.......................................................................................................112
III.1 Szveges llomnyok....................................................................................112
Mintapldk.......................................................................................................112
III.2 Tpusos llomnyok.......................................................................................115
Mintapldk.......................................................................................................115
Feladatok:..........................................................................................................117

120

You might also like