Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 15. Széchenyi István Egyetem, Gy r

Hasonló dokumentumok
Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós április 4. Széchenyi István Egyetem, Gy r

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés

Járműfedélzeti rendszerek II. 4. előadás Dr. Bécsi Tamás

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r

Programozás I gyakorlat

Programozás BMEKOKAA146. Dr. Bécsi Tamás 5. előadás

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r

11. gyakorlat Sturktúrák használata. 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi.

10. gyakorlat Struktúrák, uniók, típusdefiníciók

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós szeptember 27. Széchenyi István Egyetem, Gy r

Programozás I gyakorlat

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r

Apple Swift kurzus 3. gyakorlat

A C programozási nyelv III. Pointerek és tömbök.

Occam 1. Készítette: Szabó Éva

5. Gyakorlat. struct diak {

C# osztálydeníció. Krizsán Zoltán 1. .net C# technológiák tananyag objektum orientált programozás tananyag

A C programozási nyelv III. Pointerek és tömbök.

BASH script programozás II. Vezérlési szerkezetek

A C programozási nyelv IV. Deklaráció és definíció

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Programozás C és C++ -ban

Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r

Rekord adattípus. Egymásba ágyazott rekordok. With utasítás. Változó rekord. Rekord konstans

Bevezetés a programozásba. 9. Előadás: Rekordok

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

C++ programozási nyelv Konstruktorok-destruktorok

Ha meg akarod tudni, hogy az egyes típusok milyen méretűek a te rendszereden, a következő program megmutatja:

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

Komputeralgebra Rendszerek

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

7. fejezet: Mutatók és tömbök

Programozás II. 2. Dr. Iványi Péter

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

Adatszerkezetek és algoritmusok

Típusok és konstansok

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

Bevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok

Programozas 1. Strukturak, mutatok

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

Programozás I. zárthelyi dolgozat

Programozás II. 4. Dr. Iványi Péter

A C programozási nyelv II. Utasítások. A függvény.

C programozási nyelv Pointerek, tömbök, pointer aritmetika

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 31. Széchenyi István Egyetem, Gy r

tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is

A C# programozási nyelv alapjai

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

OOP #14 (referencia-elv)

Nagy HF u tmutato 2011/2012 II. fe le v

Bevezetés a programozásba I.

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Programozás C++ -ban

Programozás I gyakorlat

A C# PROGRAMOZÁSI NYELV

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!

Java programozási nyelv

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Mutatók. Dr. Bécsi Tamás 7. Előadás

Pénzügyi algoritmusok

Felhasználó által definiált adattípus

2019, Funkcionális programozás. 5. el adás. MÁRTON Gyöngyvér

Algoritmizálás + kódolás C++ nyelven és Pascalban

A programozás alapjai 1 Rekurzió

Objektumok inicializálása

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Bevezetés, a C++ osztályok. Pere László

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Bevezetés a C++ programozási nyelvbe

Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás

Java II. I A Java programozási nyelv alapelemei

Objektumorientált Programozás VI.

Bevezetés a programozásba I.

Objektumorientált programozás C# nyelven

C programozási nyelv

Kifejezések. A programozás alapjai előadás. Operátorok. Kifejezések. Operátorok precedenciája. Operátorok precedenciája

Programozás C++ -ban

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

GYAKORLATIAS JAVA MINTA

Adatbázisok. 9. gyakorlat SQL: SELECT október október 26. Adatbázisok 1 / 14

Programozás alapjai C nyelv 10. gyakorlat. Standard függvények. Union

Óbudai Egyetem. C programozási nyelv

Algoritmizálás és adatmodellezés tanítása 3. előadás

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Programozás I gyakorlat

Programozás 5. Dr. Iványi Péter

A verem (stack) A verem egy olyan struktúra, aminek a tetejéről kivehetünk egy (vagy sorban több) elemet. A verem felhasználása

Mintavételes szabályozás mikrovezérlő segítségével

Járműfedélzeti rendszerek II. 3. előadás Dr. Bécsi Tamás

Adatszerkezetek I. 1. előadás

SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS

3. Határozza meg és írja ki a minta szerint, hogy a forrásállományban hány kémiai elem felfedezési adatai

Programozás I gyakorlat. 10. Stringek, mutatók

Algoritmizálás és adatmodellezés 2. előadás

Informatika terméktervezőknek

Átírás:

Programozás alapjai (GKxB_INTM023) Széchenyi István Egyetem, Gy r 2018. október 15.

Leghosszabb 3D vektorok kikeresése 1 #i n c l u d e <s t d i o. h> 2 #i n c l u d e <math. h> 3 #d e f i n e MAX 1000 4 5 i n t main ( v o i d ) { 6 d o u b l e x [MAX], y [MAX], z [MAX], h o s s z [MAX ] ; 7 i n t db ; 8 d o u b l e maxhossz = 0. ; 9 p r i n t f ( " L e g h o s s z a b b v e k t o r o k k i k e r e s e s e \n" 10 " V e k t o r o k szama : " ) ; 11 s c a n f ( "%d", &db ) ; 12 f o r ( i n t i =0; i <db ; i ++) { 13 p r i n t f ( "%d. v e k t o r \n\tx k o o r d i n a t a j a : ", i +1); 14 s c a n f ( "%l f ", &x [ i ] ) ; 15 p r i n t f ( "\ty k o o r d i n a t a j a : " ) ; s c a n f ( "%l f ", &y [ i ] ) ; 16 p r i n t f ( "\ tz k o o r d i n a t a j a : " ) ; s c a n f ( "%l f ", &z [ i ] ) ; 17 h o s s z [ i ] = s q r t ( x [ i ] x [ i ] + y [ i ] y [ i ] + z [ i ] z [ i ] ) ; 18 i f ( h o s s z [ i ] > maxhossz ) maxhossz = h o s s z [ i ] ; 19 }

Leghosszabb 3D vektorok kikeresése 20 p r i n t f ( " Legnagyobb h o s s z : %f " 21 ", az i l y e n h o s s z u v e k t o r o k : \ n", maxhossz ) ; 22 f o r ( i n t i =0; i <db ; i ++) { 23 i f ( h o s s z [ i ] == maxhossz ) { 24 p r i n t f ( "%f %f %f \n", x [ i ], y [ i ], z [ i ] ) ; 25 } 26 } 27 r e t u r n 0 ; 28 } Probléma: egy vektor X, Y és Z koordinátái szorosabb logikai kapcsolatban vannak, mint a különféle vektorok pl. X koordinátái a tömbök viszont nem ezt tükrözik, s t

