You are on page 1of 113

Forrás: http://www.doksi.

hu

BEVEZETŐ

A feladatgyűjtemény négy nagyobb egységre tagolható:

I. A legalapvetőbb utasításokhoz kapcsolódó feladatok, I - XIII. fejezet


II. Programozási tételek, és hozzájuk kapcsolódó feladatok, XIV - XXVII.
fejezet
III. Összetettebb programozási feladatok, XXVIII- XXIX. fejezet
IV. Mintaalkalmazások, XXX. fejezet

A példatár első részében olyan feladatokkal foglalkozom, amelyekben a


legalapvetőbb utasításokkal ismertetem meg a tanulókat.
Ilyenek a kiíró utasítások. Ezt tartalmazza az első fejezet. Természetesen a
kezdet kezdetén a program felépítésével foglalkozunk. A Crt unitot a kezdettől
használjuk, nem kell különösebb magyarázatokba bonyolódnunk ezzel
kapcsolatban, elég ha a k özlés szintjén elmondjuk tanulóinknak, hogy a Turbo
Pascal a képernyő kezelésére vonatkozó rutinokat ebben tárolja, s ha használni
akarjuk őket, akkor a „unitot” előbb meg kell nyitni. A megnyitás annyit jelent,
hogy a programfej alatti sorba beírjuk a következő utasítást: „Uses Crt;”. Annyit
elmondhatunk még, hogy mi eleinte a Clrscr, GotoXY, TextColor,
TextBackGround, stb. utasításokat használjuk ebből. Később a grafikai
feladatok megoldásánál ugyanilyen módon vezetjük be a „Graph unitot”.
Az első fejezet példáiban elsősorban különböző kiíratások szerepelnek, itt
terveztem megmutatni nekik a s zöveg- és háttérszínező utasításokat, illetve a
pozícionálási lehetőségeket. Már itt is szerepelnek olyan jellegű feladatok,
amelyekben a programrészlet szövegének ismeretében találják ki, mit is csinál
az adott programrész.
A második fejezet hivatott részben a legegyszerűbb adattípusok
megismertetésére, felhasználva a matematikából számukra jól ismert műveleti
sorrend szabályt, illetve ennek gépi megvalósítását, zárójelezési lehetőségeket.
Itt ismernek meg néhány egész típust, a B yte, Integer, Word és a Long Int
típusokra gondoltam. A valós típusok közül a R eal-t tanítom, mert az nem
igényel matematikai kooprocesszort vagy annak emulációját. Itt már készítünk
egyszerű, konkrét számokkal dolgozó matematikai problémát megoldó
programot. Ilyen a kör területét, kerületét számoló feladat, ahol már a konstans
fogalma is előkerül, Pi értékét a deklarációban megadhatjuk konstansként, de
hivatkozhatunk arra is, hogy a TP magasabb verziói ismerik a Pi-t.
Ekkor már törekedhetünk a s zép, esztétikus kiíratásokra, arra, hogy ha a
programot más felhasználó működteti, számára is világos legyen, hogy az adott
program mit csinál.
Ekkor akár már futtatható fájlt is készíthetünk a programunkból.

A harmadik fejezet feladatai a dek laráció fontosságára, a s zám, logikai,


karakter és szöveg típusok használatának elmélyítésére, a megfelelő típus
megválasztásának fontosságára szolgálnak. Már a k ezdetekre terveztem a
Forrás: http://www.doksi.hu

logikai típus megtanítását, hisz a ny olcosztályos gimnáziumi matematika


anyagban ekkorra már ismernek különféle halmazelméleti és matematikai
logikai fogalmakat. Ide is tettem olyan feladatokat, amelyekben a programrész
szövegéből kell következtetni a futás eredményére. Ezek a nehezebb feladatok,
éppen ezért mindig adok lehetőséget a gépi megvalósításra, ellenőrzésre.
Néhány beépített függvényt közlés szinten megmutathatunk a tanulóknak, s
azokat használhatják is.

A negyedik fejezet foglalkozik az adatbeolvasással. Itt már olyan feladatokat


készítünk, ahol a felhasználó adhat értéket a deklarált változóknak, vagyis nem
egyetlen konkrét adatra írjuk programjainkat, hanem tetszőlegesekre.
Az alkalmazott adattípusok elsősorban elemi típusok: egész, valós, karakter,
logikai, illetve az összetettek közül a szöveg típust terveztem ide.
Természetesen itt is ügyeljünk arra, hogy a pr ogram által megjelenített
képernyő esztétikus, a programszöveg is tagolt, könnyen áttekinthető legyen!
Ekkor már ablakot is definiálhatunk a képernyőre. Tapasztalatom szerint a
gyerekek nagyon örülnek, ha v alami szép színesen jelenik meg a képernyőn,
főleg ha azt maguk alakíthatták. Érdemes már ekkor kihasználni ezt a
lehetőséget. Természetesen a képernyő és a szöveg színét a programok végén
mindig állíttassuk velük vissza.
Már ebben a fejezetben gondoltam eljárásokra tagolni a programokat.
Célszerűnek tartom a programokat itt három eljárásra bontani, beolvasó, kiíró
és tényleges végrehajtó részre. Itt használunk először főprogramot. Itt
beszélhetünk először arról, hogy az eljáráson belül is lehet deklarációs rész, s
abban helyi (lokális) változókat is megadhatunk, amelyek csak az eljáráson
belül érvényesek, máshol hivatkozva rájuk hibaüzenetet kapunk. A program
elején deklarált változókra azonban bárhol hivatkozhatunk, mivel hatásuk
mindenütt érvényes, ezek a globális változók.
Eleinte mi még csak globális változókkal dolgozunk, mindent a pr ogram
deklarációs részében adunk meg.

Az ötödik, hatodik és a het edik fejezet az ismétlési szerkezetekkel foglalkozó


feladatokat tartalmazza. Igen fontos rész ez minden programozási nyelvben,
ezért eléggé az elejére tettem, az elágazások elé, hisz ismétlő szerkezettel már
korábban a Logo nyelvben is találkoztak a tanulók. Ebben a korban a számlálós
ciklus a legérthetőbb, s a leggyakrabban használt, ezért ebből a fajtából
terveztem a l egtöbb feladatot. A másik két ciklusfajtából kevesebb feladatot
terveztem, hisz ezek a későbbiekben úgyis többször előfordulnak. Ekkor már az
eljárásokban definiálhatunk lokális változókat is, például a ciklusváltozók.

A nyolcadik, kilencedik fejezet foglalkozik az elágazásokkal. Ide képzeltem még


néhány, gyakran előforduló beépített függvény megtanítását (pl. abs, random
stb.).

A feladatgyűjteményben osztályoztam a feladatokat nehézségi szintjük szerint,


Könnyebbek, közepesek és nehezek. Ebben a sorrendben a feladatok szövege
előtt jelzés áll, ami a nehézségi fokot mutatja.
A jelek:
Forrás: http://www.doksi.hu

Könnyebb ⊇
Közepes ⊄
Nehéz ⊂

A feladatgyűjtemény 320 feladatot és 62 mintaalkalmazást tartalmaz.

Az utolsó nagy egység a mintaalkalmazások fejezete.

I.

KIÍRÓ UTASÍTÁSOK

1.1.⊇Írj programot, amely a következőt írja a képernyőre: Első Pascal


programom!
1.2.⊇Módosítsd az előző feladatot úgy, hogy a képernyő közepén egy
általad választott színnel jelenjen meg a szöveg!
1.3.⊇A háttérszínt is Te válaszd meg az előző munkádban!
1.4.⊇Készíts programot, amely arányosan a képernyő közepén
megjeleníti teljes nevedet, iskoládat és évfolyamodat! A színeket magad
választhatod.
1.5.⊇Lesz-e látható különbség a képernyőn való megjelenésben az alábbi
két program lefuttatása után?
Forrás: http://www.doksi.hu

... ...
Begin Begin
Write(‘Hello!’); Writeln(‘hello!’);
End. End.

1.6.⊇Mi a különbség a képernyőn való megjelenésben a következő két kis


programban?

Program bp1; Program bp2;


uses crt; uses crt;
begin begin
clrscr; clrscr;
gotoxy(35,10); gotoxy(35,10);
write(‘BUDA’); writeln(‘BUDA’);
write(‘PEST’); writeln(‘PEST’);
readln; readln;
end. end.

1.7.⊇Írj programot, amely a képernyőn megjeleníti az osztályod vagy


csoportod matematika órai ülésrendjét!
1.8.⊇A programod a kötőjel segítségével rajzoljon téglalapot a
képernyőre! A helyet és a rajz színét Te határozhatod meg!
1.9.⊇Módosítsd az előzőt úgy, hogy a téglalap egyik párhuzamos
oldalpárját az egyenlőségjellel, a másikat csillagokkal rajzoltatod!
1.10.⊇Van-e különbség a következő két utasítás között az 5-ös szám
megjelenítésében a képernyőn?
a. / ... b./ ...
Write(5); Write(‘5’);
... ...
1.11.⊇Az alábbi két program közül melyik jeleníti meg a képernyőn az „a”
betűt?
a./ b./
Begin Begin
Forrás: http://www.doksi.hu

Write(a); Write(‘a’);
End; End;

II.

SZÁMOK ÉS MŰVELETEK

2.1.⊇A következő programban a writeln utasítás mögött szereplő műveleteket


fejben végezd el, jegyezd fel az eredményeket! Majd a programot gépeld be és
futtasd! Mit tapasztalsz?
Program muveletek;
uses crt;
begin
writeln(100-(20-(40-80)));
writeln(12*13);
writeln(-25*(-25));
writeln(1000/25);
writeln(1/3);
writeln(12.5*3);
writeln(12.5/3);
readln;
end.

2.2.⊇Mi történne, ha minden writeln utasítást write-ra cserélnél?


Ki is próbálhatod! Hogyan lehetne az ilyen kiíratást tagolttá tenni?
2.3.⊇Módosítsd a valós számokkal végzett műveletek eredményének
kiíratását úgy, hogy az ne nor málalakban, hanem meghatározott
tizedesjegy pontossággal jelenjen meg! (Ajánlott 2-3 tizedesjegy)
Forrás: http://www.doksi.hu

2.4.⊇Az előző programot egészítsd ki a következő két sorral:


writeln((23+7)*5) és writeln(23+7*5)! Futtatás után miért más a k ét
eredmény?
2.5.⊇Milyen sorrendben végezné el a számítógép a következő
műveleteket? Sorszámozd a végrehajtást, számold is ki az eredményeket!
Ha időd engedi, egészítsd ki az előző programodat e sorokkal, és
ellenőrizd gondolatmeneted helyességét!

a./ (10+5)*20-100/4=..........
b./ 10+5*20-100/4=..........
c./ 10+5*(20-100)/4=..........

2.6.⊄Írj programot, amely kiszámítja a k övetkező műveletek eredményét


két tizedesjegy pontossággal!

a./ 6532 : (12+88) + 782 : (44+56)


b./ 3,76 + 12,53 * 27,35 - 1,45 : 12,5

2.7.⊄Készíts egy 5 cm sugarú kör kerületét és területét meghatározó


programot, amely két tizedesjegyig számol, és a képernyőn az is
megjelenik, hogy miről is van szó!

Pl. A kör sugara: 5 cm


A kerülete: .....cm
A területe: ......cm2

2.8.⊄Írj programot, amely általad tetszőlegesen választott két valós


számmal elvégzi a négy alapműveletet, és kiírja az összeget, különbséget,
szorzatot és hányadost! Ügyelj arra, hogy külső szemlélő is tudja, melyik
eredmény melyik művelethez tartozik!
Forrás: http://www.doksi.hu

III.

VÁLTOZÓK DEKLARÁLÁSA, ÉRTÉKÜK KIÍRATÁSA

3.1.⊇Egészítsd ki a következő deklarációkat a megadott intervallumoknak


megfelelően! Több lehetőség esetén a legkevesebb helyfoglalásút add
meg!
a./ var a:...................................; (a∈Ν, 0≤ a ≤ 255)
b./ var a:...................................; (a∈Ζ, -5000≤ a ≤ 5000)
c./ var a:...................................; (a∈Ν, 0≤ a ≤60000)
d./ var a:...................................; (a∈Ζ, -106≤ a ≤ 106)
e./ var a:...................................; (a∈Ζ, -128≤ a ≤ 127)
f./ var a:...................................; (a∈R)

3.2.⊄Értelmezd a következő programrészleteket!


a./ begin b./ begin
a:=30; a:=15.2;
b:=20; b:=5;
t:=a*b; h:=15.2/5;
write(t); write(h:6:2);
end. end.

c./ begin d./ begin


a:=20000; a:=-20000;
Forrás: http://www.doksi.hu

10

b:=25; b:=40;
p:=a*b; p:=a*b;
write(‘p= ‘,p); write(‘p= ‘,p);
end. end.

- Mi az alapvető különbség az a./ és b./ feladatok között?


- Miben különböznek egymástól a./ , b./ és d./ feladatok?
A változókat (a,b,t,h,p) milyen típusnak deklarálnád a feladatokban?
3.3.⊇Írj programot, amely A= 20 és B= 10 számok összegét, különbségét
és szorzatát meghatározza, és megjeleníti a képernyőn! A
megjelenítéshez használd korábbi ismereteidet (cím, pozícionálás,
esetleg színezés)!
3.4.⊄Bővítsd az előző programot úgy, hogy a két érték hányadosát is
meghatározza! Milyen hibát tapasztalsz, ha a hány ados változót is egész
típusúnak deklarálod? Hogyan javítható a hiba? Keress több megoldást!
3.5.⊇Mindenképpen csak egész típussal szeretnénk dolgozni az előző
feladatban. Milyen osztás kerüljön ekkor végrehajtásra?
3.6.⊇Az előző osztást módosítsd úgy, hogy az osztás maradékát jelenítse
meg a program!

3.7.⊄A következő programrészletek mindegyikénél add meg a


következőket:
- Milyen típusúnak kell deklarálni A, B és C -t?
- Mit írnak ki az egyes programok képernyőre?

a./ A:=10; b./ A:=7; c./ A:=2;


B:=12 B:=3; B:=4;
B:=A; A:=A+1; B:=B div 2;
C:=B-A; C:=A+B; A:=A mod 2;
Forrás: http://www.doksi.hu

11

Write(C ); Write(C ); C:=A*B;


Write(C );

Típus: A:………………. ………………. ……………….


B:………………. ………………. ……………….
C:………………. ………………. ……………….

Érték: C=……………… ………………. ……………….

d./ A:=5000; e./ A:=5;


B:=40; B:=4;
A:=A-2; A:=A+1;
B:=B+1; C:=A/B;
C:=A*B; write(C );
write(C );

Típus: A:………………. ………………. ……………….


B:………………. ………………. ……………….
C:………………. ………………. ……………….

Érték: C=……………… ………………. ……………….

3.8.⊄Legyen A= 3, B = 4, C = 5. Cseréld fel a m emóriában A, B és C


változók értékét a következő módon: X segédváltozó vegye fel A értékét,
B a C-ét, C pedig X segítségével A-ét!
Írasd ki a kezdeti és a végállapotot!
3.9.⊄Értelmezd a következő rövid programot!
Program karakter;
uses crt;
var betu,jel,kod:char;
begin
clrscr;
Forrás: http://www.doksi.hu

12

betu:=’B’;
jel:=’+’;
kod:= ‘#’;
writeln(betu);
writeln(jel);
writeln(kod);
readln;
end.
3.10.⊄Az előző programban a betu:=’B’ helyett betu:=’peterke’
szerepeljen. Mit tapasztalsz?
3.11.⊇A Writeln(jel) után a következő sorokat iktasd be:
- writeln(succ(jel));
- writeln(pred(jel));
- writeln(ord(jel));
Mit tapasztalsz?
3.12.⊇A tízes feladatban töröld a w riteln(kod) sort, helyére a
writeln(chr(176)) utasítás kerüljön! Mi történik?
3.13.⊄Az „A” l ogikai változó értéke legyen igaz, a „ B” logikai változó
értéke hamis. Írj programot, amely meghatározza a következőket:
a./ A és B
b./ A és nem B
c./ nem A és nem B
d./ nem A és B !

3.14.⊇Az előző feladatban változtasd meg A és B logikai értékét! Az így


futtatott programokat más néven mentsd!
Lehetőségek: A - igaz B - igaz
A - hamis B - hamis
A - hamis B – igaz

3.15.⊇Az előző programokban az és logikai műveletet cseréld vagy -ra!


3.16.⊇A következő konstans deklarációk közül melyekben van szintaktikai
hiba? A javítást a pontozott részre írd!
Forrás: http://www.doksi.hu

13

a./ const nagy = 350; ...................................................


b./ const kicsi = 0 or 1 or 2; ...................................................
c./ const elso: ‘a’ ...................................................
d./ const also=-500;
felso= 3E+5; ...................................................

IV.

ADATBEOLVASÁS: BEOLVASÓ UTASÍTÁSOK

4.1.⊇Készíts programot, amely két tetszőleges valós számra elvégzi a


négy alapműveletet!
4.2.⊇Szépítsd a k iírások küllemét úgy, hogy a program minden fontosat
jelenítsen meg!
4.3.⊇Gépeld be, majd futtasd a következő programot! Mit tapasztalsz?
Program beolvas;
Uses crt;
var b1,b2:char;
Begin
Clrscr;
Read(b1);
Read(b2);
Write(b1,b2);
ReadLn;
End.
Cseréld a read utasításokat readln-re! Mi történik?
4.4.⊇Írj programot, amely a felhasználó által megadott két tetszőleges
karaktert kiír a képernyőre:
a./ egymás mellé
b./ egymás alá
Forrás: http://www.doksi.hu

14

4.5.⊇Készíts programot, amely bekéri a f elhasználó nevét, majd kiírja a


képernyőre a következőt: Üdvözöllek .....................! Az illető név kerül a
kipontozott helyre.
4.6.⊇Írj programot, amely bekér két tetszőleges számot, majd kiszámítja
és kiírja a következőket:
a./ a számok számtani közepe
b./ négyzetük összege
c./ összegük négyzete !
4.7.⊄Készíts mértékegységváltó programokat!
a./ Órákban megadott értéket megjelenít percekben és
másodpercekben is!
b./ Másodpercben adottakat átírja óra, perc, másodpercre!
4.8.⊄Találj ki hasonló feladatokat! Készíts hozzájuk programot!
4.9.⊇Írj programot, amely egy egyenes vonalú egyenletes mozgást végző
test esetén meghatározza a következőket:
a./ Az út és idő ismeretében a sebességet!
b./ Az út és sebesség ismeretében az időt!
c./ A sebesség és idő ismeretében az utat!
Természetesen ne í rj minden esetben teljesen új programot, hanem az
előzőt módosítsd, majd a módosítottat mindig új néven mentsd el!

4.10.⊇Hasonló feladatokat Te is készíthetsz a fizika területéről vett


ismereteid alapján, például:
a./ Feszültség, áramerősség és ellenállás
b./ Tömeg, térfogat és sűrűség
c./ Feszültség, áramerősség és teljesítmény
d./ Tömeg, fajhő, hőmérséklet-változás és hőmennyiség stb.
4.11.⊄Készíts árazó programot, amely az áru árából és
a./ a százalékos emelkedésből meghatározza az új, emelt árat
b./ a százalékos csökkenésből kiszámítja az új, csökkentett árat!
Forrás: http://www.doksi.hu

