Professional Documents
Culture Documents
Pascal Peldatar
Pascal Peldatar
hu
BEVEZETŐ
Könnyebb ⊇
Közepes ⊄
Nehéz ⊂
I.
KIÍRÓ UTASÍTÁSOK
... ...
Begin Begin
Write(‘Hello!’); Writeln(‘hello!’);
End. End.
Write(a); Write(‘a’);
End; End;
II.
SZÁMOK ÉS MŰVELETEK
a./ (10+5)*20-100/4=..........
b./ 10+5*20-100/4=..........
c./ 10+5*(20-100)/4=..........
III.
10
b:=25; b:=40;
p:=a*b; p:=a*b;
write(‘p= ‘,p); write(‘p= ‘,p);
end. end.
11
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 !
13
IV.
14
15
ISMÉTLÉSEK SZERVEZÉSE
V.
A SZÁMLÁLÓS CIKLUS
Forrás: http://www.doksi.hu
16
17
VI.
AZ ELÖLTESZTELŐ CIKLUS
18
VII.
A HÁTULTESZTELŐ CIKLUS
19
ELÁGAZÁSOK
VIII.
A KÉTIRÁNYÚ ELÁGAZÁS
20
IX.
A TÖBBIRÁNYÚ ELÁGAZÁS
Forrás: http://www.doksi.hu
21
X.
Forrás: http://www.doksi.hu
22
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.
24
Név Telefonszám
XXXX YYYY
25
XII.
26
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
28
29
XIII.
Valahogy így:
Forrás: http://www.doksi.hu
30
PROGRAMOZÁSI TÉTELEK
31
XIV.
32
XV.
AZ ELDÖNTÉS TÉTELE
33
34
XVI.
A KIVÁLASZTÁS TÉTELE
35
XVII.
A KERESÉS TÉTELE
36
Eljárás vége
XVIII.
A MEGSZÁMOLÁS TÉTELE
37
38
XIX.
39
40
XX.
A KIVÁLOGATÁS TÉTELE
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
XXI.
AZ UNIÓKÉPZÉS TÉTELE
42
Ciklus vége
Ha I > N akkor K:= K+1 : UNIO(K):= Y(J)
Ciklus vége
Eljárás vége
43
XXII.
A METSZETKÉPZÉS TÉTELE
44
RENDEZÉSEK
XXIII.
45
Ciklus vége
Ciklus vége
Eljárás vége
XXIV.
46
47
XXV.
A BUBORÉKOS RENDEZÉS
48
XXVI.
A BEILLESZTÉSES RENDEZÉS
49
XXVII.
A SZÉTVÁLOGATÁS
50
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 !
52
53
XXIX.
VEGYES FELADATOK
54
55
56
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;
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 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;
68
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;
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;
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;
71
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 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;
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 Zar;
Begin
Closegraph;
Restorecrtmode;
End;
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;
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 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 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;
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;
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 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 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;
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 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;
86
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;
87
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
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;
89
o:=o+1;
if o=m then
Begin
s:=s+1;
o:=1;
End;
End;
van:=(s<=n);
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
Begin
Beolvas(hossz,szoveg);
Szamol(hossz,szoveg,db);
Kiir(db);
End.
Program prog_18_8;
Uses crt;
var db:integer;
91
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;
92
max:=7;
i:=14;
Repeat
if x[max]<x[i] then max:=i; i:=i+7;
Until i>n
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;
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;
94
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;
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;
97
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 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;
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;
101
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 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
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;
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
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;
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;
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 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;
Begin
Beolvasas(n,szo);
Forrás: http://www.doksi.hu
113
E_recserel(n,szo);
Kiir(n,szo);
End.
Felhasznált irodalom
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