Struktúrák F jellemz k: logikailag összetartozó változók csoportjának egyszer bb kezelése összetett, felhasználói adattípus hozható létre egy vagy több, elnevezett tag együttese, önálló azonosítóval lehet ségek: hozzárendelés (másolás) átadhatók függvénynek paraméterként lehet függvény visszatérési értéke nem lehetséges: összehasonlítás (esetleg tagonként) struktúratag szinte bármib l lehet

Leghosszabb 3D vektorok kikeresése 1 #i n c l u d e <s t d i o. h> 2 #i n c l u d e <math. h> 3 #d e f i n e MAX 1000 4 5 s t r u c t v e k t o r { 6 d o u b l e x, y, z ; 7 d o u b l e h o s s z ; 8 } ; 9 10 i n t main ( v o i d ) { 11 s t r u c t v e k t o r v t [MAX ] ; 12 i n t db ; 13 d o u b l e maxhossz = 0. ; 14 p r i n t f ( " L e g h o s s z a b b v e k t o r o k k i k e r e s e s e \n" 15 " V e k t o r o k szama : " ) ; 16 s c a n f ( "%d", &db ) ;

Leghosszabb 3D vektorok kikeresése 17 f o r ( i n t i =0; i <db ; i ++) { 18 p r i n t f ( "%d. v e k t o r \n\tx k o o r d i n a t a j a : ", i +1); 19 s c a n f ( "%l f ", &v t [ i ]. x ) ; 20 p r i n t f ( "\ty k o o r d i n a t a j a : " ) ; s c a n f ( "%l f ", &v t [ i ]. y ) ; 21 p r i n t f ( "\ tz k o o r d i n a t a j a : " ) ; s c a n f ( "%l f ", &v t [ i ]. z ) ; 22 v t [ i ]. h o s s z = s q r t ( 23 v t [ i ]. x v t [ i ]. x + v t [ i ]. y v t [ i ]. y + v t [ i ]. z v t [ i ]. z ) ; 24 i f ( v t [ i ]. h o s s z > maxhossz ) maxhossz = v t [ i ]. h o s s z ; 25 } 26 p r i n t f ( " Legnagyobb h o s s z : %f " 27 ", az i l y e n h o s s z u v e k t o r o k : \ n", maxhossz ) ; 28 f o r ( i n t i =0; i <db ; i ++) { 29 i f ( v t [ i ]. h o s s z == maxhossz ) { 30 p r i n t f ( "%f %f %f \n", v t [ i ]. x, v t [ i ]. y, v t [ i ]. z ) ; 31 } 32 } 33 r e t u r n 0 ; 34 }