15

4.12.⊄Készíts felszín- és térfogatszámító programokat! (Téglatestre,


hengerre, gömbre stb.)
4.13.⊂Készíts nettó jövedelmet számító programot! A program kérje be az
illető nevét, havi bruttó jövedelmét, és azt, hogy hány százalékkal
szeretne adózni! Ezután a pr ogram vonjon le 6%-ot nyugdíjra, 4%-ot
egészségbiztosításra, majd az így megmaradó összeget csökkentse az
adott adószázalékkal! A képernyőn az illető neve és a kapott nettó összeg
jelenjen meg!
4.14.⊂Módosítsd az előző programot úgy, hogy a bruttó jövedelem,
valamint az egyes levonások is nevükkel és értékükkel megjelenjenek a
képernyőn!

Pl. Kovács János jövedelme


Bruttó: 50.000,- Ft. (felhasználó által megadott)
Adókulcs: 40% (felhasználó által meghatározott)
Levonások:
6% nyugdíj: 3.000,- Ft. (mindig 6%)
4% eg.bizt. 2.000,- Ft. (mindig 4%)
40% adó 18.000,-Ft.
Nettó: 27.000,-Ft.
(A 6%+4% -kal csökkentett értékből számítandó)
A megjelenítéshez definiálhatsz egy megfelelő méretű színes ablakot
is a képernyőre. Vigyázz, hogy adott színű háttérre milyen színnel írod
a szöveget!

ISMÉTLÉSEK SZERVEZÉSE

V.

A SZÁMLÁLÓS CIKLUS
Forrás: http://www.doksi.hu

16

5.1.⊇Készíts programot, amely öt sort teleír a k eresztneveddel a


képernyőn! Az egyes kiírások között feltétlenül legyen szóköz!
5.2.⊇Írasd ki 1-től 20-ig a természetes számokat a képernyőre:
a./ egymás mellé (legalább egy szóköz legyen a számok között)
b./ egymás alá (minden szám új sorban)!
5.3.⊇Az előző feladatot módosítsd úgy, hogy a számok csökkenő
sorrendben jelenjenek meg!
5.4.⊇Írasd ki az angol ABC nagybetűit növekvő sorrendben!
5.5.⊇Az előző programot módosítsd úgy, hogy csökkenő sorrendben
jelenjenek meg a betűk!
5.6.⊄Módosítsd a m ásodik feladat a./ részét úgy, hogy a számok alatt a
négyzetük is szerepeljen a képernyőn!
5.7.⊇Írj programot, amely összeadja az első száz természetes számot!
5.8.⊄Módosítsd a pr ogramot úgy, hogy Te dönthesd el, hány darab
egymást követő természetes számra szeretnéd az összeget
meghatározni!
5.9.⊄Módosítsd az előző feladatot úgy, hogy tetszőleges kezdőértéktől
tudjon a program összeget számolni!
5.10.⊄Készíts számtani sorozat tagjait kiszámító programot! A gép az első
elem, a differencia és az elemszám ismeretében írja ki a sorozat elemeit!
5.11.⊄Az előző feladatot oldd meg mértani sorozatra is! (Be: a 1 , q, n );
5.12.⊇Írj programot, amely csillagokból egy 30*10-es téglalapot rajzol a
képernyő közepére!
5.13.⊄Különböző jelekkel rajzoltass a képernyőre alakzatokat
(háromszög, kereszt, stb.)!
5.14.⊄Készíts vastagvonalas keretet egy színes ablak köré a képernyőre!
(A szükséges ASCII kód 219 = ν ). A keret a képernyő széleitől arányosan
helyezkedjen el (pl. felülről és alulról 5-5 egységre, oldalról 10-10
egységre)!
Forrás: http://www.doksi.hu

17

VI.

AZ ELÖLTESZTELŐ CIKLUS

6.1.⊇Készíts programot, amely „0” végjelig elfogad valós számokat!


6.2.⊄Módosítsd az első programot úgy, hogy a beolvasott számok átlagát
is meghatározza! Vigyázz! A 0 ne szerepeljen az átlagok között!
6.3.⊄Írj programot, mellyel karaktereket olvashatunk be „*” végjelig!
6.4.⊄Módosítsd az előző programot úgy, hogy a beolvasott karaktereket
egy szöveggé fűzve írja is ki!
6.5.⊄Írassuk ki a 200-nál kisebb négyzetszámokat!
6.6.⊄Adjuk össze 3 egész számú többszöröseit 100-ig!
6.7.⊄Az első hány darab természetes számot kell összeadnunk, hogy az
összeg kisebb legyen 1000-nél?
6.8.⊄Módosítsd az előző programot úgy, hogy az összeget a felhasználó
adhassa meg!
6.9.⊂Az 5 természetes szám egész számú többszöröseiből hány darabot
kell összegeznünk, hogy az összeg ne lépje túl az integer tartomány felső
határát!
6.10.⊂Változtasd meg az előző programot úgy, hogy a felhasználó által
meghatározható értékkel indulva, megadható lépésközzel és
összeghatárig számoljon!
6.11.⊂Hány faktoriális értéke nem haladhatja meg az integer típus felső
határát?
6.12.⊂100000Ft megtakarított pénzemet 15%-os éves kamatot garantáló
államkötvénybe fektetve mennyi idő múlva éri el a pénzem a 200000Ft-
ot?
(Kamatos kamat!)
6.13.⊂Módosítsd az előző programot úgy, hogy a kiinduló összeget, a
kamat mértékét és az elérendő összeget a felhasználó adhassa meg!
Forrás: http://www.doksi.hu

18

VII.

A HÁTULTESZTELŐ CIKLUS

7.1.⊇Kérjen be a pr ogram billentyűzetről természetes számokat! Csak


akkor fogadja el a beütött számot, ha az 0 és 50 közötti!
7.2.⊇Írassunk véletlen számokat a képernyőre addig, amíg a gép egy
bizonyos számot el nem talál! Például 0 és 10 k özötti számok esetén
akkor legyen vége, ha 6-ot generál a program!
7.3.⊇Készíts programot, mellyel karaktereket vihetünk be ál talad
megszabott végjelig!
7.4.⊇Írasd ki a nevedet a képernyő közepére, tetszőleges billentyű
lenyomására léphessünk ki a programból! (Ne csak az ENTER-re!)
7.5.⊄Írj programot, amelybe tanulmányi átlagokat vihetünk be „0” végjelig,
s a program meghatározza az átlagot! Vigyázz! A végjel 0-át ne számítsd
hozzá az átlaghoz!
7.6.⊄Készíts programot, amely közönséges törtek tizedes tört alakját írja
ki hat tizedes jegyig!
7.7.⊂Módosítsd az előző programot úgy, hogy addig fusson, amíg a
számláló értékül 0-át nem kap!
7.8.⊂Olvassuk be egy háromszög három oldalának hosszát! A beolvasás
addig ismétlődjön, míg az adatokra nem teljesül a háromszög-
egyenlőtlenség! (Háromszög-egyenlőtlenség: bármely két oldal összege
nagyobb a harmadik oldalnál!) A program adjon különböző üzeneteket is!
Forrás: http://www.doksi.hu

19

7.9.⊂Módosítsd az előző feladatot úgy, hogy a következő feltétel is


teljesüljön: a kerület 20 és 30 közé essen!

ELÁGAZÁSOK

VIII.

A KÉTIRÁNYÚ ELÁGAZÁS

8.1.⊇Készíts programot, amely egy beolvasott számról eldönti, pozitív-e!


A kiíratásnál használj különböző színeket!
8.2.⊇Írj programot, amely meghatározza egy beolvasott szám abszolút
értékét! Nem használhatod az abs függvényt!
8.3.⊇Írd meg a programot az abs függvénnyel is!
8.4.⊇Készíts programot, amely két ember testmagassága ismeretében
eldönti, melyikük a magasabb!
8.5.⊄Módosítsd az előző feladatot úgy, hogy egyenlő magasságok esetén
is jól működjön!
8.6.⊄Az első feladatot alakítsd át úgy, hogy a beol vasott számról azt is
kiírja, hogy 0 vagy negatív!
8.7.⊄Döntse el a program két beolvasott számról, hogy megegyező
előjelűek-e!
8.8.⊄Írj programot, amely két tetszőleges számról eldönti, melyikük a
nagyobb!
Forrás: http://www.doksi.hu

20

8.9.⊄Egészítsd ki az előző programot úgy, hogy a s zámokat írja is ki


növekvő sorrendben!
8.10.⊂Az előző két feladatot módosítsd úgy, hogy három számra is
működjön!
8.11.⊄A fejezet nyolcadik feladatát oldd meg számok helyett névsorba
rendezendő két névre!
8.12.⊂Az előző feladatot módosítsd úgy, hogy három névre is működjön!
8.13.⊄Készíts programot, amely három mérőszámról eldönti,
szerkeszthető-e velük háromszög!
8.14.⊂Egészítsd ki az előző programot úgy, hogy ha szerkeszthető
háromszög, akkor arról mondja meg a program, hogy derékszögű-e!
8.15.⊂Bővítsd tovább a programot! Ha szerkeszthető háromszög, akkor
az hegyesszögű, derékszögű vagy tompaszögű-e!
8.16.⊇Írj programot, amely egy beolvasott számról eldönti osztható-e 15-
tel!
8.17.⊄Módosítsd az előzőt úgy, hogy az osztót is a felhasználó adhassa
meg!
8.18.⊄Egy beolvasott életkorról döntse el a program, hogy az illető
gyerek(0-6év), iskolás(7-18 év), dolgozó(19-62 év) vagy nyugdíjas!
8.19.⊄Adott egy tetszőleges pont a síkban koordinátáival, döntsük el,
melyik síknegyedben van!
8.20.⊂Bővítsd az előző programot úgy, hogy tengelyen lévő pontokra is jól
működjön!
8.21.⊄Készíts programot, amely egy beolvasott évszámról eldönti,
szökőév-e! A beírható évszám ésszerű határok között mozogjon!

IX.

A TÖBBIRÁNYÚ ELÁGAZÁS
Forrás: http://www.doksi.hu

21

9.1.⊇Írj programot, amely számként bevitt osztályzatoknak kiírja a


szöveges megfelelőjét! (Pl. 5-re a jeles szöveget jeleníti meg)
9.2.⊇Készíts dolgozatot a pontszám alapján értékelő programot!
A maximális pontszám legyen 50.
A határok: 0-25 elégtelen
26-30 elégséges
31-39 közepes
40-45 jó
46-50 jeles
A begépelt tanulói pontszám alapján a program írja ki az osztályzatot!
9.3.⊇Írj programot, amely bekéri az osztályzatodat, és ez alapján kiírja
szüleid véleményét! Ötletes megjegyzéseket jeleníts meg a képernyőn!
9.4.⊄Készíts programot, amely egy beolvasott karakterről megmondja,
milyen kategóriájú! A...Z → nagybetű; a...z → kisbetű, 0...9-ig szám,
minden más eset legyen speciális jel.
9.5.⊄Tervezz programot, amelyben a case utasítás segítségével menüszerűen
választható, hogy mit szeretnénk kiíratni!
Olvasunk be egy egész számot:
1-nél magát a számot
2-nél a szám abszolutértékét
3-nál a szám négyzetét
4-nél a szám ellentettjét írja ki!
9.6.⊄Írj programot, amely egy beolvasott számhoz hozzárendeli, hogy a hét
melyik napja! (1 - hétfő, 2 - kedd, stb.)
9.7.⊂Készíts programot, amelyben menüszerűen választhatunk, hogy mely
síkidom területét akarjuk kiszámítani!
(Pl. 1- téglalap, 2- trapéz, 3- kör, stb.) A korábban megírt területszámító
programjaid megfelelő eljárásait átmásolhatod ebbe a programba!
9.8.⊄Készíts programot, amely egy szótagból álló szavakról megmondja, hogy
a szó magas vagy mély hangrendű!

X.
Forrás: http://www.doksi.hu

22

FELADATOK EGYINDEXES TÖMBÖKKEL

10.1.⊇Készíts programot, amely bekér öt pozitív egész számot, ezeket


egy tömbben tárolja (feltételvizsgálat legyen), majd kiírja azokat a
képernyőre egymás mellé!
10.2.⊇Öt darab véletlen számmal tölts fel egy tömböt, majd add meg a
számok összegét és átlagát!
10.3.⊇Egy vektorban tárold családod tagjainak keresztneveit, majd írasd
ki ezeket a a képernyőre egymás mellé szóközökkel elválasztva!
10.4.⊄Olvassunk be numerikus adatot egy tömbbe 0 v égjelig! A
beolvasást addig ismételjük, amíg a bemenő adat nem megfelelő, azaz a
program ellenőrizze, hogy számot olvastunk-e be és nem karaktert! A
program írja ki a beolvasandó adat indexét is!
10.5.⊄Írj programot, amely beolvasott jegyeid alapján megadja az adott
tantárgyból az átlagodat! (Maximálisan tíz jegyre készüljön!) Kérje be a
tantárgy nevét is, s a k iíratásnál azt is jelenítse meg! (Pl. így:
matematikából az átlagod: 4.3)
10.6.⊄Kérjen be a program két vektort, számítsa ki összegüket!
10.7.⊇Az előző programot módosítsd úgy, hogy a vektorok különbségét is
meghatározza!
10.8.⊂Számíttasd ki a két vektor skalárszorzatát is!
10.9.⊂Mérjük meg tíz gyerek testsúlyát, a mért értékeket sorban vigyük be
egy tömbbe. Kérdés, hogy melyik gyerek súlya tér el legjobban az
átlagtól?
10.10⊄Írj programot, amely bekéri évenként 1990 és 1997 között, hogy
mennyi pénzt költött ruhára Gábor és Évi. Ezután tedd lehetővé annak
megkérdezését, hogy mennyit költöttek egy adott évben külön-külön és
együtt! A lekérdezés addig folytatódjon, amíg az adott évnél nullát nem
ütnek!
Forrás: http://www.doksi.hu

23

10.11.⊂Egy börtönben 100 cella van, mindegyikben egy rab ül. Kezdetben
a cellák zárva vannak. A börtönőrnek játszani támad kedve: végigmegy az
összes cella előtt, és mindegyik ajtó zárján fordít egyet. Fordításkor a
nyitott cellát bezárja, a zártat kinyitja. Ha végigment elkezdi elölről, és
minden második cella zárján fordít egyet. Aztán minden harmadikon fordít,
és így tovább, összesen százszor. E zután amelyik cella ajtaja nincs
lezárva, abból a rab elmehet. Készíts programot, amely megadja a
szabaduló rabok cellaszámát! Próbáld ki a programot magasabb
cellaszámra is (Pl. 1000)!
10.12.⊂Olvassunk be nev eket ‘ *’ v égjelig! A beolvasott neveket
osztályozzuk hosszuk szerint, és készítsük el a következő statisztikát:
Hossz Darab
0–9 :………
10 –19 :………
20 – 29 :………
30 – 39 :……….
40 - :……….

XI.

FELADATOK TÖBBINDEXES TÖMBÖKKEL

11.1.⊂Tölts fel egy 3x3-mas táblázatot véletlenszerűen 0 és 1 elemekkel!


Írasd ki! Pl. a következő formában: 1 1 0
0 0 1
1 0 1
Forrás: http://www.doksi.hu

24

11.2.⊂Módosítsd a f eladatot N * M-es táblázatra! N és M értékét is a


felhasználó adhassa meg, természetesen ésszerű határok között!
( 2 <= N,M <= 10)
11.3.⊂Az előző táblázatban a 0 elemeket cseréld 5-re!
11.4.⊄Írj programot, amely beolvassa öt ismerősöd nevét és
telefonszámát, majd kiírja ezeket a képernyőre a következő módon:

Név Telefonszám
XXXX YYYY

11.5.⊄Módosítsd az előző programot úgy, hogy az ismerőseid nevén kívül


a lakcímük is megjelenjen a képernyőn!
11.6.⊂Készíts programot, amely a t eljes hetes szorzótáblát megjeleníti a
képernyőn!
11.7.⊂Módosítsd az előző programot úgy, hogy a felhasználó adhassa
meg ésszerű határok között, hogy melyik szorzótáblát szeretné látni!
11.8.⊂Legyenek A és B N * M-es táblázatok. Töltsd fel őket 0 és 10
közötti természetes számokkal véletlenszerűen! Az így kapott táblázat
neve mátrix. Határozd meg e két mátrix:
a./ összegét
b./ különbségét

Az összeadás és kivonás szabálya:


a b e f a+e b+f
+ =
c d g h c+g d+h

11.9.⊂Készíts programot, amelyben beolvashatjuk tanulók nevét és


születési évét, majd ezen adatok felhasználásával ezeket kiírja táblázatos
formában a képernyőre!
Forrás: http://www.doksi.hu

25

11.10.⊂Módosítsd az előző programot úgy, hogy írók nevét, könyvük


címét és a kiadási évet olvashassuk be! Hogyan változik a r ekord
szerkezete ekkor?
11.11.⊂Készíts hasonló feladatokat Te is! Például a bar átaidra
vonatkozóan:
név, lakcím, telefonszám, kedvenc étele stb. szerepelhetnek
benne.

XII.

ELEMI GRAFIKAI FELADATOK I.

12.1.⊇Készítsünk szövegesről grafikus képernyőre átváltó


keretprogramot! Ezt a programot a továbbiakban mindig felhasználhatod.
12.2.⊇Rajzoltass zöld színnel pontokat a képernyő következő helyeire:
A(160,320) B(480,320) C(420,160) D(220,160)!
12.3.⊇Az előző feladat pontjait kösd össze szakasszal! Milyen négyszöget
kaptál?
12.4.⊇A LINE utasítás felhasználásával rajzolj a képernyőre különböző
háromszögeket! Legyen hegyesszögű, derékszögű, tompaszögű, egyenlő
szárú és egyenlő oldalú is közöttük!
12.5.⊇Rajzolj a képernyőre koncentrikus köröket! Középpontjuk a
(320,240) pont, sugaraik rendre 50, 100, 150.
12.6.⊄Módosítsd az előző programot úgy, hogy a CIRCLE utasítást csak
egyszer írd le!
Forrás: http://www.doksi.hu

26

12.7.⊇Rajzoltass a képernyő középpontjában tetszőleges számú, sugarú


és színű koncentrikus köröket! (Vigyázz a legnagyobb sugár
megválasztásánál!)
12.8.⊇Írj programot, amely kirajzolja a képernyőre az olimpiai ötkarikát
különböző színekkel!
12.9.⊇Készíts programot, amely három egybevágó, különböző színű
téglalapot rajzol a képernyőre:
a./ egymás mellé arányosan elhelyezve
b./ egymás alá
c./ átlósan!
12.10.⊄Módosítsd az előző programodat úgy, hogy a RECTANGLE
utasítást csak egyszer kelljen leírnod!
12.11.⊄Készítsd el három egymásba ágyazott téglalap rajzát a képernyő
közepére! A méreteket Te add meg!
12.12.⊄Módosítsd az előző feladatot úgy, hogy a téglalapok különböző
színnel kitöltöttek legyenek, a legkisebb legyen legfelül!
12.13.⊇Írasd ki a nevedet a grafikus képernyőre középre, vízszintes
irányban, az általad választott betűtípussal és mérettel!
12.14.⊇Az előző feladatot módosítsd úgy, hogy függőlegesen jelenjen
meg a neved!
12.15.⊄Írass értelmes szöveget átlósan a grafikus képernyőre!
12.16.⊄Készíts programot, amely trapézokat, paralelogrammát, téglalapot
és négyzetet rajzol a képernyőre arányosan elrendezve! Minden
alakzatban jelenjen meg annak neve! A kép alján pedig legyen ott a
készítő neve!

Valahogy így:

D.TRAPÉZ
TRAPÉZ SZ.TRAPÉZ

TÉGLALAP NÉGYZET
PARALELOGRAMMA
Forrás: http://www.doksi.hu

27

Nagy Péter

12.17.⊇A negyedik feladatot egészítsd ki feliratokkal! Minden háromszög


alatt jelenjen meg, hogy milyen típusú!
12.18.⊇A jegyzeted alapján rajzolj különböző alakzatokat a képernyőre!
Ellipszist, körcikket, ellipsziscikket stb.
12.19.⊂Készíts egy tortát, majd egy tortaszeletet a képernyőre! A látható
lapokat fesd be más-más színnel!

12.20.⊄A sokszögrajzoló utasítás segítségével rajzolj szabályos


háromszögeket a képernyőre, majd színezd be azokat különböző színnel
és mintával!
12.21.⊄Az előző feladatot módosítsd szabályos hatszögre!
12.22⊄Készíts programot, amely a F öld körüli pályán keringő Hold
mozgását mutatja be! Feliratozd a bolygókat!
Forrás: http://www.doksi.hu

28

12.23.⊄Az előző feladatot módosítsd úgy, hogy a Nap körül keringjen a


Föld, s a Föld körül a Hold!
Forrás: http://www.doksi.hu

29

12.24.⊂Készíts koordináta rendszert rajzoló eljárást! A tengelyek mellett


szerepeljen a nevük, s a tengelyekre készíts beosztásokat!
12.25.⊂Az előző feladat koordináta rendszerét felhasználva ábrázold az
Y=2*X-1 elsőfokú függvény pontjait a [-10; +10] intervallumon!
12.26.⊂Módosítsd az előző feladatot úgy, hogy tetszőleges Y= A * X + B
alakú elsőfokú függvényre is működjön!

XIII.

ELEMI GRAFIKAI FELADATOK II.

Most olyan feladatok szerepelnek a példatárban, melyek megoldása során


csak a következő grafikus utasításokat használhatod fel:
 képernyőtörlés
 egy pont rajzolása
 egy pont törlése
 adott pont rajzolt vagy rajzolatlan állapotának vizsgálata

13.1.⊂Készíts programot, amely besatírozza a képernyőt függőleges


vonalakkal!
13.2.⊂Módosítsd az előző programot úgy, hogy vízszintes vonalakkal
satírozzon!
13.3.⊂Rajzoltass a képernyőre vonalakat spirális alakban!

Valahogy így:
Forrás: http://www.doksi.hu

30

13.4.⊂Készíts szakaszrajzoló eljárást a pontrajzoló eljárás segítségével!


13.5.⊂Rajzoljunk a képernyőre véletlenszerűen szakaszokat!
13.6.⊂Készítsünk körrajzoló programot, a k ör Descartes-féle koordináta-
2 2 2
rendszerben felírt egyenletének ismeretében! (Az egyenlet: X + Y = R
alakú)
13.7.⊂Készíts negyedkört rajzoló eljárást! A sugár legyen 100, az ívhez
tartozó kör középpontja a képernyő közepe!
13.8.⊂Módosítsd az előző programot úgy, hogy az adatokat a felhasználó
adhassa meg!
13.9.⊂Készíts programot, amely adott negyedkört rajzol a képernyőre,
majd az ENTER billentyű lenyomására azt tükrözi a tengelyekre és a
középpontra, előállítva ezzel a teljes kör rajzát! Az egyes lépésekhez
rendelhetsz különböző színeket!

PROGRAMOZÁSI TÉTELEK

A most következő fejezetek feladatainak megoldása során a feladattípus


általános megoldó algoritmusát követjük. Néhány esetben ezt egészítjük
ki egyéb számításokkal.
Forrás: http://www.doksi.hu

31

XIV.

A SOROZATSZÁMÍTÁS (ÖSSZEGZÉS) TÉTELE

Ez a feladattípus adott sorozathoz rendel egy értéket. A sorozat tagjainak


meghatározza összegét, szorzatát, átlagát stb.
A feladattípus általános megoldó algoritmusa:
Eljárás sorozatszámítás:
S:= kezdőérték
Ciklus I=1-től N-ig
S:= S művelet X( I )
Ciklus vége
Eljárás vége

14.1.⊇Adjuk össze az első tíz természetes számot! (Az első elem 1


legyen!)
14.2.⊇Tetszőleges helyről indítva adjunk össze tíz darab szomszédos
egész számot!
14.3.⊇Az előző programodat módosítsd úgy, hogy tetszőleges, a
felhasználó által megadott számú szomszédos természetes számra
működjön, 1-től indítva!
14.4.⊄Határozzuk meg N db egymást követő egész szám számtani
közepét!
14.5.⊄Egy héten keresztül mértük a déli hőmérsékletet. Írj programot,
amely ezen adatokból meghatározza a heti déli átlaghőmérsékletet!
14.6.⊄Készíts programot, amely N tanuló adott dolgozatjegyéből
meghatározza az osztály átlagát az adott tantárgyból!
14.7.⊇N napon k eresztül mérjük a l ehullott csapadék mennyiségét (mm-
ben). Határozzuk meg, hogy mennyi eső esett ezen időszakban!
14.8.⊇Határozza meg a program 10 faktoriális értékét!
Forrás: http://www.doksi.hu

32

14.9.⊄Módosítsd az előző feladatot úgy, hogy N faktoriális értéket


számoljon! Ellenőrizd N értékét, nehogy túlcsordulás legyen!
14.10.⊄Adott egy N elemű betűsorozat! Fűzzük össze egyetlen változóba
N hosszúságú szöveggé!
14.11.⊂Egy horgászverseny adatait egy táblázatban tároljuk: H(i,j) jelenti,
hogy az „i.” horgász a j. halfajtából mennyit fogott. Írj programot, amely
kiszámítja, hogy a hor gászok összesen hány halat fogtak az egyes
fajtákból!
14.12.⊂Írd át az előző feladatot úgy, hogy azt is megadja, hogy a
horgászok egyénenként hány halat fogtak!

XV.

AZ ELDÖNTÉS TÉTELE

Ez a f eladattípus adott sorozathoz rendel egy logikai értéket. A logikai


érték „igaz”, ha a sorozatban létezik az általunk megadott tulajdonsággal
rendelkező elem, és „hamis”, ha nincs a sorozatban ilyen tulajdonságú
elem.
A feladattípus általános megoldó algoritmusa:
Eljárás eldöntés:
I:=1
Ciklus amíg I ≤ N és X( I ) nem T tulajdonságú
I:=I+1
Ciklus vége
VAN:=( I ≤ N )
Eljárás vége
Forrás: http://www.doksi.hu

33

15.1.⊇Írj programot, amely beolvas öt pozitív egész számot, majd eldönti


van-e közöttük öttel osztható!
15.2.⊇Kosárlabda csapat tagjainak magasságát tároljuk egy tömbben.
Készíts programot, amely eldönti, van-e a c sapatnak 210 cm-nél
magasabb játékosa!
15.3.⊇Egy osztály tanulóinak év végi átlagát tömbben tároljuk. Döntsd el,
hogy az osztályban van-e bukott tanuló!
15.4.⊇Ismert N autó fogyasztása (100 km/liter). Döntsd el, hogy minden
autó 8 liter alatt fogyasztott-e!
15.5.⊄Ismerjük egy osztály tanulóinak születési hónapjait. Döntsük el van-
e az osztályban évvesztes!
15.6.⊄Döntsük el egy számról, hogy prímszám-e!
15.7.⊂Adott egy tetszőleges, pozitív, 1-nél nagyobb egész szám. Döntsd
el, tagja-e a Fibonacci sorozatnak!
(Emlékeztető: A Fibonacci sorozat elemei : 1;1; 2; 3; 5; 8; 13; 21; ...)
15.8.⊄Egy adott, értelmes szövegről döntse el a program, hogy több
szóból áll-e!
15.9.⊂Egy bűnügyi nyilvántartásban a z sebtolvajokról négy adatot
tartanak nyilván: magasság, szemszín, hajszín, eddig letöltött büntetés.
Döntsük el, van-e két olyan zsebtolvaj, akiket ez a nyilvántartás nem
különböztet meg!
15.10.⊂Készíts programot, amely eldönti egy természetes számról, hogy
tökéletes szám-e! Tökéletesnek nevezünk egy számot, ha os ztóit
(önmaga kivételével) összeadva magát a számot kapjuk, pl. 6=1+2+3.
Forrás: http://www.doksi.hu

34

XVI.

A KIVÁLASZTÁS TÉTELE

Ez a f eladattípus egy adott sorozat elemei közül kiválaszt egy bizonyos


tulajdonságú elemet. A sorozat tagjai között e feladatokban biztosan van a
megadott tulajdonsággal rendelkező elem.
A feladattípus általános megoldó algoritmusa:
Eljárás kiválasztás:
I:=1
Ciklus amíg X( I ) nem T tulajdonságú
I:=I+1
Ciklus vége
SORSZÁM:=I
Eljárás vége

16.1.⊄Határozzuk meg az N (>1) természetes szám legkisebb


prímosztóját!
16.2.⊄Határozzuk meg az N (>1) természetes szám legnagyobb
prímosztóját!
16.3.⊇Készíts programot, amely egy 10 elemű tömb elemei közül
kiválasztja az első 5-tel oszthatót! (A tömb elemei között biztosan legyen
ilyen szám!)
16.4.⊇Ismerjük egy osztály tanulóinak születési hónapjait. Ezek között az
év minden hónapja előfordul. Írj programot, amely kiválasztja az első
évvesztest.!
16.5.⊇Téli napok déli hőmérsékleteit tároljuk egy tömbben. Adjunk meg
egy napot amikor nem fagyott! (A hőmérsékletek között biztosan van 0-nál
nagyobb!)
Forrás: http://www.doksi.hu

35

16.6.⊂Határozzuk meg az első 1-re végződő négyjegyű prímszámot!


16.7.⊄Módosítsd az előző programot úgy, hogy N jegy esetére is
működjön! (N értéke ésszerű határok között mozoghat!)
16.8.⊂Határozzuk meg azt a legnagyobb legfeljebb háromjegyű számot,
amelyben a számjegyek összege négyzetszám!
16.9.⊂Írj programot, amely megadja az első 10-nél nagyobb tökéletes
számot! Tökéletesnek nevezünk egy számot, ha osztóit (önmaga
kivételével) összeadva magát a számot kapjuk, pl. 6=1+2+3.
16.10.⊄Hónapnévvel adott dátumot alakítson a pr ogramod számmal
megadottá!
16.11.⊇Adjuk meg egy hónapról, hogy milyen évszakba esik!

XVII.

A KERESÉS TÉTELE

Ez a feladattípus sorozathoz rendel egy elemet. Megadott sorozatban kell


bizonyos tulajdonságú elemet keresni. Nem biztos, hogy a m egadott
sorozatban létezik ilyen tulajdonságú elem. Ha van ilyen elem, akkor vagy
magát az elemet, vagy a s orozatban elfoglalt helyének sorszámát kell a
programnak meghatároznia (esetleg mindkettőt).
A feladattípus általános megoldó algoritmusa:
Eljárás keresés:
I:=1
Ciklus amíg I ≤ N és X( I ) nem T tulajdonságú
I:=I+1
Ciklus vége
VAN:= ( I ≤ N )
Ha VAN akkor SORSZÁM := I
Forrás: http://www.doksi.hu

36

Eljárás vége

17.1.⊇Kosárlabdacsapat nyilvántartása tartalmazza a játékosok nevét és


magasságát. Írjunk programot, amely megadja egy 210 cm-nél magasabb
játékos nevét!
17.2.⊇Ismerjük N tanuló nevét és születési hónapját. Keressünk a
csoportban egy évvesztes tanulót!
17.3.⊇Adjuk meg egy természetes szám egy valódi osztóját!
17.4.⊄Keressük meg egy szám legnagyobb valódi osztóját!
17.5.⊄Adott egy vektor. Határozzuk meg egy negatív elemének indexét!
17.6.⊂Egy színház nyilvántartása tartalmazza, hogy mely jegyeket
vásároltak már meg. Adjunk meg két egymás melletti szabad helyet!
17.7.⊄Egy házi telefonkönyv a nev ek szerint rendezett. Keressünk meg
benne egy adott névhez tartozó telefonszámot!
17.8.⊂A véradók nyilvántartásában szerepel a név, az értesítési cím és a
vércsoport. Egy balesetet szenvedett X vércsoportú sérülthöz keressünk
donort!

XVIII.

A MEGSZÁMOLÁS TÉTELE

E feladattípusban a megadott sorozatban megszámoljuk, hogy bizonyos


tulajdonságú elemből hány darab van a sorozatban. Figyelem: a
darabszámot a számlálás megkezdése előtt mindig 0-ra kell állítani!
Forrás: http://www.doksi.hu

37

A feladattípus általános megoldó algoritmusa:


Eljárás megszámolás:
DB:=0
Ciklus I=1-től N-ig
Ha X( I ) T tulajdonságú akkor DB:=DB+1
Ciklus vége
Eljárás vége

18.1.⊇Készíts programot, amely megmondja, hogy egy egész számokból


álló sorozatban mennyi a pozitív elemek száma!
18.2.⊇Módosítsd az előző programot úgy, hogy a negatív és 0 elemek
számát is megadja!
18.3.⊇N tanuló átlagának ismeretében add meg a kitűnőek számát!
18.4.⊄Határozd meg egy szövegben előforduló A (a) betűk számát!
18.5.⊄Számoljuk meg, hányszor fordul elő egy adott szövegben az „a”
névelő!
18.6.⊄Adjuk meg egy tetszőleges természetes szám osztóinak számát!
18.7.⊄Ismerjük egy tanulócsoport matematika dolgozatjegyeit. Írasd ki a
különböző jegyek darabszámát!
18.8.⊄Hány olyan legfeljebb háromjegyű természetes szám van,
amelynek első két jegyéből alkotott szám osztója az eredeti számnak?
18.9.⊄Állapítsuk meg egy vektorban tárolt számokról, hogy negatív vagy
pozitív elemből van-e több! Egyenlőség esetén is jól működjön a program,
azaz a kiírás a következőhöz hasonló legyen: „ A negatív és pozitív
elemek száma egyenlő”.
18.10.⊄Állapítsuk meg, hogy egy természetes szám bináris alakjában
hány 1-es számjegy szerepel!
18.11.⊇Módosítsd az előző programot úgy, hogy a 0-ák számát is kiírja!
Forrás: http://www.doksi.hu

38

XIX.

A MAXIMUM - KIVÁLASZTÁS TÉTELE

Ebben a pél datípusban egy ismert sorozat elemei közül kell a


legnagyobbat kiválasztani (esetleg a l egkisebbet, ekkor minimum-
kiválasztásról beszélünk). V an, amikor a l egnagyobb (legkisebb) elemre
vagyunk kíváncsiak, van amikor csak a s orozatban elfoglalt helyének
sorszámára. Néhány esetben mind a kettőt meg kell adnunk.
A feladattípus általános megoldó algoritmusa:

I. Ez az eljárás a maximális elem értékét és sorszámát is megadja:


Eljárás maximum:
MAX:=X(1)
SORSZÁM:=1
Ciklus I=2-től N-ig
Ha MAX < X( I ) akkor MAX:=X( I )
SORSZÁM:=I
Ciklus vége
Eljárás vége

II. Ez az eljárás csak a m aximális elem értékét írja ki sorszám


nélkül:
Eljárás maximum:
MAX:=X(1)
Ciklus I=2-től N-ig
Ha X( I ) > MAX akkor MAX:=X( I )
Ciklus vége
Eljárás vége
A relációjel megfordításával kapjuk a minimum-kiválasztás algoritmusát.
Forrás: http://www.doksi.hu

39

19.1.⊇Adott egy öt elemből álló számsorozat. Adjuk meg a legnagyobb


elemét!
19.2.⊇Módosítsd az előző feladatot úgy, hogy a legnagyobb mellett a
legkisebb elemet is kiírja!
19.3.⊇Az előző program működjön ötnél több szám esetén is!
19.4.⊄Módosítsd az előző programot úgy, hogy a legnagyobb és
legkisebb elemek értékén kívül a sorszámukat is megadja!
19.5.⊄Tölts fel 0 és 100 közötti véletlen számokkal egy tömböt! A program
írja ki a legnagyobb és legkisebb elemet!
19.6.⊇Egy tömbben tároljuk a nyári napok átlaghőmérsékletét. A
méréseket hétfői napon kezdtük. Adjuk meg a legmelegebb vasárnapot!
19.7.⊄Melyik az a legnagyobb négyjegyű természetes szám, amely
osztható számjegyei összegével?
19.8.⊄Tölts fel egy 3 X 3-mas táblázatot természetes számokkal
véletlenszerűen 0 és 100 közötti értékekkel! Határozd meg a táblázat
legnagyobb elemét!
19.9.⊄Az előző programot módosítsd úgy, hogy a legnagyobb elem
indexeit is megadja! Például ha az első sor harmadik eleme a legnagyobb,
akkor írja ki, hogy a legnagyobb elem indexe (1,3)!
Forrás: http://www.doksi.hu

40

XX.

A KIVÁLOGATÁS TÉTELE

E példatípusnál egy sorozat meghatározott tulajdonsággal rendelkező


elemeit kell kiválogatni. Ez történhet úgy, hogy az adott tulajdonsággal
rendelkezőket kigyűjtjük egy vektorba.
A feladattípus általános megoldó algoritmusa:
Eljárás kiválogatás(kigyűjtéssel):
DB:=0
Ciklus I:=1-től N-ig
Ha X(I) T tulajdonságú akkor DB:=DB+1
Y(DB):=X(I)
Ciklus vége
Eljárás vége

A megoldásban gyakran nincs szükségünk az elemek kigyűjtésére,


hanem azonnal kiíratjuk azokat:
Eljárás kiválogatás(kiírással):
Ciklus I=1-től N-ig
Ha X(I) T tulajdonságú akkor Kiír: I, X(I)
Ciklus vége
Eljárás vége

20.1.⊇Tölts fel egy tömböt -10 és +10 közötti véletlen számokkal! Gyűjtsd
ki a pozitívokat!
20.2.⊇Módosítsd az előző feladatot úgy, hogy a negatív elemeket írja ki!
20.3.⊄Válogassuk ki egy szóból a magánhangzókat!
20.4.⊄Adott egy szósorozat. Írassuk ki a magas hangrendű szavakat!
20.5.⊄Adott egy természetes számokból álló vektor. Válogassuk ki az
elemek közül azokat, amelyek relatív prímek a 12-höz!
Forrás: http://www.doksi.hu

41

20.6.⊄Adott N gyerek neve és személyi száma. Adjuk meg a fiúkat!


20.7.⊂Ismerjük egy osztály órarendjét. Írassuk ki, mely napokon van
matematika órájuk!
20.8.⊂Ismerjük N ember nevét és születési dátumát (hónap, nap). Adjuk
meg a „Nyilas” csillagképben születetteket (november 22. és december
21. között)!