Struktúradeklaráció Általános alak: struct <struktúracímke> <struktúratag-deklarációlista> <azonosítólista>; Struktúradeklaráció példa struct hallgato { // Struktúra deklarálása char nev[64]; int pontszam; }; struct hallgato mari, hg[1000]; // Változók definiálása hallgato a struktúra címkéje, a típust azonosítja (a struct kulcsszót nem lehet elhagyni): struct hallgato mari; Tagok: nev, pontszam (egyedi azonosítók a struktúrán belül) Változók: mari struct hallgato hg[1000]; egy 1000 elem struktúratömb

Struktúradeklaráció Hol deklaráljuk a struktúrát? a típus els felhasználása el tt jellemz en a forrás elején, minden függvényen kívül Minden deklaráció egyedi típust hoz létre, melyek nem azonosak akkor sem, ha szerkezetük megegyezik Típusok különböz sége struct hallgato1 { char nev[64]; int pontszam; }; struct hallgato2 { char nev[64]; int pontszam; }; struct hallgato1 mari; struct hallgato2 gizi; gizi = mari; // error: incompatible types when assigning to type // 'struct hallgato2' from type 'struct hallgato1' Hol deniáljuk a struktúrát? A lehet legsz kebb hatáskörben

Struktúratag deklaráció Struktúratag lehet pl. korábban deniált szerkezet struktúra beágyazott struktúra, akár címke nélkül is tömb (függvényt címz mutató) A tag azonosítójának csak a struktúrán belül kell egyedinek lennie A deklaráció végén lév pontosvessz nem hagyható el! Helyes tagdeklarációk struct s { int i; }; struct tag_dekl { struct s s1; struct { int i; long l; } b; int szamok[30]; };

Struktúratag deklaráció Struktúratag típusa nem lehet pl. void saját maga függvény Hibás tagdeklarációk struct nem_teljes; struct tag_hiba { void v; /* error: variable or field `v' declared void */ struct nem_teljes s; /* error: field `s' has incomplete type */ struct tag_hiba th; /* error: field `th' has incomplete type */ }; Megjegyzés: nem teljes tömb (=mérete ismeretlen) bizonyos feltételekkel lehet tag C99 óta.

Struktúratagok elérése Tagelérés operátor / szelekciós operátor / tagszelektor struktúra.tag Magas prioritású operátor, balról jobbra köt Struktúratagok elérése, értékadások struct hallgato { char nev[64]; char neptun[7]; struct { int ev, ho, nap; } szuldatum; }; /*... */ struct hallgato gizi; strcpy(gizi.nev, "Kovacs Gizella"); strcpy(gizi.neptun, "A1B2C3"); gizi.szuldatum.ev = 1990; gizi.szuldatum.ho = 1; gizi.szuldatum.nap = 2;

Struktúrák inicializálása Az inicializáció során a tagok a deklarációbeli sorrendjükben veszik fel az inicializátorlista elemeinek értékét. Az inicializátor azonos típusú struktúra is lehet. Struktúra inicializálása struct hallgato { char nev[64], neptun[7]; int ev, ho, nap; }; struct hallgato gizi = { "Kovács Gizella", "A1B2C3", 1990, 4, 23 }; struct hallgato mari = gizi;

Struktúrák inicializálása Struktúrába ágyazott tagok inicializálása: beágyazott inicializátorokkal Beágyazott struktúra és tömb inicializálása struct datum { int ev, ho, nap; }; struct hallgato { char nev[64], neptun[7]; struct datum szuldatum, diplomaszerzes; }; struct hallgato gizi = { "Kovács Gizella", "A1B2C3", {1990, 4, 23}, {2015, 6, 3} }; Inicializátorlista elemszáma nem haladhatja meg a tagok számát! Ha viszont kevesebb elem nullázás Aggregátumok esetén a { } elhagyhatók, ill. valamennyi inicializátor köré is helyezhet, de célszer követni az aggregátum szerkezetét

Struktúrák inicializálása Jelöl k (designator) használata: közvetlen hivatkozás a tagokra (C99) Beágyazott struktúra és tömb inicializálása jelöl kkel struct hg { char nev[64], neptun[7]; struct { int ev, ho, nap; } szuldatum; } gizi = {.nev="kovács Gizella",.neptun="A1B2C3", {1990, 4, 23} }; Jelöl k hiányában az inicializáció az utoljára kijelölt tag utánival folytatódik, jelöl k sorrendje tetsz leges

Dátumok kezelése 5 s t r u c t datum { 6 i n t ev, ho, nap ; 7 } ; 8 9 b o o l s z o k o ( i n t ev ) { // s z o k o e v m e g a l l a p i t a s 10 r e t u r n ( ev%4==0 and ev %100!=0) o r ev %400==0; 11 } 12 13 i n t napok ( i n t ev, i n t ho ) { // honap n a p j a i n a k szamat 14 i n t nt [ 1 2 ] = // a d j a v i s s z a a d o t t evben 15 { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } ; 16 i f ( ho == 2) { 17 i f ( s z o k o ( ev ) ) r e t u r n 2 9 ; e l s e r e t u r n 2 8 ; 18 } e l s e { 19 r e t u r n nt [ ho 1 ] ; 20 } 21 }

Dátumok kezelése 23 b o o l e l l e n o r i z ( s t r u c t datum d ) { // t a r t a l m i e l l e n o r z e s 24 i f ( d. ho<1 o r d. ho >12) r e t u r n f a l s e ; 25 i n t n = napok ( d. ev, d. ho ) ; 26 i f ( d. nap<1 o r d. nap>n ) r e t u r n f a l s e ; 27 r e t u r n t r u e ; 28 } 29 30 i n t evnapja ( s t r u c t datum d ) { // ev n a p j a n a k m e g h a t a r o z a s a 31 i n t n = d. nap ; // ev, ho, n a p b o l 32 f o r ( i n t h=1; h<d. ho ; h++) { 33 n += napok ( d. ev, h ) ; 34 } 35 r e t u r n n ; 36 }

Dátumok kezelése 38 i n t b a z i s ( s t r u c t datum d ) { // 0 0 0 0. 0 1. 0 1 o t a e l t e l t 39 i n t b = 0 ; // napok szama 40 f o r ( i n t e =0; e<d. ev ; e++) { 41 b += 365 + s z o k o ( e ) ; 42 } 43 f o r ( i n t h=1; h<d. ho ; h++) { 44 b += napok ( d. ev, h ) ; 45 } 46 b += d. nap ; 47 r e t u r n b ; 48 } 49 50 i n t k u l o n b s e g ( s t r u c t datum t o l, s t r u c t datum i g ) { // k e t 51 r e t u r n b a z i s ( i g ) b a z i s ( t o l ) ; // datum k u l o n b s e g e napban 52 }

Dátumok kezelése 54 // nap e v e n b e l u l i s z a m a b o l ho e s nap s z a m o l a s a 55 s t r u c t datum hoesnap ( i n t ev, i n t e v N a p j a ) { 56 s t r u c t datum d = { ev, 0, e v N a p j a } ; 57 i n t h, n ; 58 f o r ( h=1; d. nap >(n=napok ( ev, h ) ) ; h++) { 59 d. nap = n ; 60 } 61 d. ho = h ; 62 r e t u r n d ; 63 }

Dátumok kezelése 65 i n t main ( v o i d ) { 66 s t r u c t datum d = {2018, 10, 1 5 } ; 67 p r i n t f ( "A megadott datum %s. \ n" 68 "%d.%d.%d az ev %d. n a p j a. \ n", 69 ( e l l e n o r i z ( d )? " h e l y e s " : " h i b a s " ), 70 d. ev, d. ho, d. nap, evnapja ( d ) ) ; 71 s t r u c t datum k a r = {2018, 12, 2 4 } ; 72 p r i n t f ( "Hany nap van k a r a c s o n y i g? %d\n", 73 k u l o n b s e g ( d, k a r ) ) ; 74 i n t evnapja = 3 0 0 ; 75 d = hoesnap ( d. ev, evnapja ) ; 76 p r i n t f ( "%d %d. n a p j a : %d.%d\n", 77 d. ev, evnapja, d. ho, d. nap ) ; 78 r e t u r n 0 ; 79 }

Dátumok kezelése Kimenet A megadott datum helyes. 2018.10.15 az ev 288. napja. Hany nap van karacsonyig? 70 2018 300. napja: 10.27

Téglalapok rajzolása Kimenet (1/2) Rajzprogram - adja meg a téglalapok adatait! 1. teglalap BF sarok X: [0, 78] (negativra vege) 1 1. teglalap BF sarok Y[0, 23] 1 1. teglalap JA sarok X[2, 79] 11 1. teglalap JA sarok Y[2, 24] 11 1. teglalap rajzoló karaktere: 2. teglalap BF sarok X: [0, 78] (negativra vege) 6 2. teglalap BF sarok Y[0, 23] 6 2. teglalap JA sarok X[7, 79] 16 2. teglalap JA sarok Y[7, 24] 16 2. teglalap rajzoló karaktere: + 3. teglalap BF sarok X: [0, 78] (negativra vege) 15 3. teglalap BF sarok Y[0, 23] 2 3. teglalap JA sarok X[16, 79] 30 3. teglalap JA sarok Y[3, 24] 7 3. teglalap rajzoló karaktere: - 4. teglalap BF sarok X: [0, 78] (negativra vege) -1...

Téglalapok rajzolása Kimenet (2/2)... ---------------- ---------------- ---------------- ---------------- +++++++++---------------- +++++++++---------------- +++++++++++ +++++++++++ +++++++++++ +++++++++++ +++++++++++ +++++++++++ +++++++++++ +++++++++++ +++++++++++...

Téglalapok rajzolása 1 #i n c l u d e <s t d i o. h> 2 #i n c l u d e <s t d b o o l. h> 3 #i n c l u d e <i s o 6 4 6. h> 4 #d e f i n e MAXALAK 128 5 #d e f i n e MINX 0 6 #d e f i n e MAXX 79 7 #d e f i n e MINY 0 8 #d e f i n e MAXY 24 9 10 s t r u c t k o o r d i n a t a { 11 i n t x, y ; 12 } ; 13 s t r u c t t e g l a l a p { 14 s t r u c t k o o r d i n a t a bf, j a ; 15 c h a r c ; 16 } ;

Téglalapok rajzolása 48 i n t main ( v o i d ) { 49 s t r u c t t e g l a l a p t t [MAXALAK ] ; 50 i n t db=0, k ; b o o l f o l y t a t=t r u e ; 51 p r i n t f ( " Rajzprogram a d j a meg a t é g l a l a p o k a d a t a i t! \ n" ) ; 52 w h i l e ( db<maxalak and f o l y t a t ) { 53 do { 54 p r i n t f ( "%d. t e g l a l a p BF s a r o k X : [%d, %d ] ( n e g a t i v r a v e g e ) ", 55 db+1, MINX, MAXX 1); 56 s c a n f ( "%d", &k ) ; 57 f o l y t a t = k>=0; 58 } w h i l e ( f o l y t a t && ( k<minx o r k>maxx 1)); 59 i f ( f o l y t a t ) { 60 t t [ db ]. b f. x = k ; 61 t t [ db ]. b f. y = b e k e r ( db+1, "BF s a r o k Y", MINY, MAXY 1); 62 t t [ db ]. j a. x = b e k e r ( db+1, "JA s a r o k X", t t [ db ]. b f. x +1, MAXX) ; 63 t t [ db ]. j a. y = b e k e r ( db+1, "JA s a r o k Y", t t [ db ]. b f. y +1, MAXY) ; 64 p r i n t f ( "%d. t e g l a l a p r a j z o l ó k a r a k t e r e : ", db +1); 65 s c a n f ( " %c ", &t t [ db ]. c ) ; 66 db++; 67 } 68 } 69 r a j z o l ( t t, db ) ; 70 r e t u r n 0 ; 71 }

Téglalapok rajzolása 38 i n t b e k e r ( i n t db, char s [ ], i n t min, i n t max ) { 39 i n t k ; 40 do { 41 p r i n t f ( "%d. t e g l a l a p %s [%d, %d ] ", 42 db, s, min, max ) ; 43 s c a n f ( "%d", &k ) ; 44 } w h i l e ( k<min o r k>max ) ; 45 r e t u r n k ; 46 }

Téglalapok rajzolása 18 b o o l t a k a r j a ( s t r u c t t e g l a l a p t, i n t s, i n t o ) { 19 r e t u r n ( t. b f. x<=o and t. j a. x>=o ) and 20 ( t. b f. y<=s and t. j a. y>=s ) ; 21 } 22 23 v o i d r a j z o l ( s t r u c t t e g l a l a p t t [MAXALAK], i n t db ) { 24 f o r ( i n t s=miny ; s<=maxy; s++) { 25 f o r ( i n t o=minx ; o<=maxx; o++) { 26 b o o l t a k a r a s b a n = f a l s e ; 27 f o r ( i n t t=db 1; t>=0 and not t a k a r a s b a n ; t ) { 28 i f ( t a k a r j a ( t t [ t ], s, o ) ) { 29 p r i n t f ( "%c ", t t [ t ]. c ) ; t a k a r a s b a n = t r u e ; 30 } 31 } 32 i f ( not t a k a r a s b a n ) p r i n t f ( " " ) ; 33 } 34 p r i n t f ( "\n" ) ; 35 } 36 }