XXI.

AZ UNIÓKÉPZÉS TÉTELE

E feladatokban több sorozatból állítunk elő egy sorozatot valamilyen


szempont szerint.
Az unió matematikai definíciója:
Az A és B halmazok uniója azon elemek halmaza, melyek az A vagy B
halmaznak elemei. (Azaz legalább az egyik halmazban benne vannak.)
Pl. A:={a,b,c,d,e} és B:={d,e,f,g} ⇒ A∪B:={a,b,c,d,e,f,g}
A feladattípus általános megoldó algoritmusa:
Eljárás unió:
Ciklus I=1-től N-ig
UNIO(I):= X(I)
Ciklus vége
K:=N
Ciklus J=1-től M-ig
I:=1
Ciklus amíg I ≤ N és Y(J) = X(I)
I:=I+1
Forrás: http://www.doksi.hu

42

Ciklus vége
Ha I > N akkor K:= K+1 : UNIO(K):= Y(J)
Ciklus vége
Eljárás vége

21.1.⊄Tölts fel két tömböt (X és Y) véletlen számokkal, mondjuk öt-öt


elemmel. Írasd ki e két halmaz unióját!
21.2.⊂Egy osztály tanulói közül néhányan matematika szakkörre, mások
fizika szakkörre járnak. Egy tömbben tároljuk a m atematika szakkörösök
nevét, egy másikban a f izika szakkörösökét. Készíts programot, amely
ezen adatok ismeretében kiírja azon tanulók nevét, akik valamely szakkör
munkájában részt vesznek, azaz matematika vagy fizika szakkörre járnak!
21.3.⊂A V halmazba azok az emberek tartoznak, akiknek Volkswagen, az
O halmazba azok, akiknek Opel gyártmányú autójuk van. Adjuk meg azon
tulajdonosok halmazát (T), akiknek Volkswagen vagy Opel autójuk van!
(Elképzelhető, hogy valakinek mindkét autóból van a tulajdonában, ekkor
nevük természetesen csak egyszer szerepel a T halmazban!)
21.4.⊄Egy vektorban tároljuk egy X természetes szám összes osztóját,
egy másikban az Y természetes szám osztóit. Add meg azon osztókat,
melyek X vagy Y osztói!
21.5.⊂Minden halfajtáról tudjuk, hogy mikor esik tilalom alá a horgászata.
Adjuk meg azt az időszakot, amikor bármilyen halat szabad fogni!
Forrás: http://www.doksi.hu

43

XXII.

A METSZETKÉPZÉS TÉTELE

Az unióhoz hasonlóan e f eladatokban is több sorozathoz rendelünk


valamilyen szempont szerint egy sorozatot.
A metszet matematikai definíciója:
Az A és B halmazok metszete azon elemek halmaza, melyek az A és B
halmaznak is elemei. (Azaz mindkét halmazban benne vannak.)
Pl. A:={a,b,c,d,e} és B:={d,e,f,g} ⇒ A∩B:={d,e}

A feladattípus általános megoldó algoritmusa:


Eljárás metszet:
K:=0
Ciklus I=1-től N-ig
J:=1
Ciklus amíg J ≤ M és X(I) = Y(J)
J:=J+1
Ciklus vége
Ha J ≤ M akkor K:=K+1 : METSZET(K) := X(I)
Ciklus vége
Eljárás vége

22.1.⊄Tölts fel két tömböt (X és Y) véletlen számokkal, mondjuk öt-öt


elemmel. Írasd ki e két halmaz metszetét!
22.2.⊂Az előző fejezet második feladatából add meg azon tanulók
névsorát, akik mindkét szakkör munkájában részt vesznek!
22.3.⊄Egy-egy tömbben tároljuk két természetes szám összes osztóját.
Add meg a közös osztókat!
22.4.⊄Ismerjük két író műveinek listáját. Van-e azonos című alkotásuk?
Forrás: http://www.doksi.hu

44

22.5.⊂Az előző fejezet harmadik feladatából add meg azon tulajdonosok


névsorát, akiknek mindkét típusú autóból van a tulajdonukban!
22.6.⊄Beolvasunk két szót. Add meg azokat a betűket, amelyek mind a
két szóban előfordulnak!

RENDEZÉSEK

Az itt szereplő feladatokban valamilyen egy megadott sorozat elemeit kell


bizonyos szempont szerint átrendezni. Például nevek névsorba rendezése,
számok növekvő vagy csökkenő sorrendje stb. Sokféle rendezési módszer
létezik. Ezek közül négy szerepel e feladatgyűjteményben.

XXIII.

EGYSZERŰ CSERÉS RENDEZÉS

Ebben a rendezéstípusban a sorozat első elemét összehasonlítjuk a


többi, mögötte lévő elemmel, s ha valamelyik kisebb nála, akkor
felcseréljük azzal. Ezzel elérjük, hogy a sorozat első helyére a legkisebb
elem kerül. Ezt az eljárást folytatjuk a sorozat utolsó előtti tagjáig, s így
minden elem előbb utóbb a helyére kerül.
Általános megoldó algoritmusa:
Eljárás rendezés:
Ciklus I=1-től N-1-ig
Ciklus J=I+1-től N-ig
Ha X(I) > X(J) akkor Csere ( X(I), X(J) )
Forrás: http://www.doksi.hu

45

Ciklus vége
Ciklus vége
Eljárás vége

23.1.⊂Készíts programot, amely egy adott tömb egész típusú elemeit


növekvő sorba rendezi!
23.2⊂Nevekre is valósítsd meg az előbbi feladatot!
23.3.⊂Hány összehasonlítást kell elvégezni:
 3 elem sorba rendezésekor?
 4 elem sorba rendezésekor?
 5 elem sorba rendezésekor?
 6 elem sorba rendezésekor?
 10 elem sorba rendezésekor?
 N elem sorba rendezésekor?

XXIV.

A MINIMUM - KIVÁLASZTÁSOS RENDEZÉS

Az előző módszer hibája a sok felesleges csere. Célszerűbb az aktuális


első elemet a mögötte lévők közül egyedül a legkisebb taggal cserélni.
Ehhez a rendező ciklus belsejében cserék helyett egy minimum-
kiválasztást alkalmazunk.
Forrás: http://www.doksi.hu

46

Általános megoldó algoritmusa:


Eljárás minrendezés:
Ciklus I=1-től N-1-ig
MIN:=I
Ciklus J=I+1-től N-ig
Ha X(MIN) > X(J) akkor MIN:=J
Ciklus vége
Csere ( X(I), X(MIN) )
Ciklus vége
Eljárás vége

24.1.⊂Az előző fejezet első feladatát oldd meg ezzel a rendezési


módszerrel!
24.2.⊂Az előző fejezet második feladatát oldd meg ezzel a rendezési
módszerrel!
24.3.⊂Hány összehasonlítást kell elvégezni:
 3 elem sorba rendezésekor?
 4 elem sorba rendezésekor?
 5 elem sorba rendezésekor?
 6 elem sorba rendezésekor?
 10 elem sorba rendezésekor?
 N elem sorba rendezésekor?
Forrás: http://www.doksi.hu

47

XXV.

A BUBORÉKOS RENDEZÉS

E rendezési elv ötlete, hogy hasonlítsuk össze a szomszédos elemeket, s


ha sorrendjük nem jó, akkor cseréljük meg őket. Minden esetben figyeljük
a legutolsó csere helyét, mert a következő menetben csak addig kell
rendezni, ugyanis ha a belső ciklus egy lefutása alatt egyáltalán nem volt
csere, akkor kész a rendezés. Ha például a l egutolsó sorozat közepénél
volt a csere, akkor ebből tudhatjuk, hogy a sorozat közepe után biztosan
kész a rendezés, s így csak az előtte lévő résszel kell foglalkozni.

Általános megoldó algoritmusa:


Eljárás buborékrendezés:
I:=N
Ciklus amíg I > 1
CS:=1
Ciklus J=1-től I-1-ig
Ha X(J) > X(J+1) akkor Csere( X(J), X(J+1) ):
CS:=J
Ciklus vége
I:=CS
Ciklus vége
Eljárás vége

25.1.⊂Az első rendezési feladatot oldd meg ezzel a módszerrel!


25.2.⊂A másodikat is!
Forrás: http://www.doksi.hu

48

25.3.⊂Hány összehasonlítást kell elvégezni:


 3 elem sorba rendezésekor?
 4 elem sorba rendezésekor?
 5 elem sorba rendezésekor?
 6 elem sorba rendezésekor?
 10 elem sorba rendezésekor?
 N elem sorba rendezésekor?

XXVI.

A BEILLESZTÉSES RENDEZÉS

E rendezéstípus elve: egyetlen elem mindig rendezett, s ha v an egy


rendezett egyelemű részsorozatunk, akkor abba nagyság szerint helyére
tehetjük a következő elemet, ha nagyobb az elsőnél, akkor mögé,
különben elé. A következő beszúrandó elem az első elé, a második mögé
vagy közéjük kerül és így tovább. Hatékonyabb az eljárás, ha a
beillesztendő elemet nem tesszük rögtön a helyére, hanem a többieket
tologatjuk hátra, s a beillesztendőt a legvégén tesszük be.
Általános megoldó algoritmusa:
Eljárás beillesztéses:
Ciklus I=2-től N-ig
J:=I-1: Y:= X(I)
Ciklus amíg J > 0 és X(J) > Y
X(J+1) := X(J): J:=J-1
Ciklus vége
X(J+1):= Y
Ciklus vége
Eljárás vége
Forrás: http://www.doksi.hu

49

26.1.⊂Az első rendezési feladatot oldd meg ezzel a módszerrel!


26.2.⊂A másodikat is!
26.3.⊂Hány összehasonlítást kell elvégezni:
 3 elem sorba rendezésekor?
 4 elem sorba rendezésekor?
 5 elem sorba rendezésekor?
 6 elem sorba rendezésekor?
 10 elem sorba rendezésekor?
 N elem sorba rendezésekor?

XXVII.

A SZÉTVÁLOGATÁS

E feladattípusban egy adott sorozat elemeit válogatjuk ketté (esetleg


többfelé) valamilyen tulajdonság alapján. Például az osztály tanulóit fiúkra
és lányokra bontjuk, az egész számokat pozitívokra és negatívokra stb.
A feladattípus általános megoldó algoritmusa:
Eljárás szétválogatás1:
J:=0: K:=0
Ciklus I=1-től N-ig
Ha X(I) T tulajdonságú akkor J:=J+1: Y(J):=X(I)
különben K:=K+1: Z(K):=X(I)
Ciklus vége
Eljárás vége
Ez az algoritmus az adott tulajdonságú elemeket (pl. pozitív
egészek) egy vektorba teszi, a többieket egy másikba (negatív egészek),
ezért ez az algoritmus szétválogatás két vektorba.
Forrás: http://www.doksi.hu

50

Ha a szétválogatáshoz nem használhatunk fel újabb vektorokat, csak


egyet, akkor az algoritmust úgy szervezzük, hogy az adott tulajdonságú
elemeket az új tömb elejétől, a nem megadott tulajdonságúakat a t ömb
végéről kezdjük el betenni. Ez az algoritmus a szétválogatás egy tömbbe.
Eljárás szétválogatás2:
J:=0: K:=N+1
Ciklus I=1-től N-ig
Ha X(I) T tulajdonságú akkor J:=J+1: Y(J):=X(I)
különben K:=K-1: Y(K):=X(I)
Ciklus vége
Eljárás vége

27.1.⊄Adott egy tömb egész típusú elemekkel. Válogasd szét őket pozitív,
és nem pozitív elemekre két vektorba!
27.2.⊂Ismert a lakásigénylők listája, ebben a család neve és gyermekeik
száma szerepel. Válogassuk szét őket aszerint, hogy 3-nál kevesebb,
vagy legalább 3 gyermekük van! A legalább három gyermekesek előbb
jutnak lakáshoz, ezért a szétválogatás egy tömbbe eljárást alkalmazd, a
tömb elejétől a legalább három gyermekes családokat tedd!
27.3.⊂Egy tömbben tároljuk az Audi és a Volkswagen t ípusú új autót
vásárlókat Válogassuk szét őket aszerint két tömbbe (A és V), hogy
milyen típust vásároltak!
27.4.⊂Ismert egy osztály tanulóinak névsora és személyi száma.
Válogassuk szét a fiúkat és a lányokat két vektorba!
27.5.⊂Egy pontverseny száz résztvevője közül I. díjat kapnak a 90%-nál
többet, II.díjat a 80%-nál többet, III. díjat pedig a 70%-nál többet teljesítők.
A tanulók eredményeit egy névsor pontszámmal együtt tartalmazza.
Készítsük el az I., II., III. helyezettek illetve a nem díjazottak névsorát!
Forrás: http://www.doksi.hu

51

XXVIII.

MATEMATIKAI VERSENYFELADATOK

28.1.⊄Ha két kétjegyű szám számjegyeit egymás után írjuk, a két szám
összegének négyzetével egyenlő számot kapunk. Írj programot, amely
meghatározza az összes megoldást!
Az abcd = ( ab + cd )2 , azaz 1000*a+100*b+10*c+d = (10*a+b+10*c+d)2
feltételt kell a programnak vizsgálnia!
28.2.⊄Melyek azok a háromjegyű számok, amelyekre érvényesek a
következők:
700 ≤ abc ≤ 800 és a 2- b2 - c2 = a - b - c ?
28.3.⊂Hány olyan négyjegyű természetes szám van, amelynek 10-es
számrendszerbeli alakjában a szomszédos számjegyek különbözőek?
28.4.⊄Egy téglalap oldalai kétjegyű egész számok. A terület és kerület
összege 1996. Mekkorák lehetnek a téglalap oldalai?
28.5.⊄Egy tetszőleges kétjegyű szám után írjunk egy 0-át, majd újra a
kétjegyű számot. Osztható-e az így kapott ötjegyű szám 11-gyel illetve 13-
mal minden esetben?
28.6.⊄Határozzuk meg az a, b, n számjegyeket, ha tudjuk, hogy:
ab * 1n = nab !

28.7.⊄Az abcd tízes számrendszerbeli négyjegyű számról tudjuk, hogy


abc + ab +a = 219 és a + b + c + d =27. Melyik ez a szám?
28.8.⊄Melyek azok az x, y természetes számok, melyekre:
xy + yx +x*y =113?

28.9.⊄Határozzuk meg azokat az abba alakú négyjegyű számokat,


amelyekre az ab - ba természetes szám, és ab - ba = (a+b)2
Forrás: http://www.doksi.hu

52

28.10.⊄Van-e olyan tízes számrendszerbeli háromjegyű szám, amelynek


a középső jegyét törölve, a belőle így nyert kétjegyű szám az eredetinek
 hetede ν nyolcada ν kilencede?
28.11.⊄Ha összeadjuk két egész szám összegét, különbségét, szorzatát
és hányadosát, eredményül 500-at kapunk. Mi lehet ez a két szám?
28.12.⊄Add meg az összes olyan téglalapot, melynek oldalai egész
számok, és a területének mérőszáma pontosan háromszorosa a
kerületének.
28.13.⊂Van-e olyan háromjegyű prímszám, amelynek számjegyeit
összeszorozva tízet kapunk?
28.14.⊂Melyik az a legkisebb pozitív egész szám, amelynek a kétszerese
négyzetszám, és a háromszorosa egy egész szám harmadik hatványa?
28.15.⊂Hány olyan négyzetszám van, amely 25-tel osztva 12-t ad
maradékul? (Természetesen ésszerű határok között!)
28.16.⊄Hány olyan ötjegyű természetes szám van, amely 9-re végződik
és osztható 3-mal?
28.17.⊂Hány oldala van annak a k onvex sokszögnek, amelyre fennáll,
hogy belső szögeinek összegéhez hozzáadva a sokszög egy külső
szögét, eredményül 1560°-ot kapunk?
28.18.⊄Van-e olyan négyjegyű, tízes számrendszerbeli természetes
szám, amely számjegyeinek összege egyenlő egyrészt az utolsó két jegy
szorzatával, másrészt az első két jegy alkotta kétjegyű számmal is?
28.19.⊂Egy háromszög kerülete 19 c m, oldalai cm-ben mérve egész
számok. Egyik oldalának hossza a másik két oldal szorzatával egyenlő.
Mekkorák a háromszög oldalai?
28.20.⊄Három pozitív egész szám összege ugyanannyi, mint a szorzatuk.
Melyek lehetnek ezek a számok?
28.21.⊄Melyek azok a kétjegyű természetes számok, amelyekre igaz,
hogy maga a szám 17-tel nagyobb, mint számjegyeinek a szorzata?
28.22.⊂Van-e két olyan négyzetszám, amelyek különbsége 1996? Melyek
ezek? Hány ilyen pár van?
Forrás: http://www.doksi.hu

53

XXIX.

VEGYES FELADATOK

29.1.⊂Készíts programot, amely néhány síkidom területét kiszámítja! Az,


hogy milyen síkidommal szeretnénk dolgozni, menüből legyen
választható!
29.2.⊄Az előzőhöz hasonló programot készíthetsz testek felszín-és
térfogatszámítására is.
29.3.⊂Adott kettes számrendszerben egy tetszőleges szám. Írj programot,
amely átalakítja tízes számrendszerbe!
29.4.⊂Készíts programot, amely tízesből alakít át kettesbe!
29.5.⊂Módosítsd az előző programodat úgy, hogy tízes számrendszerből
kettes, négyes vagy nyolcas számrendszerbe lehessen alakítani. A
program menüben kínálja fel a lehetséges választást!
29.6.⊂Bővítsd az előző programodat úgy, hogy a tizenhatos
számrendszerbe történő átalakítás is szerepeljen a menüben.
29.7.⊄Írj programot, amely meghatározza két szám legkisebb közös
többszörösét a legnagyobb közös osztó ismeretében!
29.8.⊄A szó betűiből állítsd elő a szó Morse kódját!
29.9.⊄Írj programot, amellyel kistestvéred vagy szomszédod gyakorolhatja
az alapműveleteket az általa ismert számkörben!
A programtól a következőket várjuk:
 Menüből legyen választható a művelet;
 A választott művelettel legalább tíz feladatot adjon;
 Minden választ azonnal értékeljen;
 A feladatok elvégzése után összesített értékelést
kapjunk (pl. százalékban)
29.10.⊂Készíts TOTO tippeket generáló programot!
29.11.⊂Generálj ötös lottószámokat !
Forrás: http://www.doksi.hu

54

29.12.⊂Módosítsd az előző programodat úgy, hogy választani lehessen


ötös vagy hatos lottószámokat szeretnénk-e!
29.13.⊇Guruljon egy kör a képernyőn:
 vízszintesen
 függőlegesen
 átlósan!
29.14.⊄Mozogjon egy kisautó a képernyő középvonalában vízszintesen!
29.15.⊄Rajzoltass sakktáblát a képernyőre!
29.16.⊂Készíts kockadobást szimuláló programot! A dobott szám a
grafikus képernyőn egy négyzeten jelenjen meg!

Pl. Ha 3-at dobtunk, akkor így:

29.17.⊄Készíts adott intervallumban Pitagoraszi számhármasokat kereső


programot!
29.18.⊂Készíts adott intervallumban ikerprímeket kereső programot!
29.19.⊄Keressünk 1000-ig Armstrong számokat! Az Armstrong számok a
következő alakúak: abc = a3 + b3 + c3 )
29.20.⊂Írj programot, amely római számokat alakít át arabbá és fordítva!
Menüből lehessen kérni , melyik átalakításra vagyok éppen kíváncsi!
29.21.⊂Az 1901. január elsejei nap hétfő volt. Írj programot, amely ez
alapján meghatározza, hogy egy tetszőleges év január elseje 1901 után
milyen napra esett!
29.22.⊄Írj programot, amely beolvas egy egész számot 1 és 99 között,
majd kiírja a számot betűvel!
29.23.⊂Az iskolai büfében kétféle csokoládét lehet vásárolni, az egyik A, a
másik B forintba kerül. Készíts programot, amely megmondja, hogy ha C
forintért vásároltunk csokoládét, akkor mennyit vehettünk az egyik illetve a
másik fajtából! Add meg azt is, hogy egyértelműen meghatározható-e az
eredmény, s ha nem, akkor az összes megoldást megadja!
Forrás: http://www.doksi.hu

55

29.24.⊄Készíts programot, amely beolvassa egy ember teljes nevét, majd


kiírja a m onogramját! Készítsd fel a pr ogramodat két vezeték- illetve
keresztnév esetére is. Pl. Nagy Szabó Zoltán vagy Kiss Péter Csaba.
29.25.⊂Írj programot, amely az A(N) és a B (N) vektorokban
számjegyenként a helyi értékük növekvő sorrendjében tárolt N+1 -jegyű
egész számokat összeadja, s az eredmény a C (N+1) vektorban
keletkezik.
Pl. N=1, A(0)=5, A(1)=6, B(0)=3, B(1) =7 esetén az eredmény C(0)=8,
C(1)=3, C(2)=1, mert 65+73=138.
29.26.⊂Írj programot, amely az A(N) és a B (N) vektorokban
számjegyenként a helyi értékük növekvő sorrendjében tárolt N+1 -jegyű
egész számokat összeszorozza, s az eredmény a C (2*N+1) vektorban
keletkezik.
Pl. N=1, A(0)=5, A(1)=6, B(0)=3, B(1) =7 esetén az eredmény C(0)=5,
C(1)=4, C(2)=7, C(3)=4, mert 65*73=4745.
29.27.⊂Készíts programot, amely a grafikus képernyőn egy kurzort képes
mozgatni a kurzormozgató billentyűk (←, ↑, →, ↓) segítségével!
Az aktuális pozíción megjelenítendő kurzor ábráját az 1,2,3,4 billentyű
bármikori lenyomásával lehessen kiválasztani!
Az egyes számokhoz tartozó kurzorképek :
1: , 2: ↑ , 3:  , 4: +
29.28.⊂Készíts programot, amely egy a képernyőn kijelölt tetszőleges
háromszöget megrajzol, majd vízszintes vonalakkal besatíroz (a
háromszög belsejében a képernyő minden második sorában egy
vízszintes vonalat húz). A háromszög három pontjának koordinátáit úgy
olvassuk be!
29.29.⊂”Eszperente” a szöveg, ha „e” betűn kívül más magánhangzót
nem tartalmaz. Írj programot, amely egy tetszőleges - ékezet nélküli -
szöveget beolvas, és „eszperentévé” alakítja!
29.30.⊂Az előző programodat módosítsd úgy, hogy olvasson be egy
szöveget (amely ékezetes magánhangzót nem tartalmaz), s döntse el,
hogy „eszperente-e”! Ha nem az, akkor írja ki a „hibás” szavakat!
Forrás: http://www.doksi.hu

56

29.31.⊂Készíts fényújságot, általad tervezett rövid hirdetési szöveggel! Az


újság folyamatosan működjön, azaz ha a szöveg egy betűje eltűnik a
képernyőről, akkor a másik oldalon lépjen be!

XXX.

MINTAALKALMAZÁSOK

I.FEJEZET

Program prog_1_2;
Uses Crt;
Begin
Clrscr;
GotoXY(30,13);
TextColor(2);
Write('Első Pascal programom');
ReadLn;
End.

II.FEJEZET

Program prog_2_7;
Uses Crt;
Begin
Clrscr;
Window(5,2,75,23);TextBackGround(Magenta);Clrscr;
TextColor(Black);
GotoXY(15,5);
WriteLn('Az 5 cm sugarú kör kerülete és területe');
GotoXY(10,10);
Writeln('A kerülete: ',2*5*pi:6:2,' cm');
GotoXY(10,15);
Writeln('A területe: ',5*5*pi:6:2,' cm2');
ReadLn;
Forrás: http://www.doksi.hu

57

Clrscr;
Window(1,1,80,25);TextBackGround(Black);Clrscr;
TextColor(White);
End.

Program prog_2_8;
Uses Crt;
Begin
Clrscr;
GotoXY(20,6);
TextColor(2);
WriteLn('A 100 és a 20 számokkal végzett alapműveletek');
GotoXY(10,10);
WriteLn('Az összegük: ',100+20);
GotoXY(10,13);
WriteLn('A különbségük ',100-20);
GotoXY(10,16);
WriteLn('A szorzatuk: ',100*20);
GotoXY(10,19);
WriteLn('A hányadosuk: ',100/20:6:0);
ReadLn;
End.

III.FEJEZET

Program prog_3_8;
Uses Crt;
var A,B,C,X:integer;
Begin
Clrscr;
A:=3; B:=4; C:=5;
GotoXY(10,10);
WriteLn('Kezdeti állapot: ',A,' ',B,' ',C);
X:=A;
A:=B; B:=C; C:=X;
GotoXY(10,14);
Writeln('Végállapot: ', A,' ',B,' ',C);
ReadLn;
Forrás: http://www.doksi.hu

58

End.

Program prog_3_13;
Uses Crt;
var A,B,C,D,E,F:boolean;
Begin
Clrscr;
A:=true; B:=false;
C:=A and B;
D:=A and not(B);
E:=not(A) and not(B);
F:=not(A) and B;
GotoXY(20,8);
WriteLn(' A és B: ',C);
GotoXY(20,10);
WriteLn(' A és nem B: ',D);
GotoXY(20,12);
WriteLn(' nem A és nem B: ',E);
GotoXY(20,14);
WriteLn(' nem A és B: ',C);
ReadLn;
Clrscr;
End.

IV.fejezet

Program prog_4_6;
Uses Crt;
var elso,masik,szkozep,negyzosszeg,osszegnegyz:real;

Procedure Beolvas;
Begin
Clrscr;
WriteLn('Kérem az első számot: ');
ReadLn(elso);
WriteLn('Kérem a másik számot: ');
ReadLn(masik);
End;

Procedure Kiszamol;
Begin
szkozep:=(elso+masik)/2;
negyzosszeg:=sqr(elso)+sqr(masik);
osszegnegyz:=sqr(elso+masik);
End;

Procedure Kiir;
Forrás: http://www.doksi.hu

59

Begin
WriteLn('Számtani közepük: ',szkozep:8:2);
WriteLn('Négyzetük összege: ',negyzosszeg:8:2);
WriteLn('Összegük négyzete: ',osszegnegyz:8:2);
End;

Begin
Beolvas;
Kiszamol;
Kiir;
ReadLn;
End.

Program prog_4_7b;
Uses Crt;
var sec,min,h:integer;

Procedure Beolvas;
Begin
Write('Kérem az átalakítandó másodpercek számát: ');
ReadLn(sec);
End;

Procedure Atszamol;
Begin
h:=sec div 3600;
sec:=sec-3600*h;
min:=sec div 60;
sec:=sec-60*min;
End;

Procedure Kiir;
Begin
WriteLn('Az idő: ',h,' óra ',min,' perc ',sec,' másodperc');
End;
Begin
Clrscr;
Beolvas;
Atszamol;
Kiir;
ReadLn;
End.

Program prog_4_14;
Uses Crt;
const nyugdij=0.06;
ebizt=0.04;
var brutto,netto,ado,nyd,eb:real;
nev:string[50];
Forrás: http://www.doksi.hu

60

Procedure Beolvas;
Begin
Write('Kérem a dolgozó nevét: ');ReadLn(nev);
Write('Bruttó jövedelme: ');ReadLn(brutto);
Write('Hány százalékkal adózik: ');ReadLn(ado);
End;

Procedure Kiszamol;
Begin
ado:=brutto*ado/100;
nyd:=(brutto-ado)*nyugdij;
eb:=(brutto-ado)*ebizt;
netto:=brutto-ado-nyd-eb;
End;

Procedure Kiir;
Begin
WriteLn(nev,' nevű dolgozó fizetési jegyzéke:');
WriteLn('Bruttó jövedelme: ',round(brutto):8);
WriteLn('Adóra levonás: ',round(ado):8);
WriteLn('Nyugdíjra levonás: ',round(nyd):8);
WriteLn('Egészségbizt.levonás: ',round(eb):8);
WriteLn('Netto jövedelme: ',round(netto):8);
End;

Begin
Clrscr;
Beolvas;
Clrscr;
Kiszamol;
Kiir;
ReadLn;
End.

V.fejezet

Program prog_5_10;
Uses Crt;
var a,d,elem:real;
n:integer;

Procedure Beolvas;
Begin
Write('A sorozat első eleme: ');ReadLn(a);
Write('A differencia: ');ReadLn(d);
Write('Hányadik elemre vagy kíváncsi: ');ReadLn(n);
End;
Forrás: http://www.doksi.hu

61

Procedure Meghataroz;
Begin
elem:=a+(n-1)*d;
End;

Procedure Kiir;
Begin
WriteLn('A sorozat ',n,'. eleme: ',elem:8:2);
End;

Begin
Clrscr;
Window(20,5,60,20);
Beolvas;
Meghataroz;
Kiir;
ReadLn;
End.

Program prog_5_12;
Uses Crt;
var i,j,a,b:byte;
Begin
Clrscr;
a:=25; b:=7;
For j:=1 to 10 do
Begin
GotoXY(a,b);
For i:=1 to 30 do
Begin
Write('*');
End;
b:=b+1;
End;
ReadLn;
End.

VI.fejezet

Program prog_6_8;
Uses crt;
var i,osszeg,maximum:integer;

Begin
Clrscr;
Write('Meddig szeretnéd számolni az összeget (min. 2 és max. 32767): ');
Forrás: http://www.doksi.hu

62

ReadLn(maximum);
i:=0; osszeg:=0;
while osszeg<maximum do
Begin
i:=i+1;
osszeg:=osszeg+i;
End;
WriteLn(i-1,'-ig kell összeadni a természetes számokat,');
WriteLn('hogy az összeg kisebb legyen a ',maximum,'-nál!');
ReadLn;
End.

Program prog_6_13;
Uses Crt;
var kezdo,penz,vart,kamat:real;
i:byte;

Begin
Clrscr;
Write('Mennyi a kezdőtőkéd: ');ReadLn(kezdo);
Write('Mennyi legyen az éves kamat: ');ReadLn(kamat);
Write('Mekkora összeget szeretnél kapni: ');ReadLn(vart);
i:=0; penz:=kezdo;
While penz<=vart do
Begin
i:=i+1;
penz:=penz+penz*(kamat/100);
End;
WriteLn(i,' év múlva éri el a pénzed a ',vart:8:0,' Ft-ot!');
ReadLn;
End.

VII.fejezet

Program prog_7_5;
Uses Crt;
const vegjel=0.00;
var db:byte;
szam:real;
atlag:real;

Begin
Clrscr;
db:=0;atlag:=0;
WriteLn('Írd be az átlagokat (a végjel:0)');
WriteLn('Minden átlag után ENTER!');
Repeat
ReadLn(szam);
Forrás: http://www.doksi.hu

63

db:=db+1;
atlag:=atlag+szam;
Until szam=vegjel;
WriteLn('A számok átlaga: ',atlag/(db-1):8:2);
ReadLn;
End.

Program prog_7_6;
Uses Crt;
var szamlalo,nevezo,tiztort:real;

Begin
Clrscr;
GotoXY(24,2);
WriteLn('Törtek átírása tizedes tört alakba');
WriteLn;WriteLn;
Write('Kérem a tört számlálóját: ');ReadLn(szamlalo);
Repeat
Write('Kérem a tört nevezőjét: ');ReadLn(nevezo);
Until nevezo<>0;
tiztort:=szamlalo/nevezo;
GotoXY(1,12);
Write('A közönséges tört tizedes tört alakja 6 tizedes jegyre: ');
Write(tiztort:10:6);
ReadLn;
End.

Program prog_7_9;
Uses Crt;
var a,b,c,ker:integer;

Begin
Clrscr;
GotoXY(32,2);
WriteLn('Háromszög adatai');
WriteLn;WriteLn;
Repeat
Write('Kérem az "a" oldalt: ');ReadLn(a);
Write('Kérem a "b" oldalt: ');ReadLn(b);
Write('K‚rem a "c" oldalt: ');ReadLn(c);
ker:=a+b+c;
Until (a+b>c) and (a+c>b) and (b+c>a) and (ker>20) and (ker<30);
WriteLn('Most már megfeleltek az oldalak mérőszámai!');
Write('A kerület is a megadott határok közé esik!');
ReadLn;
End.
Forrás: http://www.doksi.hu

64

VIII. fejezet

Program prog_8_5;
Uses Crt;
var mag1,mag2:real;

Begin
Clrscr;
GotoXY(27,6);
Write('Magasságok összehasonlítása');
GotoXY(20,10);
Write('Az egyik ember magassága: ');ReadLn(mag1);
GotoXY(20,12);
Write('A másik ember magassága: ');ReadLn(mag2);
GotoXY(20,16);
If mag1>mag2 Then Write('Az első ember a magasabb')
Else If mag1=mag2 Then Write('Egyenlő magasságúak')
Else Write('A második ember a magasabb');
ReadLn;
End.

Program prog_8_10;
Uses Crt;
var szam1,szam2,szam3:integer;
Begin
Clrscr;
GotoXY(29,6);
Write('Számok összehasonlítása');
GotoXY(20,10);
Write('Kérem az első számot: ');ReadLn(szam1);
GotoXY(20,12);
Write('Kérem a második számot: ');ReadLn(szam2);
GotoXY(20,14);
Write('Kérem a harmadik számot: ');ReadLn(szam3);
GotoXY(20,18);
If szam1>szam2 then
begin
if szam1>szam3 then Write('Az első a legnagyobb')
else Write('A harmadik a legnagyobb');
end
else if szam2>szam3 then Write('A második a legnagyobb')
Else Write('A harmadik a legnagyobb');
ReadLn;
End.

Program prog_8_15;
Uses Crt;
var a,b,c,x,y,z:integer;
Forrás: http://www.doksi.hu

65

Begin
Clrscr;
Write('A háromszög első oldala: ');ReadLn(a);
Write('A haromszög második oldala: ');ReadLn(b);
Write('A haromszög harmadik oldala: ');ReadLn(c);
If (a+b>c) and (a+c>b) and (b+c>a) then
Begin
WriteLn('Háromszög oldalai az adatok');
x:=sqr(a);y:=sqr(b);z:=sqr(c);
If (x+y=z) or (x+z=y) or (y+z=x) Then WriteLn('A háromszög derékszögű')
Else If (x+y>z) and (x+z>y) and (y+z>x)
Then WriteLn('A háromszög hegyesszögű')
Else WriteLn('A háromszög tompaszögű')
End
Else WriteLn('Ezek nem háromszög adatai!');
ReadLn;
End.

IX.fejezet

Program prog_9_2;
Uses Crt;
var pontszam:byte;
Begin
Clrscr;
GotoXY(4,8);
Write('Kérem az elért pontszámot (0<=pontszám<=50): ');
ReadLn(pontszam);
If (pontszam<0) or (pontszam>50) then WriteLn(' Ez nem lehetséges!')
Else
GotoXY(30,12);
Case pontszam of
0..25: WriteLn('Elégtelen az osztályzat');
26..30:Writeln('Elégséges az osztályzat');
31..39:WriteLn('Közepes az osztályzat');
40..45:WriteLn('Jó az osztályzat');
46..50:WriteLn('Jeles az osztályzat');
End;
ReadLn;
End.

Program prog_9_5;
Uses Crt;
var bemeno:integer;
szam:integer;
Forrás: http://www.doksi.hu

66

Procedure Beolvasas;
Begin
ReadLn(bemeno); Write('Kérem a bemenő értéket : ');
WriteLn('A menu a következő:');
WriteLn('1: a beolvasott számot írja ki');
Writeln('2: az abszolut értékét írja ki');
Writeln('3: a négyzetét írja ki');
Writeln('4: az ellentettjét írja ki');
Repeat
WriteLn('Válassz a menüpontok számaiból!'); ReadLn(szam);
Until (szam>=1) and (szam<=4)
End;

Procedure Menu;
Begin
GotoXY(20,10);
Case szam of
1: Write('A beolvasott szám ',bemeno,' volt.');
2: Write('A ',bemeno,' abszolut értéke: ',abs(bemeno));
3: Write('A ',bemeno,' négyzete: ',sqr(bemeno));
4: Write('A ',bemeno,' ellentettje: ',-bemeno);
End;
End;

Begin
Clrscr;
Window(10,5,70,20);
Beolvasas;
Clrscr;
Menu;
Readln;
End.

X.fejezet

Program prog_10_8;
Uses Crt;
const maxn=100;
Type vektor=array[1..maxn] of real;
var n :integer;
x,y :vektor;
xy :real;

Procedure Adatbeolvasas(var n:integer;var x,y:vektor);


var i:integer;
Begin
Clrscr;
Forrás: http://www.doksi.hu

67

WriteLn('Skalárszorzás':46);
Write('A vektorok mérete:'); ReadLn(n);
WriteLn('Az első vektor komponensei:');
For i:=1 to n do
Begin
Write(i:5,'='); ReadLn(x[i]);
End;
Writeln('A második vektor komponensei:');
For i:=1 to n do
Begin
Write(i:5,'='); ReadLn(y[i]);
End;
End;

Procedure Skalarszorzas(n:integer; x:vektor; y:vektor; var xy:real);


var i:integer;
Begin
xy:=0;
For i:=1 to n do
xy:=xy+x[i]*y[i];
End;

Procedure Kiiras(xy:real);
Begin
WriteLn('A két vektor skalárszorzata:',xy:8:2);
ReadLn;
End;

Begin
Adatbeolvasas(n,x,y);
Skalarszorzas(n,x,y,xy);
Kiiras(xy);
End.

Program prog_10_10;
Uses Crt;
const kezdet=1990;
veg=1997;
Type ruhapenz=array[kezdet..veg] of integer;
var Gabor,Eva:ruhapenz;
ev:word;

Procedure Feltoltes(ev:word;var Gabor,Eva:ruhapenz);


Begin
Clrscr;
For ev:=kezdet to veg do
Begin
Write(ev,': Gábor ruhapénze: ');ReadLn(Gabor[ev]);
Write(ev,': Éva ruhapénze : ');ReadLn(Eva[ev]);
End;
Forrás: http://www.doksi.hu

68

End;

Procedure Elkoltott(var ev:word;Gabor,Eva:ruhapenz);


Begin
Repeat
Write('Kérem az évet, amire kíváncsi vagy: ');ReadLn(ev);
Until ((ev>=1990) and (ev<=1997));
While ev<>0 Do
Begin
WriteLn('Gábor ruhapénze ebben az évben: ',Gabor[ev]);
WriteLn('Éva ruhapénze ebben az évben: ',Eva[ev]);
WriteLn('Együtt költöttek: ',Gabor[ev]+Eva[ev]);
WriteLn('Akarsz másik évet is? Ha igen gépeld be! ');
Write('Ha nem, akkor írj 0- t!');
ReadLn(ev);
End;
End;

Begin
Feltoltes(ev,Gabor,Eva);
Elkoltott(ev,Gabor,Eva);
End.

Program prog_10_11;
Uses Crt;
const max=100;
Type vektor=array[1..max] of boolean;
var szabad:vektor;
lepes,i:word;

Procedure Kezdet(var szabad:vektor);


Begin
Clrscr;
For i:=1 to max do
szabad[i]:=false; {Kezdetben minden cella zárva van}
End;

Procedure Jatek(lepes:word;var szabad:vektor);


Begin {A börtönőr játéka}
For lepes:=1 to max do
Begin
i:=lepes;
While i<=max do
Begin
szabad[i]:=not szabad[i];
i:=i+lepes;
End;
End;
End;
Forrás: http://www.doksi.hu

69

Procedure Szerencsesek(szabad:vektor);
Begin
WriteLn('A szabaduló rabok cellasorszámai:');
For i:=1 to max do
Begin
If szabad[i] Then
Begin
Write(i:5);
End;
End;
End;

Begin
Kezdet(szabad);
Jatek(lepes,szabad);
Szerencsesek(szabad);
ReadLn;
End.

XI.fejezet

Program prog_11_2;
Uses crt;
const maxn=10;
maxm=10;
Type tabla=array[1..maxn,1..maxm] of byte;
var tablazat:tabla;
sor,oszlop:byte;

Procedure Beolvas(var sor,oszlop:byte;var tablazat:tabla);


var i,j:byte;
Begin
Clrscr;
WriteLn(' Táblázat feltöltése elemekkel’);
Repeat
Write('A táblázat sorainak száma:');ReadLn(sor);
Until ((sor>=2) and (sor<=maxn));
Repeat
Write('A táblázat oszlopainak száma:');ReadLn(oszlop);
Until ((oszlop>=2) and (oszlop<=maxm));
Randomize;
Begin
for i:=1 to sor do
for j:=1 to oszlop do
Begin
tablazat[i,j]:=round(random(2));
End;
End;
Forrás: http://www.doksi.hu

70

End;

Procedure Kiir(sor,oszlop:byte;tablazat:tabla);
var i,j:byte;
Begin
for i:=1 to sor do
Begin
WriteLn;
for j:=1 to oszlop do
Begin
Write(' ');Write(tablazat[i,j]:3);
End;
End;
WriteLn;
End;

Begin
Beolvas(sor,oszlop,tablazat);
Kiir(sor,oszlop,tablazat);
ReadLn;
End.

Program prog_11_8;
uses crt;
const maxn=10;
maxm=10;
Type tabla=array[1..maxn,1..maxm] of byte;
var tabla1,tabla2,tablaosszeg:tabla;
sor,oszlop:byte;

Procedure Beolvas(var sor,oszlop:byte;var tabla1,tabla2:tabla);


var i,j:byte;
Begin
Clrscr;
Writeln(' A táblázatok feltöltése elemekkel');
WriteLn;WriteLn;
Repeat
Write('A táblázatok sorainak száma:');ReadLn(sor);
Until ((sor>=2) and (sor<=maxn));
Repeat
Write('A táblázatok oszlopainak száma:');ReadLn(oszlop);
Until ((oszlop>=2) and (oszlop<=maxm));
Randomize;
Begin
for i:=1 to sor do
for j:=1 to oszlop do
Begin
tabla1[i,j]:=random(10);
tabla2[i,j]:=random(10);
End;
Forrás: http://www.doksi.hu

71

End;
End;

Procedure Osszead(sor,oszlop:byte;tabla1,tabla2:tabla;var tablaosszeg:tabla);


var i,j:byte;
Begin
for i:=1 to sor do
for j:=1 to oszlop do
Begin
tablaosszeg[i,j]:=tabla1[i,j]+tabla2[i,j];
End;
End;

Procedure Tablakiir(t:tabla);
var i,j:byte;
Begin
for i:=1 to sor do
Begin
WriteLn;
for j:=1 to oszlop do
Begin
Write(t[i,j]:4);
End;
End;
End;

Begin
Beolvas(sor,oszlop,tabla1,tabla2);
Osszead(sor,oszlop,tabla1,tabla2,tablaosszeg);
WriteLn(' Az egyik tábla:');
Tablakiir(tabla1);
WriteLn;
WriteLn(' A másik tábla:');
Tablakiir(tabla2);
WriteLn;
WriteLn(' Az összegtáblázat:');
Tablakiir(tablaosszeg);
ReadLn;
End.

Program prog_11_9;
Uses Crt;
const maxn=50;
Type
tanulo = record
nev:string[30];
szulev: integer;
End;
tomb=array[1..maxn] of tanulo;
var tanulok:tomb;
Forrás: http://www.doksi.hu

72

n: byte;

Procedure Beolvas(var n:byte;var tanulok:tomb);


var i:byte;
Begin
Clrscr;
Repeat
Write('A tanulók száma: '); ReadLn(n);
Until (n>=1) and (n<=maxn);
for i:=1 to n do
Begin
Write(' ',i,'. Név : '); ReadLn(tanulok[i].nev);
Write(' Születési év: '); ReadLn(tanulok[i].szulev);
End;
End;

Procedure Kiir(n:byte;tanulok:tomb);
var i:byte;
Begin
Clrscr;
WriteLn(' Név Születési év');
WriteLn(' **********************************');
for i:=1 to n do
WriteLn(tanulok[i].nev:20,' ',tanulok[i].szulev:5);
End;

Begin
Beolvas(n,tanulok);
Kiir(n,tanulok);
ReadLn;
End.

Program prog_11_10;
Uses Crt;
const maxn=50;
Type
iro = record
nev:string[20];
cim:string[30];
kiev: integer;
End;
tomb=array[1..maxn] of iro;
var
irok:tomb;
n: byte;

Procedure Beolvas(var n:byte;var irok:tomb);


var i:byte;
Begin
Clrscr;
Forrás: http://www.doksi.hu

73

Repeat
Write('Az írók száma: '); ReadLn(n);
Until (n>=1) and (n<=maxn);
for i:=1 to n do
Begin
Write('A(z) ',i,'. író neve : '); ReadLn(irok[i].nev);
Write('Művének címe : '); ReadLn(irok[i].cim);
Write('A kiadás éve : '); ReadLn(irok[i].kiev);
End;
End;

Procedure Kiir(n:byte;irok:tomb);
var i:byte;
Begin
Clrscr;
WriteLn(' Név Műcím Kiadás éve');
WriteLn(' ***************************************************');
for i:=1 to n do
WriteLn(irok[i].nev:20,irok[i].cim:20,irok[i].kiev:10);
End;

Begin
Beolvas(n,irok);
Kiir(n,irok);
ReadLn;
End.

XII.fejezet

Program prog_12_7;
Uses Crt,Graph;
const ut='c:\tp\bgi';
var gd,gm,r,x,y,n,d,lehet:integer;

Procedure Nyit(var gd,gm:integer);


Begin
Detectgraph(gd,gm);
Initgraph(gd,gm,ut);
End;

Procedure Zar;
Begin
Closegraph;
Restorecrtmode;
End;

Procedure Beolvas(var n,r,d:integer);


Begin
Forrás: http://www.doksi.hu

74

Clrscr;
Repeat
Write('Add meg a kezdőkör sugarát: ');ReadLn(r);
Until (r>0) and (r<240);
Repeat
Write('Mennyivel növekedjen a sugár: ');ReadLn(d);
Until (d>0) and (d<240-r);
lehet:=(240-r) div d;
Repeat
Write('Hány kört szeretnél látni: ');ReadLn(n);
Until (n>=1) and (n<lehet);
End;

Procedure Rajzol(x,y,d:integer;var r:integer);


var i:byte;
Begin
x:=320; y:=240;
For i:=1 to n do
Begin
Setcolor(i);
Circle(x,y,r);
r:=r+d;
End;
End;

Begin
Beolvas(n,r,d);
Nyit(gd,gm);
Rajzol(x,y,d,r);
ReadLn;
Zar;
End.

Program prog_12_16;
Uses Crt,Graph;
const ut='c:\tp\bgi';
var gd,gm:integer;

Procedure Nyit(var gd,gm:integer);


Begin
Detectgraph(gd,gm);
Initgraph(gd,gm,ut);
End;

Procedure Zar;
Begin
Closegraph;
Restorecrtmode;
End;
Forrás: http://www.doksi.hu

75

Procedure Trapez(x1,y1,x2,y2,x3,y3,x4,y4:integer);
Begin
line(x1,y1,x2,y2);
line(x2,y2,x3,y3);
line(x3,y3,x4,y4);
line(x4,y4,x1,y1);
End;

Begin
Nyit(gd,gm);
SetColor(2);
SetTextStyle(1,0,4);
OutTextXY(260,1,'Négyszögek');
Trapez(50,150,100,50,160,50,180,150);
SetTextStyle(1,0,1);
OutTextXY(85,100,'Trapéz');
Trapez(250,150,300,50,350,50,400,150);
OutTextXY(280,100,'Sz.trapéz');
Trapez(480,150,480,50,550,50,620,150);
OutTextXY(505,100,'D.trapéz');
Trapez(50,400,100,300,250,300,200,400);
OutTextXY(74,350,'Paralelogramma');
Rectangle(300,400,450,300);
OutTextXY(340,350,'Téglalap');
Rectangle(500,400,600,300);
OutTextXY(520,350,'Négyzet');
OutTextXY(520,450,'Nagy Péter');
ReadLn;
Zar;
End.

Program prog_12_22;
Uses Crt,Graph;
const ut='c:\tp\bgi';
var gd,gm,r,x,y,n,d:integer;

Procedure Nyit(var gd,gm:integer);


Begin
Detectgraph(gd,gm);
Initgraph(gd,gm,ut);
End;

Procedure Zar;
Begin
Closegraph;
Restorecrtmode;
End;

Procedure Fold;
Begin
Forrás: http://www.doksi.hu

76

SetLineStyle(0,0,3);
SetColor(Brown);
Circle(320,240,20);
FloodFill(322,238,brown);
SetTextStyle(1,0,1);
SetColor(White);
OutTextXY(550,350,'F”ld');
SetLineStyle(0,0,2);
Line(320,240,545,350);
End;

Procedure Foldpalya;
Begin
SetLineStyle(0,0,1);
SetColor(White);
Circle(320,240,150);
End;

Procedure Hold;
Begin
SetLineStyle(0,0,2);
SetColor(yellow);
Circle(470,240,10);
FloodFill(472,238,yellow);
SetTextStyle(1,0,1);
SetColor(White);
OutTextXY(550,250,'Hold');
SetLineStyle(0,0,2);
Line(470,240,550,250);
End;

Begin
Nyit(gd,gm);
Fold;
Foldpalya;
Hold;
ReadLn;
End.

Program prog_12_26;
Uses Crt,Graph;

const maxn=640;
maxm=480;
ut='c:\tp\bgi';
Type tomb=array[1..20] of integer;
var gd,gm,n,i,j,a,b:integer;
x,y:tomb;

Procedure Nyit(var gd,gm:integer);


Forrás: http://www.doksi.hu

77

Begin
DetectGraph(gd,gm);
InitGraph(gd,gm,ut);
End;

Procedure Zar;
Begin
CloseGraph;
RestoreCrtMode;
End;

Procedure Tengelyek;
var i,sv:integer;
Begin
SetColor(Black);
line(0,maxm div 2,maxn,maxm div 2);
SetTextStyle(1,0,1);
OutTextXY(620,240,'X');
line(maxn div 2,0,maxn div 2,maxm);
SetTextStyle(1,0,1);
OutTextXY(300,5,'Y');
i:=320; j:=240; sv:=10;
while sv<=maxn do
Begin
line(i+sv,maxm div 2-4,i+sv,maxm div 2+4);
line(i-sv,maxm div 2-4,i-sv,maxm div 2+4);
sv:=sv+10;
End;
sv:=0;
while sv<=maxm do
Begin
line(maxn div 2-4,i+sv,maxn div 2+4,i+sv);
line(maxn div 2-4,i-sv,maxn div 2+4,i-sv);
sv:=sv+10;
End;
End;

Procedure Beolvas;
Begin
WriteLn('Az elsőfokú függvény általános alakja: Y=A*X+B');
WriteLn;
Write('Kérem A értékét: '); ReadLn(A);
Write('Kérem B értékét: '); ReadLn(B);
End;

Procedure Adatok;
Begin
For i:=1 to 10 do
Begin
x[i]:=i*10;
Forrás: http://www.doksi.hu

78

y[i]:=A*x[i]+B*10;
End;
End;

Procedure Rajzol;
var sx,sy,mp,x1,x2:integer;
Begin
sx:=320; sy:=240;
SetColor(2);
mp:=sy-10*B;
circle(sx,mp,2);
For i:=1 to 10 do
Begin
SetColor(2);
circle(sx+x[i],sy-y[i],2);
End;
For i:=1 to 10 do
Begin
SetColor(2);
x[i]:=-i*10;
y[i]:=A*x[i]+B*10;
circle(sx+x[i],sy-y[i],2);
End;
SetColor(Blue);
x1:=-100;x2:=100;
line(sx-100,sy-A*x1-B*10,sx+100,sy-A*x2-B*10);
SetColor(Red);
OutTextXY(20,20,'A függvény képe');
End;

Begin
Beolvas;
Adatok;
Nyit(gd,gm);
Bar(1,1,640,480);
Tengelyek;
Rajzol;
ReadLn;
Zar;
End.

XIII. fejezet

Program prog_13_4;
Uses Crt,Graph;
const ut='c:\tp\bgi';
var a,b,n,c,d,p,q,x1,x2,y1,y2:integer;
gd,gm:integer;
Forrás: http://www.doksi.hu

79

Procedure beolvas;
Begin
WriteLn('Kérem a szakasz végpontjainak koordinátáit: ');
WriteLn;
Write('x1= ');ReadLn(x1);
Write('y1= ');Readln(y1);
Write('x2= ');ReadLn(x2);
Write('y2= ');ReadLn(y2);
End;

Procedure Nyit;
Begin
DetectGraph(gd,gm);
InitGraph(gd,gm,ut);
End;

Procedure Zar;
Begin
CloseGraph;
RestoreCrtMode;
End;

Procedure Szamol;
Begin
a:=x2-x1;
b:=y2-y1;
if a>b then n:=a else n:=b;
p:=n div 2;
q:=n div 2;
End;

Procedure Rajzol;
var
i:integer;
Begin
if x1<x2 then c:=1 else if x1>x2 then c:=-1 else c:=0;
if y1<y2 then d:=1 else if y1>y2 then d:=-1 else d:=0;
for i:=1 to n do
Begin
putpixel(x1,y1,green);
p:=p+a;
if p>=n then
Begin
x1:=x1+c;
p:=p-1;
End;
q:=q+b;
if q>=n then
Begin
Forrás: http://www.doksi.hu

80

y1:=y1+d;
q:=q-1;
End;
End;
End;

Begin
Beolvas;
Szamol;
Nyit;
Rajzol;
ReadLn;
Zar;
End.

Program prog_13_9;
Uses Crt,Graph;
var a,b,r:integer;

Procedure Nyit;
var gm,gd:integer;
Begin
DetectGraph(gd,gm);
InitGraph(gd,gm,'c:\tp\bgi');
End;

Procedure Zar;
Begin
CloseGraph;
end;

Procedure Tengelyek;
Begin
line(0,240,640,240);
line(320,0,320,480);
SetTextStyle(0,0,2);
OutTextXY(300,10,'Y');
OutTextXY(610,255,'X');
OutTextXY(600,10,'I.');
OutTextXY(40,10,'II.');
OutTextXY(40,460,'III.');
OutTextXY(590,460,'IV.');
End;

Procedure Rajzol1(r:integer);
var x,y:integer;
Begin
a:=320;b:=240;
x:=0;
y:=r;
Forrás: http://www.doksi.hu

81

while y>0 do
Begin
putpixel(x+a,-y+b,2);
if (x+1)*(x+1)+y*y<r*r then x:=x+1
else if (x+1)*(x+1)+(y-1)*(y-1)<r*r then
Begin
x:=x+1;
y:=y-1;
end
else y:=y-1;
end;
end;

Procedure Rajzol2(r:integer);
var x,y:integer;
Begin
a:=320;b:=240;
x:=0;
y:=r;
while y>0 do
Begin
putpixel(-x+a,-y+b,4);
if (x+1)*(x+1)+y*y<r*r then x:=x+1
else if (x+1)*(x+1)+(y-1)*(y-1)<r*r then
Begin
x:=x+1;
y:=y-1;
end
else y:=y-1;
end;
End;

Procedure Rajzol3(r:integer);
var x,y:integer;
Begin
a:=320;b:=240;
x:=0;
y:=r;
while y>0 do
Begin
putpixel(-x+a,y+b,1);
if (x+1)*(x+1)+y*y<r*r then x:=x+1
else if (x+1)*(x+1)+(y-1)*(y-1)<r*r then
Begin
x:=x+1;
y:=y-1;
end
else y:=y-1;
end;
End;
Forrás: http://www.doksi.hu

82

Procedure Rajzol4(r:integer);
var x,y:integer;
Begin
a:=320;b:=240;
x:=0;
y:=r;
while y>0 do
Begin
putpixel(x+a,y+b,14);
if (x+1)*(x+1)+y*y<r*r then x:=x+1
else if (x+1)*(x+1)+(y-1)*(y-1)<r*r then
Begin
x:=x+1;
y:=y-1;
end
else y:=y-1;
end;
End;

Procedure Beolvas(var r:integer);


Begin
GotoXY(10,12);
Write('Kérem a kör sugarát (0<r<=150): ');ReadLn(r);
End;

Begin
Clrscr;
Beolvas(r);
Nyit;
Tengelyek;
Rajzol1(r);
ReadLn;
Rajzol2(r);
ReadLn;
Rajzol3(r);
ReadLn;
Rajzol4(r);
Repeat until keypressed;
Zar;
End.

XIV.fejezet

Program prog_14_4;
Uses Crt;
const maxn=50;
Type vektor=array[1..maxn] of real;
Forrás: http://www.doksi.hu

83

var szamok:vektor;
n:byte;
szkozep:real;

Procedure Beolvas(var n:byte;var szamok:vektor);


var i:byte;
Begin
Clrscr;
GotoXY(30,4);
WriteLn('N db egész szám számtani közepe');
WriteLn;WriteLn;
Repeat
Write('Hány db szám átlagát szeretnéd számolni: ');ReadLn(n);
Until (n>0) and (n<=maxn);
For i:=1 to n do
Begin
Write('A(z) ',i,'. szám: ');ReadLn(szamok[i]);
End;
End;

Procedure Szamtanikozep(szamok:vektor;n:byte;var szkozep:real);


var i:byte;
Begin
szkozep:=0;
For i:=1 to n do
Begin
szkozep:=szkozep+szamok[i];
End;
szkozep:=szkozep/n;
End;

Procedure Kiir(szkozep:real);
var i:byte;
Begin
Write('A számok számtani közepe: ',szkozep:8:2);
ReadLn;
End;

Begin
Beolvas(n,szamok);
Szamtanikozep(szamok,n,szkozep);
Kiir(szkozep);
End.

Program prog_14_9;
Uses Crt;
const maxn=16;
var n:byte;
faktorialis:longint;
Forrás: http://www.doksi.hu

84

Procedure Beolvas(var n:byte);


var i:byte;
Begin
Clrscr;
GotoXY(30,4);
WriteLn('N faktoriális számítása');
WriteLn;WriteLn;
Repeat
GotoXY(10,8);
Write('Hány faktoriálist szeretnél számolni: ');ReadLn(n);
Until (n>=0) and (n<=maxn);
End;

Procedure Faktorialisszamol(n:byte;var faktorialis:longint);


var i:byte;
Begin
faktorialis:=1;
For i:=1 to n do
Begin
faktorialis:=faktorialis*i;
End;
End;

Procedure Kiir(faktorialis:longint);
Begin
GotoXY(10,12);
Write('A(z) ',N,' faktoriális értéke: ',faktorialis);
ReadLn;
End;

Begin
Beolvas(n);
Faktorialisszamol(n,faktorialis);
Kiir(faktorialis);
End.

Program prog_14_10;
Uses Crt;
const maxn=50;
Type vektor=array[1..maxn] of char;
var betuk:vektor;
n:byte;
szoveg:string;

Procedure Beolvas(var n:byte;var szamok:vektor);


var i:byte;
Begin
Clrscr;
GotoXY(30,4);
WriteLn('N db betűből egy szó képzése');
Forrás: http://www.doksi.hu

85

WriteLn;WriteLn;
Repeat
WriteLn;WriteLn;
Write('Hány db betűt szeretnél megadni: ');ReadLn(n);
Until (n>0) and (n<=maxn);
For i:=1 to n do
Begin
Write('A(z) ',i,'. betű: ');ReadLn(betuk[i]);
End;
End;

Procedure Osszefuzes(betuk:vektor;n:byte;var szoveg:string);


var i:byte;
Begin
szoveg:='';
For i:=1 to n do
Begin
szoveg:=szoveg+betuk[i];
End;
End;

Procedure Kiir(szoveg:string);
Begin
GotoXY(10,20);
Write('A betűkből összefűzött szöveg: ',szoveg);
ReadLn;
End;

Begin
Beolvas(n,betuk);
Osszefuzes(betuk,n,szoveg);
Kiir(szoveg);
End.

XV.fejezet

Program prog_15_3;
Uses crt;
const maxn=50;
Type tomb=array[1..maxn] of real;
var n :byte;
atlag:tomb;
van:boolean;

Procedure Beolvasas(var n:byte;var atlag:tomb);


var i:byte;
Begin
Clrscr;
Forrás: http://www.doksi.hu

86

WriteLn(' Az osztálynak van-e bukott tanulója?');


Writeln;Writeln;
Repeat
Write('Mennyi az osztálylétszám: ');ReadLn(n);
Until (n>=1) and (n<=maxn);
WriteLn('Kérem sorban az osztály tanulóinak átlagait!');
for i:=1 to n do
Begin
Repeat
Write('A(z) ',i,'. tanuló átlaga:');ReadLn(atlag[i]);
Until (atlag[i]Y=1) and (atlag[i]<=5);
End;
End;

Procedure Vizsgalat(n:byte;atlag:tomb;var van:boolean);


var i:byte;
Begin
i:=1;
while (i<=n) and (atlag[i]>=2) do
i:=i+1;
van:=(i<=n);
End;

Procedure Kiir(van:boolean);
Begin
if van then
WriteLn('Az osztálynak van bukott tanulója.')
else
WriteLn('Az osztálynak nincs bukott tanulója.');
ReadLn;
End;

Begin
Beolvasas(n,atlag);
Vizsgalat(n,atlag,van);
Kiir(van);
End.

Program prog_15_7;
Uses Crt;
const maxn=15;
Type tomb=array[1..maxn] of integer;
var szamok:tomb;
van:boolean;
szam:integer;

Procedure Beolvasas(var szam:integer);


var i:byte;
Begin
Clrscr;
Forrás: http://www.doksi.hu

87

WriteLn(' Tagja-e a FIBONACCI sorozatnak?');


Writeln;Writeln;
Repeat
Write('Kérem a számot: ');ReadLn(szam);
Until (szam>=2) and (szam<=1000);
End;

Procedure Vizsgalat(szam:integer;var szamok:tomb;var van:boolean);


var i:byte;
Begin
szamok[1]:=1; szamok[2]:=1;
for i:=3 to maxn do
Begin
szamok[i]:=szamok[i-2]+szamok[i-1];
End;
i:=1;
while (i<=maxn) and (szamok[i]<>szam) do
i:=i+1;
van:=(i<=maxn);
End;

Procedure Kiir(van:boolean);
Begin
if van then
WriteLn('Tagja a FIBONACCI sorozatnak.')
else
WriteLn('Nem tagja a FIBONACCI sorozatnak.');
ReadLn;
End;

Begin
Beolvasas(szam);
Vizsgalat(szam,szamok,van);
Kiir(van);
End.

XVI.fejezet

Program prog_16_1;
Uses Crt;
var szam,primo: integer;

Begin
Clrscr;
primo:=2;
Begin
Write('Kérem a számot:');
ReadLn(szam);
Forrás: http://www.doksi.hu

88

while (primo<=szam) and (szam mod primo<>0) do


primo:=primo+1;
End;
WriteLn('A legkisebb prímosztó:',primo);
ReadLn;
End.

XVII.fejezet

Program prog_17_6;
Uses crt;
const maxn=50;
maxm=50;
Type tabla=array[1..maxn,1..maxm] of integer;
var szin:tabla;
m,n :integer;
van :boolean;
s,o :integer;

Procedure Beolvasas(var n,m:integer; var szin:tabla);


var i,j:integer;
Begin
Clrscr;
Repeat
Write('Hány sor szék van a színházban? ');
ReadLn(n);
Until ((n>0) and (n<=maxn));
WriteLn;
Repeat
Write('Hány szék van egy sorban? ');
ReadLn(m);
Until ((m>0) and (m<=maxm));
WriteLn('Feltöltöm a táblát 0,1 elemekkel :');
WriteLn('0 ha foglalt, 1 ha szabad a szék!');
WriteLn('Enter ha folytathatom!');
ReadLn;
Randomize;
for i:=1 to n do
for j:=1 to m do
szin[i,j]:=random(2);
End;

Procedure szinhaz(n,m:integer; szin:tabla; var van:boolean; var s,o:integer);


Begin
s:=1;
o:=1;
While ((s<=n) and not((szin[s,o]=1) and (szin[s,o+1]=1))) do
Begin
Forrás: http://www.doksi.hu

89

o:=o+1;
if o=m then
Begin
s:=s+1;
o:=1;
End;
End;
van:=(s<=n);
End;

Procedure Kiiras(n,m:integer; szin:tabla; van:boolean; s,o:integer);


var i,j:integer;
Begin
Clrscr;
WriteLn(' Helyfoglalási táblázat');
WriteLn(' ======================' );
WriteLn;
WriteLn;
for i:=1 to n do
Begin
for j:=1 to m do
Write (' ',szin[i,j]:2);
WriteLn;
End;
WriteLn;
WriteLn;
if van then
Begin
WriteLn(s,'-dik sor ',o,'-dik ‚s ',o+1,' széke szabad.');
End
Else WriteLn('Nincs két egymás melletti szabad hely.');
Repeat until keypressed;
End;

Begin
Beolvasas(n,m,szin);
Szinhaz(n,m,szin,van,s,o);
Kiiras(n,m,szin,van,s,o);
End.

XVIII.fejezet

Program prog_18_4;
Uses Crt;
var szoveg: string;
hossz,db:byte;
Forrás: http://www.doksi.hu

90

Procedure Beolvas(var hossz:byte;var szoveg:string);


Begin
Clrscr;
GotoXY(30,2);
Writeln('"A (a)" betűk száma egy szövegben');
WriteLn;
Repeat
Write('Hány betűből áll a szöveg ? ');
ReadLn(hossz);
Until (hossz>=1) and (hossz<256);
WriteLn;WriteLn;
Write('Kérem a szöveget! ');
ReadLn(szoveg);
End;

Procedure Szamol(hossz:byte;szoveg:string;var db:byte);


var i:byte;
Begin
db:=0;
for i:=1 to hossz do
Begin
if (szoveg[i]='A') or (szoveg[i]='a') then
db:=db+1
End;
End;
Procedure Kiir(db:byte);
Begin
WriteLn;WriteLn;
WriteLn('A szövegben az "A(a)" betűk száma: ',db);
ReadLn;
End;

Begin
Beolvas(hossz,szoveg);
Szamol(hossz,szoveg,db);
Kiir(db);
End.

Program prog_18_8;
Uses crt;
var db:integer;

Procedure Megszamolas(var db:integer);


var i,x:longint;
Begin
Clrscr;
db:=90; {Mert minden kétjegyű szám osztható önmagával.}
for i:=100 to 999 do
Begin
x:=(trunc(i/10));
Forrás: http://www.doksi.hu

91

if (i mod x=0) then


Begin
db:=db+1;
Write(i,' ');
End;
End;
End;

Procedure Kiiras(db:integer);
Begin
GotoXY(6,10);
WriteLn('A jó számok száma ',db);
Repeat until keypressed;
End;

Begin
Megszamolas(db);
Kiiras(db);
End.

XIX.fejezet

Program prog_19_6;
Uses crt;
const maxn=100;
Type homers=array[1..maxn] of integer;
var n,i,max :integer;
x :homers;

Procedure Adatbeolvasas(var n:integer;var x:homers);


var i:integer;
Begin
Clrscr;
Repeat
Write('Hány napon át mértük a hőmérsékleteket: ');ReadLn(n);
Until (n>=7);
WriteLn;
WriteLn('Kérem a nyári napok hőmérsékleteit hétfővel kezdve!');
for i:=1 to n do
Begin
Write('Az ',i,'. nap hőmérséklete:'); ReadLn(x[i]);
End;
End;

Procedure Legmelegebb_vasarnap(n:integer; x:homers;var max:integer);


var i:integer;
Begin
Forrás: http://www.doksi.hu

92

max:=7;
i:=14;
Repeat
if x[max]<x[i] then max:=i; i:=i+7;
Until i>n
End;

Procedure Kiir(lv:integer; x:homers);


Begin
WriteLn('A legmelegebb vasárnap sorszáma:',max,'.');
WriteLn('Ekkor a hőmérséklet: ',x[max],' fok volt');
ReadLn;
End;

Begin
Adatbeolvasas(n,x);
Legmelegebb_vasarnap(n,x,max);
Kiir(max,x);
End.

XX.fejezet

Program prog_20_3;
Uses Crt;
const maxn=30;
Type mghtomb=array[1..maxn] of char;
var szo:string;
mgh:mghtomb;
db,n:byte;

Procedure Beolvasas(var n:byte; var szo:string);


var i:byte;
Begin
Clrscr;
GotoXY(30,2);
WriteLn('Magánhangzók kiválogatása egy szóból');
WriteLn;WriteLn;
Repeat
Write('Hány betűből áll a szó, amelyben kiválogatjuk a magánhangzókat: ');
ReadLn(n);
Until (n>=1) and (n<=maxn);
WriteLn;WriteLn;
Write('Kérem a szót: ');
ReadLn(szo);
End;

Procedure Kivalogat(n:byte;szo:string;var mgh:mghtomb;var db:byte);


Forrás: http://www.doksi.hu

93

var i:byte;
Begin
db:=0;
for i:=1 to n do
Begin
if (szo[i]='a') or (szo[i]='e') or (szo[i]='i') or (szo[i]='o') or
(szo[i]='u') then
Begin
db:=db+1; mgh[db]:=szo[i];
End;
End;
End;

Procedure Kiir(db:byte;mgh:mghtomb);
var i:byte;
Begin
WriteLn;
WriteLn('A szóban előforduló magánhangzók száma: ',db);
WriteLn;
WriteLn('Ezek sorban:');
for i:=1 to db do
write(' ',mgh[i],' ');
ReadLn;
End;

Begin
Beolvasas(n,szo);
Kivalogat(n,szo,mgh,db);
Kiir(db,mgh);
End.

Program prog_20_8;
Uses Crt;
Const maxn=50;
Type Adat=Record
nev:string;
szho,sznap:byte;
End;
jonevek=array[1..maxn] of string;
tomb=array[1..maxn] of adat;
var ember:adat;
n,db:byte;
jonev:jonevek;
emberek:tomb;

Procedure Adatok(var n:byte;var ember:adat;var emberek:tomb);


var i:byte;
Begin
Clrscr;
GotoXY(23,2);
Forrás: http://www.doksi.hu

94

WriteLn('A "Nyilas csillagképben" születtek');


GotoXY(1,4);
repeat
Write('Kérem az emberek számát: ');ReadLn(n);
Until (n>0) and (n<=maxn);
WriteLn('Kérem a vizsgálandó emberek adatait: ');
for i:=1 to n do
Begin
Write('A(z) ',i,' ember neve: ');ReadLn(ember.nev);
Repeat
Write('Születési hónapja: ');ReadLn(ember.szho);
Until (ember.szho>0) and (ember.szho<=12);
Repeat
Write('Születésének napja: ');ReadLn(ember.sznap);
Until (ember.sznap>0) and (ember.sznap<=31);
emberek[i]:=ember;
End;
End;

Procedure Vizsgalat(n:byte;ember:adat;emberek:tomb;var db:byte;var


jonev:jonevek);
var i:byte;
Begin
db:=0;
For i:=1 to n do
Begin
if ((emberek[i].szho=11) and (emberek[i].sznap>=22)) or
((emberek[i].szho=12) and (emberek[i].sznap<22)) then
Begin
db:=db+1;
jonev[db]:=emberek[i].nev;
End;
End;
End;

Procedure Kiir(db:byte;jonev:jonevek);
var i:byte;
Begin
WriteLn('A Nyilas csillagképben születettek névsora:');
for i:=1 to db do
WriteLn(jonev[i]);
if jonev[i]=''
then write('Senki sem született a "Nyilas csillagképben!');
End;

Begin
Adatok(n,ember,emberek);
Vizsgalat(n,ember,emberek,db,jonev);
Kiir(db,jonev);
ReadLn;
Forrás: http://www.doksi.hu

95

End.

XXI. fejezet

Program prog_21_2;
Uses Crt;
const maxn=20;
Type szakkor=array[1..maxn] of string;
var matek,fiz,uni:szakkor;
nm,nf,k:byte;

Procedure Adatok(var nm,nf:byte;var matek,fiz:szakkor);


var i:byte;
Begin
Clrscr;
WriteLn('Kérem a szakkörösök számát! ');
Repeat
Write('Matekosok: ');ReadLn(nm);
Until (nm>0) and (nm<=maxn);
WriteLn('Neveik: ');
For i:=1 to nm do
Begin
Write('A(z) ',i,'. mszakkörös neve: ');
ReadLn(matek[i]);
End;
Repeat
Write('Fizikások száma: ');ReadLn(nf);
Until (nf>0) and (nf<=maxn);
For i:=1 to nf do
Begin
Write('A(z) ',i,'. fszakkörös neve: ');
ReadLn(fiz[i]);
End;
End;

Procedure Szakkorre_jarok(nm,nf:byte;matek,fiz:szakkor;var uni:szakkor;var


k:byte);
var i,j:byte;
Begin
For i:=1 to nm do
Begin
uni[i]:=matek[i]
End;
k:=nm;
for j:=1 to nf do
Begin
i:=1;
While (i<=nm) and (fiz[j]<>matek[i]) do
Forrás: http://www.doksi.hu

96

i:=i+1;
if i>nm then
Begin
k:=k+1;
uni[k]:=fiz[j];
End;
End;
End;

Procedure Kiir(k:byte;uni:szakkor);
var i:byte;
Begin
WriteLn('Valamilyen szakkörre járók:');
for i:=1 to k do
WriteLn(uni[i]);
End;

Begin
Adatok(nm,nf,matek,fiz);
Szakkorre_jarok(nm,nf,matek,fiz,uni,k);
Kiir(k,uni);
ReadLn;
End.

XXII. fejezet

Program prog_22_2;
Uses Crt;
const maxn=20;
Type szakkor=array[1..maxn] of string;
var matek,fiz,metszet:szakkor;
nm,nf,k:byte;

Procedure Adatok(var nm,nf:byte;var matek,fiz:szakkor);


var i:byte;
Begin
Clrscr;
WriteLn('Kérem a szakkörösök számát! ');
Repeat
Write('Matekosok: ');ReadLn(nm);
Until (nm>0) and (nm<=maxn);
WriteLn('Neveik: ');
For i:=1 to nm do
Begin
Write('A(z) ',i,'. mszakkörös neve: ');
ReadLn(matek[i]);
End;
Repeat
Forrás: http://www.doksi.hu

97

Write('Fizikások száma: ');ReadLn(nf);


Until (nf>0) and (nf<=maxn);
For i:=1 to nf do
Begin
Write('A(z) ',i,'. fszakkörös neve: '); ReadLn(fiz[i]);
End;
End;

Procedure Szakkorre_jarok(nm,nf:byte;matek,fiz:szakkor;var
metszet:szakkor;var k:byte);
var i,j:byte;
Begin
k:=0;
For i:=1 to nm do
Begin
j:=1;
While (j<=nf) and ((matek[i])<>(fiz[j])) do
j:=j+1;
if j<=nf then
Begin
k:=k+1;
metszet[k]:=matek[i];
End;
End;
End;

Procedure Kiir(k:byte;uni:szakkor);
var i:byte;
Begin
WriteLn('Mindkét szakkörre járók:');
for i:=1 to k do
WriteLn(uni[i]);
End;

Begin
Adatok(nm,nf,matek,fiz);
Szakkorre_jarok(nm,nf,matek,fiz,metszet,k);
Kiir(k,metszet);
ReadLn;
End.

XXIII.fejezet

Program prog_23_2;
Uses Crt;
Const maxn=50;
Type str=array[1..maxn] of string;
var nev:str;
Forrás: http://www.doksi.hu

98

i,j,n:byte;

Procedure Adatok(var n:byte;var nev:str);


var i:byte;
Begin
Clrscr;
GotoXY(20,4);
Writeln('Nevek rendezése egyszerű cserés eljárással');
Writeln;
Repeat
Write('Kérem a nevek számát: '); ReadLn(n);
if n>maxn then WriteLn('Hibás, kisebb értéket kérek: maximum 50 név!');
if n<2 then WriteLn('A rendezéshez legalább két név kell!');
Until (n <=maxn) and (n>1);
Writeln;
WriteLn('Kérem a neveket (Ékezetek nélkül)!');
WriteLn;
for i:=1 to n do
Begin
Write('A(z) ',i,'. név : ');
ReadLn(nev[i]);
End;
End;

Procedure Rendezes(n:byte;var nev:str);


var i,j:byte;
snev:string;
Begin
for i:=1 to n-1 do
for j:=i+1 to n do
if nev[i]>nev[j] then
Begin
snev:=nev[i];
nev[i]:=nev[j];
nev[j]:=snev;
End;
End;

Procedure Kiir(nev:str);
var i:byte;
Begin
WriteLn;
WriteLn('A nevek rendezve:'); WriteLn;
for i:=1 to n do
WriteLn('A(z) ',i,'. név : ',nev[i]);
ReadLn;
End;

Begin
Adatok(n,nev);
Forrás: http://www.doksi.hu

99

Rendezes(n,nev);
Kiir(nev);
End.

XXIV.fejezet

Program prog_24_2;
Uses Crt;
Const maxn=50;
Type str=array[1..maxn] of string;
var nev:str;
i,j,n,min:byte;

Procedure Adatok(var n:byte;var nev:str);


var i:byte;
Begin
Clrscr;
GotoXY(20,4);
WriteLn('Nevek rendezése minimum-kiválasztással');
WriteLn;
Repeat
Write('Kérem a nevek számát: '); ReadLn(n);
if n>maxn then WriteLn('Hibás, kisebb értéket kérek: maximum 50 !');
if n<2 then WriteLn('A rendezéshez minimum két név kell!');
Until (n<= maxn) and (n>1);
WriteLn;
WriteLn;
WriteLn('Kérem a neveket (Ékezetek nélkül)!');
WriteLn;
for i:=1 to n do
Begin
Write('A(z) ',i,'. név : ');
ReadLn(nev[i]);
End;
End;

Procedure Rendezes(n:byte;var nev:str;var min:byte);


var i,j:byte;
snev:string;
Begin
for i:=1 to n do
Begin
min:=i;
for j:=i+1 to n do
Begin
if nev[min]>nev[j] then min:=j;
End;
snev:=nev[min];
Forrás: http://www.doksi.hu

100

nev[min]:=nev[i];
nev[i]:=snev;
End;
End;

Procedure Kiir(nev:str);
var i:byte;
Begin
WriteLn;
WriteLn('A nevek rendezve:');
WriteLn;
for i:=1 to n do
WriteLn('A(z) ',i,'. név : ',nev[i]);
ReadLn;
End;

Begin
Adatok(n,nev);
Rendezes(n,nev,min);
Kiir(nev);
End.

XXV.fejezet

Program prog_25_2;
Uses Crt;
Const maxn=50;
Type str=array[1..maxn] of string;
var nev:str;
i,j,n:byte;

Procedure Adatok(var n:byte;var nev:str);


var i:byte;
Begin
Clrscr;
GotoXY(20,4);
WriteLn('Nevek rendezése buborékos eljárással');
WriteLn;
Repeat
Write('Kérem a nevek számát: '); ReadLn(n);
if n>maxn then Writeln('Hibás, kisebb értéket kérek: maximum 50 !');
if n<2 then Writeln('A rendezéshez legalább két adat kell !');
Until (n<= maxn) and (n>1);
WriteLn;
WriteLn('Kérem a neveket (Ékezetek nélkül)!');
WriteLn;
for i:=1 to n do
Begin
Forrás: http://www.doksi.hu

101

Write('A(z) ',i,'. név : ');


ReadLn(nev[i]);
End;
End;

Procedure Rendezes(n:byte;var nev:str);


var i,j,cs:byte;
snev:string;
Begin
i:=n;
while i>1 do
Begin
cs:=1;
for j:=1 to i-1 do
Begin
if nev[j]>nev[j+1] then
Begin
snev:=nev[j];
nev[j]:=nev[j+1];
nev[j+1]:=snev;
cs:=j;
End;
i:=cs;
End;
End;
End;

Procedure Kiir(nev:str);
var i:byte;
Begin
WriteLn;
WriteLn('A nevek rendezve:');
WriteLn;
for i:=1 to n do
WriteLn('A(z) ',i,'. név : ',nev[i]);
ReadLn;
End;

Begin
Adatok(n,nev);
Rendezes(n,nev);
Kiir(nev);
End.

XXVI.fejezet

Program prog_26_2;
Uses Crt;
Forrás: http://www.doksi.hu

102

Const maxn=50;
Type str=array[1..maxn] of string;
var nev:str;
i,j,n:byte;

Procedure Adatok(var n:byte;var nev:str);


var i:byte;
Begin
Clrscr;
GotoXY(20,4);
WriteLn('Nevek rendezése beillesztéses rendezés eljárással');
WriteLn;
Repeat
Write('Kérem a nevek számát: '); ReadLn(n);
if n>maxn then Writeln('Hibás, kisebb értéket kérek: max 50 !');
if n<2 then Writeln('A rendezéshez legalább két adat szükséges!');
Until (n<=maxn) and (n>1);
WriteLn;
WriteLn('Kérem a neveket (Ékezetek nélkül)!');
WriteLn;
for i:=1 to n do
Begin
Write('A(z) ',i,'. név : ');
ReadLn(nev[i]);
End;
End;

Procedure Rendezes(n:byte;var nev:str);


var i,j:byte;
seged:string;
Begin
for i:=2 to n do
Begin
j:=i-1; seged:=nev[i];
while (j>0) and (nev[j]>seged) do
Begin
nev[j+1]:=nev[j];
j:=j-1;
End;
nev[j+1]:=seged;
End;
End;

Procedure Kiir(nev:str);
var i:byte;
Begin
WriteLn;
WriteLn('A nevek rendezve:');
WriteLn;
for i:=1 to n do
Forrás: http://www.doksi.hu

103

WriteLn('A(z) ',i,'. név : ',nev[i]);


ReadLn;
End;

Begin
Adatok(n,nev);
Rendezes(n,nev);
Kiir(nev);
End.

XXVII.fejezet

Program prog_27_1;
Uses Crt;
const maxn=30;
Type tomb=array[1..maxn] of integer;
var szamok,poz,nempoz:tomb;
n,j,k:byte;

Procedure Feltolt(var n:byte;var szamok:tomb);


var i:byte;
Begin
Clrscr;
GotoXY(35,4);
Write('SZÉTVÁLOGATÁS');
GotoXY(1,8);
Repeat
Write('Hány eleme legyen a tömbünknek: ');ReadLn(n);
Until (n>0) and (n<=maxn);
For i:=1 to n do
Begin
Write('A(z) ',i,'. elem: ');
ReadLn(szamok[i]);
End;
End;

Procedure Szetvalogat(n:byte;szamok:tomb;var poz,nempoz:tomb;var j,k:byte);


var i:byte;
Begin
j:=0; k:=0;
for i:=1 to n do
Begin
if szamok[i]>0 then
Begin
j:=j+1;
poz[j]:=szamok[i];
End
Else
Forrás: http://www.doksi.hu

104

Begin
k:=k+1;
nempoz[k]:=szamok[i];
End;
End;
End;

Procedure Kiir(j,k:byte;poz,nempoz:tomb);
var i:byte;
Begin
WriteLn('A sorozat pozitív elemei:');
for i:=1 to j do
Begin
Write(' ',poz[i],' ');
End;
WriteLn;
WriteLn;
WriteLn('A sorozat nempozitív elemei: ');
for i:=1 to k do
Begin
Write(' ',nempoz[i],' ');
End;
ReadLn;
End;

Begin
Feltolt(n,szamok);
Szetvalogat(n,szamok,poz,nempoz,j,k);
Kiir(j,k,poz,nempoz);
End.

XXVIII.fejezet

Program prog_28_1;
Uses Crt;
var a,b,c,d:byte;
Begin
Clrscr;
for a:=1 to 9 do
Begin
for b:=0 to 9 do
Begin
for c:=1 to 9 do
Begin
for d:=0 to 9 do
Begin
if (sqr(10*a+b+10*c+d)=1000*a+100*b+10*c+d)
Forrás: http://www.doksi.hu

105

then Write(a,b,c,d,' ');


End;
End;
End;
End;
ReadLn;
End.

Program prog_28_2;
Uses Crt;
var a,b,c:byte;
Begin
Clrscr;
a:=7;
for b:=0 to 9 do
Begin
for c:=0 to 9 do
Begin
if (sqr(a)-sqr(b)-sqr(c)=a-b-c)
then Write(a,'',b,'',c,' ');
End;
End;
ReadLn;
End.

Program prog_28_10;
Uses Crt;
var a,b,c:integer;

Begin
Clrscr;
for a:=1 to 9 do
Begin
for b:=0 to 9 do
Begin
for c:=0 to 9 do
Begin
if (100*a+10*b+c)=(10*a+c)*7
then Write(a,b,c,' ');
End;
End;
End;
ReadLn;
End.

Program prog_28_11;
Uses Crt;
var a,b:integer;

Begin
Forrás: http://www.doksi.hu

106

Clrscr;
for a:=1 to 30 do
Begin
for b:=1 to 30 do
Begin
if (a+b +a-b+a*b+a div b)=500 then Write(a,' ',b,' ');
End;
End;
ReadLn;
End.

Program prog_28_17;
Uses Crt;
var n:integer;

Begin
Clrscr;
for n:=1 to 30 do
Begin
if ((n-2)*180+(180-((n-2)*180 div n)))=1560 then Write(n);
End;
ReadLn;
End.

XXIX.fejezet

Program prog_29_4;
Uses Crt;
const maxn=20;
Type tomb=array[1..maxn] of byte;
var tizes,i:integer;
mar:tomb;

Procedure Beolvas(var tizes:integer);


Begin
Clrscr;
GotoXY(20,2);
Write('Tízes számrendszerbeli szám átalakítása kettesbe ');
GotoXY(2,8);
Repeat
Write('Kérem az átalakítandó számot (0<=szam<32768): ');ReadLn(tizes);
Until (tizes>=0) and (tizes<32768);
End;

Procedure Kettesbe(tizes:integer;var i:integer;var mar:tomb);


Begin
i:=1;
Repeat
Forrás: http://www.doksi.hu

107

mar[i]:=tizes mod 2;
tizes:=tizes div 2;
i:=i+1;
Until tizes=0;
End;

Procedure Kiir(i:integer;maradek:tomb);
var j:integer;
Begin
GotoXY(2,12);
write('A(z) "',tizes,'" szám kettes számrendszerbeli alakja: ');
for j:=i-1 downto 1 do
write(mar[j]);
ReadLn;
End;

Begin
Beolvas(tizes);
Kettesbe(tizes,i,mar);
Kiir(i,mar);
End.

Program prog_29_11;
Uses Crt;
const maxn=5;
Type lottoszamok=array[1..maxn] of byte;
var lotto:lottoszamok;

Procedure Sorsol(var lotto:lottoszamok);


var i:byte;
Begin
Clrscr;
Randomize;
for i:=1 to maxn do
lotto[i]:=random(90)+1;
End;

Procedure Megvizsgal(var lotto:lottoszamok);


var i,j:byte;
Begin
for i:=1 to maxn-1 do
Begin
for j:=i+1 to maxn do
Begin
if lotto[i]=lotto[j] then lotto[i]:=random(90)+1;
End;
End;
End;

Procedure Rendez(var lotto:lottoszamok);


Forrás: http://www.doksi.hu

108

var i,j:byte;
seged:byte;
Begin
for i:=1 to maxn-1 do
Begin
for j:=i+1 to maxn do
Begin
if lotto[i]>lotto[j] then
Begin
seged:=lotto[i];
lotto[i]:=lotto[j];
lotto[j]:=seged;
End;
End;
End;
End;

Procedure Kiir(lotto:lottoszamok);
var i:byte;
Begin
GotoXY(25,2);
WriteLn('LOTTÓSORSOLÁS');
GotoXY(10,6);
WriteLn('A nyertes lottószámok növekvő sorrendben:');
GotoXY(16,10);
for i:=1 to maxn do Write(' ',lotto[i]);
WriteLn;WriteLn;WriteLn;
Write('Kilép: ENTER!':60);
ReadLn;
End;

Begin
Window(10,5,70,20);TextBackGround(Cyan);Clrscr;
TextColor(Black);
Sorsol(lotto);
Megvizsgal(lotto);
Rendez(lotto);
Kiir(lotto);
Window(1,1,80,25);TextBackGround(Black);
TextColor(White);Clrscr;
End.

Program prog_29_16;
Uses Crt,Graph;
const ut='c:\tp\bgi';
var gd,gm,x,y:integer;
dobas:byte;

Procedure Nyit;
Forrás: http://www.doksi.hu

109

Begin
Detectgraph(gd,gm);
Initgraph(gd,gm,ut);
SetFillStyle(14,14);
Bar(5,5,635,475);
End;

Procedure Zar;
Begin
Closegraph;
Restorecrtmode;
End;

Procedure Dobasok(var dobas:byte);


Begin
Clrscr;
Randomize;
Dobas:=random(6)+1;
End;

Procedure Negyzetrajzol;
Begin
SetLineStyle(0,0,3);
SetFillStyle(1,Cyan);
Bar(270,190,370,290);
End;

Procedure Egy;
Begin
Circle(320,240,10);
End;

Procedure Ketto;
var i:byte;
Begin
x:=290; y:=210;
for i:=1 to 2 do
Begin
circle(x,y,10);
x:=x+60; y:=y+60;
End;
End;

Procedure Harom;
var i:byte;
Begin
x:=290; y:=210;
for i:=1 to 2 do
Begin
circle(x,y,10);
Forrás: http://www.doksi.hu

110

x:=x+60; y:=y+60;
End;
Circle(320,240,10);

End;

Procedure Negy;
var i:byte;
Begin
x:=290; y:=210;
for i:=1 to 2 do
Begin
circle(x,y,10);
x:=x+60; y:=y+60;
End;
x:=290; y:=270;
for i:=1 to 2 do
Begin
Circle(x,y,10);
x:=x+60; y:=y-60;
End;
End;

Procedure Ot;
var i:byte;
Begin
x:=290; y:=210;
for i:=1 to 3 do
Begin
circle(x,y,10);
x:=x+30; y:=y+30;
End;
x:= 290; y:=270;
for i:=1 to 2 do
Begin
circle(x,y,10);
x:=x+60; y:=y-60;
End;
End;

Procedure Hat;
var i:byte;
Begin
x:=290; y:=210;
for i:=1 to 3 do
Begin
circle(x,y,10);
y:=y+30;
End;
x:=350; y:=210;
Forrás: http://www.doksi.hu

111

for i:=1 to 3 do
Begin
circle(x,y,10);
y:=y+30;
End;
End;

Procedure Kirak(dobas:byte);
Begin
case dobas of
1:egy;
2:ketto;
3:harom;
4:negy;
5:ot;
6:hat;
End;
SetTextStyle(0,0,2);
OutTextXY(220,100,'A dobásom:');
SetTextStyle(0,0,1);
OutTextXY(450,350,'Kilép: ENTER!');
ReadLn;
End;

Begin
Dobasok(dobas);
Nyit;
Negyzetrajzol;
SetColor(Blue);
Kirak(dobas);
Zar;
End.

Program prog_29_17;
Uses Crt;
var a,b,c:integer;

Procedure Pitagoraszkeres(a,b,c:integer);
Begin
Clrscr;
for a:=3 to 100 do
Begin
for b:=4 to 100 do
Begin
for c:=5 to 100 do
Begin
if (sqr(a)+sqr(b)=sqr(c)) and (a<b) and (b<c) then
Write(a,' ',b,' ',c,'; ');
End;
End;
Forrás: http://www.doksi.hu

112

End;
End;

Begin
Pitagoraszkeres(a,b,c);
GotoXY(28,18);
Write('Ezek a Pitagoraszi számhármasok 100-ig');
ReadLn;
End.

Program prog_29_29;
Uses Crt;
const maxn=30;
Type szavak=array[1..maxn] of char;
var szo:szavak;
n:byte;

Procedure Beolvasas(var n:byte; var szo:szavak);


var i:byte;
Begin
Clrscr;
GotoXY(6,6);
Write('Hány betűből áll a szó, amelyet "Eszperente"-vé alakítunk: ');
ReadLn(n);
WriteLn('Kérem a szó betűit sorban: ');
For i:=1 to n do ReadLn(szo[i]);
End;

Procedure E_recserel(n:byte;var szo:szavak);


var i:byte;
Begin
for i:=1 to n do
Begin
if (szo[i]='a') or (szo[i]='i') or (szo[i]='o') or
(szo[i]='u') then szo[i]:='e';
End;
End;
Procedure Kiir(n:byte;szo:szavak);
var i:byte;
Begin
WriteLn;
WriteLn('A szó "Eszperente" nyelven: ');
WriteLn;
for i:=1 to n do
write(szo[i]);
ReadLn;
End;

Begin
Beolvasas(n,szo);
Forrás: http://www.doksi.hu

113

E_recserel(n,szo);
Kiir(n,szo);
End.

Felhasznált irodalom

1. S zlávi Péter - Zsakó László: Módszeres programozás: Programozási


tételek (Mikrológia 19)
2. Zsakó László: Programozási feladatok I.

3. Hanák D. Péter – Zsakó László: Programozási versenyfeladatok

4. Áts László: Turbo Pascal kezdőknek

5. Benkő Tiborné – Benkő László – Tóth Bertalan - Varga Balázs:

Programozzunk Turbo Pascal nyelven!

6. Horváth Tibor – Kis Marietta: Turbo Pascal 7.0

Könyv és feladatgyűjtemény kezdőknek

7. Kasza János: Programozási ismeretek 12-16 éveseknek

8. Angster Erzsébet: Programozás tankönyv I.

9. Fazekas Sándor: Turbo Pascal iskolásoknak

10. Varga Tamás matematika versenyek összegyűjtött feladatai

11. A Tolna Megyei Tehetséggondozó Alapítvány matematika versenyfeladatai

12. ELTE TTK Informatika Tanszékcsoport által kiadott programozási feladatok


Forrás: http://www.doksi.hu

114

TARTALOMJEGYZÉK

Bevezető ............................................................................................................ 3
Kiíró utasítások .................................................................................................. 9
Számok és műveletek ...................................................................................... 10
Változók deklarálása, értékük kiíratása ............................................................ 11
Adatbeolvasás: beolvasó utasítások ................................................................ 16
A számlálós ciklus ............................................................................................ 19
Az elöltesztelő ciklus ........................................................................................ 20
A hátultesztelő ciklus........................................................................................ 21
A kétirányú elágazás ........................................................................................ 22
A többirányú elágazás...................................................................................... 24
Feladatok egyindexes tömbökkel ..................................................................... 25
Feladatok többindexes tömbökkel.................................................................... 27
Elemi grafikai feladatok I. ................................................................................. 28
Elemi grafikai feladatok II. ................................................................................ 32
A sorozatszámítás tétele .................................................................................. 34
Az eldöntés tétele ............................................................................................ 35
A kiválasztás tétele .......................................................................................... 37
A keresés tétele ............................................................................................... 38
A megszámolás tétele ...................................................................................... 39
A maximum-kiválasztás tétele .......................................................................... 41
A kiválogatás tétele .......................................................................................... 43
Az unióképzés tétele ........................................................................................ 44
A metszetképzés tétele .................................................................................... 46
Egyszerű cserés rendezés ............................................................................... 47
A minimum-kiválasztásos rendezés ................................................................. 48
A buborékos rendezés ..................................................................................... 50
A beillesztéses rendezés ................................................................................. 51
A szétválogatás ................................................................................................ 52
Matematikai versenyfeladatok.......................................................................... 54
Forrás: http://www.doksi.hu

115

Vegyes feladatok ............................................................................................. 56


Mintaalkalmazások........................................................................................... 59
Felhasznált irodalom ...................................................................................... 116
Tartalomjegyzék ............................................................................................. 117

You might also like