Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 31. 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

Érdekes informatika feladatok

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

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

3. el adás: Determinánsok

BME MOGI Gépészeti informatika 5.

8. gyakorlat Pointerek, dinamikus memóriakezelés

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

1. Alapok. Programozás II

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

INFORMATIKA tétel 2018

Maximum kiválasztás tömbben

AWK programozás, minták, vezérlési szerkezetek

Műveletek mátrixokkal. Kalkulus. 2018/2019 ősz

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

Algoritmusok és adatszerkezetek I. 1. előadás

Programozási nyelvek Java

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

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

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

AWK programozás Bevezetés

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

I. VEKTOROK, MÁTRIXOK

Bázistranszformáció és alkalmazásai

LINEÁRIS ALGEBRA (A, B, C) tematika (BSc) I. éves nappali programtervező informatikus hallgatóknak évi tanév I. félév

AWK programozás, minták, vezérlési szerkezetek

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

2. Milyen értéket határoz meg az alábbi algoritmus, ha A egy vektor?. (2 pont)

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

Példatár a bevezetés a Matlab programozásába tárgyhoz

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

SCILAB programcsomag segítségével

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3

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

C memóriakezelés. Mutató típusú változót egy típus és a változó neve elé írt csillag karakterrel hozhatjuk létre.

Programozás I. Gyakorlás egydimenziós tömbökkel Többdimenziós tömbök Gyakorló feladatok V 1.0 ÓE-NIK-AII,

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

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

Megjegyzés: A programnak tartalmaznia kell legalább egy felhasználói alprogramot. Példa:

Lineáris egyenletrendszerek

Ajánlott elemi feladatok az AAO tárgyhoz 41 feladat

10. gyakorlat. Pointerek Tárolási osztályok

2. előadás. Lineáris algebra numerikus módszerei. Mátrixok Mátrixműveletek Speciális mátrixok, vektorok Norma

Lineáris algebra és a rang fogalma (el adásvázlat, szeptember 29.) Maróti Miklós

5 = hiszen és az utóbbi mátrix determinánsa a középs½o oszlop szerint kifejtve: 3 7 ( 2) = (példa vége). 7 5 = 8. det 6.

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

Java II. I A Java programozási nyelv alapelemei

3. Osztályok II. Programozás II

Java II. I A Java programozási nyelv alapelemei

Dinamikus programozás vagy Oszd meg, és uralkodj!

Adatszerkezetek és algoritmusok

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

1. Jelölje meg az összes igaz állítást a következők közül!

Programozási alapismeretek 3. előadás

Matematikai statisztika 1.

4. Használati útmutatás

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

Típusok és konstansok

Lineáris algebra 2. Filip Ferdinánd december 7. siva.banki.hu/jegyzetek

VI. turnus (Kontaktnapok: szerda) Képzés időtartama: augusztus október 15.

Útmutató az EPER-ben már regisztrált szervezetek elektori jelentkezéséhez

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

Szinguláris értékek. Wettl Ferenc április 3. Wettl Ferenc Szinguláris értékek április 3. 1 / 28

Bázistranszformáció és alkalmazásai 2.

Numerikus módszerek 1.

A KroneckerCapelli-tételb l következik, hogy egy Bx = 0 homogén lineáris egyenletrendszernek

Vektorterek. Wettl Ferenc február 17. Wettl Ferenc Vektorterek február / 27

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE

Készítette: Nagy Tibor István

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

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

13. Egy január elsejei népesség-statisztika szerint a Magyarországon él k kor és nem szerinti megoszlása (ezer f re) kerekítve az alábbi volt:

6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok

3. Előadás. Megyesi László: Lineáris algebra, oldal. 3. előadás Lineáris egyenletrendszerek

Lineáris algebra gyakorlat

1. Determinánsok. Oldjuk meg az alábbi kétismeretlenes, két egyenletet tartalmaz lineáris egyenletrendszert:

Programozási nyelvek a közoktatásban alapfogalmak II. előadás

DETERMINÁNSSZÁMÍTÁS. Határozzuk meg a 1 értékét! Ez most is az egyetlen elemmel egyezik meg, tehát az értéke 1.

Gauss-Jordan módszer Legkisebb négyzetek módszere, egyenes LNM, polinom LNM, függvény. Lineáris algebra numerikus módszerei

Objektumorientált programozás C# nyelven

Programozási Nyelvek: C++

Matematikai programok

1. Olvassuk be két pont koordinátáit: (x1, y1) és (x2, y2). Határozzuk meg a két pont távolságát és nyomtassuk ki.

Programozás I gyakorlat

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

MBNK12: Permutációk (el adásvázlat, április 11.) Maróti Miklós

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Függvények. Dr. Bécsi Tamás 6. Előadás

A 2014/2015. tanévi Országos Középiskolai Tanulmányi Verseny második forduló MATEMATIKA I. KATEGÓRIA ( SZAKKÖZÉPISKOLA ) Javítási-értékelési útmutató

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

Objektumok tulajdonságai

Mátrixok, mátrixműveletek

3. Gyakorlat Ismerkedés a Java nyelvvel

INFORMATIKA javítókulcs 2016

Bevezetés a programozásba I.

Gauss elimináció, LU felbontás

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Informatika terméktervezőknek

Java V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás:

értékel függvény: rátermettségi függvény (tness function)

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás

Átírás:

Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. március 31.

Városok közötti távolság Feladat: két város nevének beolvasása, városok közötti távolság megjelenítése. Kilépés azonos városok megadása esetén. Megoldás: városok nevét vektorban tároljuk a városok közötti távolságokat pedig mátrixban, és a városok vektorbeli indexével indexeljük a mátrixot is

Városok közötti távolság Kimenet Varosok kozotti tavolsag kiszamitasa Kilepes azonos varosok megadasaval. Indulo varos: Budapest Erkezesi varos: Salakszentmotoros Nem letezo varos! Gyor Tavolsag: 121km Indulo varos: Gyor Erkezesi varos: Gyor

Városok közötti távolság 37 i n t main ( ) { 38 i n t honnan, hova ; 39 c o u t << " Varosok k o z o t t i t a v o l s a g k i s z a m i t a s a \n" 40 << " K i l e p e s a z o n o s v a r o s o k m e g a d a s a v a l. \ n" ; 41 do { 42 c o u t << " I n d u l o v a r o s : " ; honnan = v a r o s I d x ( ) ; 43 c o u t << " E r k e z e s i v a r o s : " ; hova = v a r o s I d x ( ) ; 44 i f ( honnan!= hova ) { 45 c o u t << " T a v o l s a g : " 46 << t a v ( honnan, hova ) << "km\n" ; 47 } 48 } w h i l e ( honnan!= hova ) ; 49 r e t u r n 0 ; 50 }

Városok közötti távolság 5 #d e f i n e VAROSOK 7 6 i n t v a r o s I d x ( ) { 7 s t r i n g v l i s t a [VAROSOK] = { 8 " Budapest ", " Gyor ", " Szeged ", 9 " Debrecen ", " Veszprem ", 10 " D u n a u j v a r o s ", " Eger " 11 } ; 12 s t r i n g vnev ; 13 do { 14 c i n >> vnev ; 15 f o r ( i n t i =0; i <VAROSOK; i ++) { 16 i f ( v l i s t a [ i ] == vnev ) { 17 r e t u r n i ; 18 } 19 } 20 c o u t << "Nem l e t e z o v a r o s! \ n" ; 21 } w h i l e ( t r u e ) ; 22 }

Városok közötti távolság 24 i n t t a v ( i n t honnan, i n t hova ) { 25 i n t tavmtx [VAROSOK ] [ VAROSOK] = { 26 { 0, 121, 174, 231, 115, 83, 139 }, 27 { 121, 0, 287, 377, 82, 176, 285 }, 28 { 174, 287, 0, 218, 278, 161, 298 }, 29 { 231, 377, 218, 0, 368, 320, 131 }, 30 { 115, 82, 278, 368, 0, 103, 275 }, 31 { 83, 176, 161, 320, 103, 0, 228 }, 32 { 139, 285, 298, 131, 275, 228, 0 } 33 } ; 34 r e t u r n tavmtx [ honnan ] [ hova ] ; 35 }

Háromszögmátrixok Észrevétel: a mátrixnak több, mint fele elhagyható! (m i,j = m j,i, m i,i = 0) Budapest Gy r Szeged Debrecen Veszprém Dunaújváros Eger Budapest 0 121 174 231 115 83 139 Gy r 121 0 287 377 82 176 285 Szeged 174 287 0 218 278 161 298 Debrecen 231 377 218 0 368 320 131 Veszprém 115 82 278 368 0 103 275 Dunaújváros 83 176 161 320 103 0 228 Eger 139 285 298 131 275 228 0 Probléma: a mátrixnak minden sora azonos elemszámú Megoldás: eltér elemszámú vektorokat címz vektor létrehozása (mutatótömb, alsó háromszögmátrix)

Háromszögmátrixok 24 i n t t a v ( i n t honnan, i n t hova ) { 25 i f ( honnan == hova ) r e t u r n 0 ; 26 i n t a [ ] = { 121 } ; 27 i n t b [ ] = { 174, 287 } ; 28 i n t c [ ] = { 231, 377, 218 } ; 29 i n t d [ ] = { 115, 82, 278, 368 } ; 30 i n t e [ ] = { 83, 176, 161, 320, 103 } ; 31 i n t f [ ] = { 139, 285, 298, 131, 275, 228 } ; 32 i n t tavmtx [VAROSOK 1] = { a, b, c, d, e, f } ; 33 i f ( honnan < hova ) { 34 i n t c s e r e = honnan ; 35 honnan = hova ; 36 hova = c s e r e ; 37 } 38 r e t u r n tavmtx [ honnan 1][ hova ] ; 39 }

Alternatív megoldás Észrevétel: még a vektorokat címz mutatók is megtakaríthatók, ha sorfolytonosan, egyetlen vektorban tároljuk a f átló alatti értékeket! Bp. [0] Gy r [1] Gy r [1] 121 Szeged [2] 174 287 Debrecen [3] 231 377 218 Veszprém [4] 115 82 278 368 Dunaújváros [5] 83 176 161 320 103 Eger [6] 139 285 298 131 275 228 Szeged [2] Debr. [3] Veszp. [4] Duv. [5] [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] 121 174 287 231 377 218 115 82 278... Keresett elem feletti sorokban lév adatok száma sorról sorra számtani sort alkot S n = [2a 1+(n 1)d] n, speciálisan 2 a 1 = 1, d = 1 S n = (n+1) n 2

Alternatív megoldás 24 i n t t a v ( i n t honnan, i n t hova ) { 25 i f ( honnan == hova ) r e t u r n 0 ; 26 i n t tavmtx [ ( VAROSOK (VAROSOK 1))/2] = { 27 121, 28 174, 287, 29 231, 377, 218, 30 115, 82, 278, 368, 31 83, 176, 161, 320, 103, 32 139, 285, 298, 131, 275, 228 33 } ; 34 i f ( honnan < hova ) { 35 i n t c s e r e = honnan ; 36 honnan = hova ; 37 hova = c s e r e ; 38 } 39 r e t u r n tavmtx [ ( honnan ) ( honnan 1)/2 + hova ] ; 40 }

Statikus változók Probléma: a lokális változók alapértelmezetten automatikusak (auto): élettartam a deníció pillanatától a blokk elhagyásáig tart a vektorok és tömbök újrafoglalása id igényes Megoldás: static min sít használata élettartam: program indulásától leállásig értéküket meg rzik a függvényhívások között hatókör: változatlan (deklarációtól blokk végéig) implicit módon inicializált (feltöltés zérus érték bitekkel)

Statikus változók 6 i n t v a r o s I d x ( ) { 7 s t a t i c s t r i n g v l i s t a [VAROSOK] = { 8 " Budapest ", " Gyor ", " Szeged ", 9 " Debrecen ", " Veszprem ", 10 " D u n a u j v a r o s ", " Eger " 11 } ; 12 s t r i n g vnev ; 13 do { 14 c i n >> vnev ; 15 f o r ( i n t i =0; i <VAROSOK; i ++) { 16 i f ( v l i s t a [ i ] == vnev ) { 17 r e t u r n i ; 18 } 19 } 20 c o u t << "Nem l e t e z o v a r o s! \ n" ; 21 } w h i l e ( t r u e ) ; 22 }

Dinamikus háromszögmátrixok Feladat: hozzuk létre futásid ben a vektort és a háromszögmátrixot! töltsük fel ket felhasználó által adott értékekkel! main 57 i n t main ( ) { 58 s t r i n g v a r o s L i s t a ; 59 i n t varosdb ; 60 i n t v a r o s T a v o k ; 61 i n t honnan, hova ; 62 c o u t << " Varosok k o z o t t i t a v o l s a g k i s z a m i t a s a \n" 63 << " Varosok szama : " ; 64 c i n >> varosdb ; 65 v a r o s L i s t a = v a r o s B e ( varosdb ) ; 66 c o u t << " Adja meg a v a r o s o k k o z t i t a v o k a t! \ n" ; 67 v a r o s T a v o k = tavokbe ( v a r o s L i s t a, varosdb ) ; 68 c o u t << " K i l e p e s a z o n o s v a r o s o k m e g a d a s a v a l. \ n" ;

Dinamikus háromszögmátrixok main 69 do { 70 c o u t << " I n d u l o v a r o s : " ; 71 honnan = v a r o s I d x ( v a r o s L i s t a, varosdb ) ; 72 c o u t << " E r k e z e s i v a r o s : " ; 73 hova = v a r o s I d x ( v a r o s L i s t a, varosdb ) ; 74 i f ( honnan!= hova ) { 75 c o u t << " T a v o l s a g : " 76 << t a v ( varostavok, honnan, hova ) << "km\n" ; 77 } 78 } w h i l e ( honnan!= hova ) ; 79 t a v o k F e l s z a b ( varostavok, varosdb ) ; 80 d e l e t e [ ] v a r o s L i s t a ; 81 r e t u r n 0 ; 82 }

Dinamikus háromszögmátrixok 5 s t r i n g v a r o s B e ( i n t db ) { 6 s t r i n g v l i s t a = new s t r i n g [ db ] ; 7 f o r ( i n t i =0; i <db ; i ++) { 8 c o u t << i +1 << ". v a r o s neve : " ; 9 c i n >> v l i s t a [ i ] ; 10 } 11 r e t u r n v l i s t a ; 12 }

Dinamikus háromszögmátrixok 27 i n t v a r o s I d x ( const s t r i n g v l i s t a, i n t db ) { 28 s t r i n g vnev ; 29 do { 30 c i n >> vnev ; 31 f o r ( i n t i =0; i <db ; i ++) { 32 i f ( v l i s t a [ i ] == vnev ) { 33 r e t u r n i ; 34 } 35 } 36 c o u t << "Nem l e t e z o v a r o s! \ n" ; 37 } w h i l e ( t r u e ) ; 38 }

Dinamikus háromszögmátrixok 14 i n t tavokbe ( const s t r i n g v l i s t a, i n t db ) { 15 i n t tavmtx = new i n t [ db 1 ] ; 16 f o r ( i n t honnan =1; honnan<db ; honnan++) { 17 tavmtx [ honnan 1] = new i n t [ honnan ] ; 18 f o r ( i n t hova =0; hova<honnan ; hova++) { 19 c o u t << v l i s t a [ honnan ] << " > " 20 << v l i s t a [ hova ] << " : " ; 21 c i n >> tavmtx [ honnan 1][ hova ] ; 22 } 23 } 24 r e t u r n tavmtx ; 25 }

Dinamikus háromszögmátrixok 40 i n t t a v ( i n t tavmtx, i n t honnan, i n t hova ) { 41 i f ( honnan == hova ) r e t u r n 0 ; 42 i f ( honnan < hova ) { 43 i n t c s e r e = honnan ; 44 honnan = hova ; 45 hova = c s e r e ; 46 } 47 r e t u r n tavmtx [ honnan 1][ hova ] ; 48 }

Dinamikus háromszögmátrixok 50 v o i d t a v o k F e l s z a b ( i n t tavmtx, i n t db ) { 51 f o r ( i n t i =0; i <db 1; i ++) { 52 d e l e t e [ ] tavmtx [ i ] ; 53 } 54 d e l e t e [ ] tavmtx ; 55 }

B vös négyzet (magic square) Olyan (ált. 1 és n 2 közötti) egész számokat tartalmazó négyzetes mátrix, melynek minden sorösszege, minden oszlopösszege, f átlójában és mellékátlójában lév számok összege azonos. További érdekességek Albrecht Dürer: Melencolia I (részlet) Sagrada Família, Barcelona

B vös négyzet (magic square) Páratlan rend b vös négyzetek konstrukciója 1 A mátrix els sorának középs oszlopába írjunk 1-et! 2 A mátrix minden további elemének értéke legyen eggyel nagyobb a korábbinál (2, 3,..., n 2 )! 3 A következ elemet úgy választjuk ki, hogy jobbra és felfelé lépünk egyet. Ha a meghatározott elem már korábban ki lett töltve, akkor az utoljára kitöltött elem alatti elemmel kell folytatni a m veletet. Ha az így meghatározott elem kívül esne a mátrixon, akkor a szemközti oldalon lév els elemet kell használni (pl. a legfels feletti sor esetén a legalsót). 1. lépés 1 6. lépés 1 6 3 5 4 2 2. lépés 1 2 7. lépés 1 6 3 5 7 4 2 3. lépés 1 3 2 8. lépés 8 1 6 3 5 7 4 2 4. lépés 1 3 4 2 9. lépés 8 1 6 3 5 7 4 9 2 5. lépés 1 3 5 4 2

B vös négyzet (magic square) 46 i n t main ( v o i d ) { 47 i n t meret ; 48 do { 49 c o u t << " Buvos n e g y z e t m e r e t e : " ; 50 c i n >> meret ; 51 } w h i l e ( meret%2 == 0 ) ; 52 i n t buvos = e l o a l l i t ( meret ) ; 53 nyomtat ( buvos, meret ) ; 54 f e l s z a b a d i t ( buvos, meret ) ; 55 r e t u r n 0 ; 56 }

B vös négyzet (magic square) eloallit 4 // Csak p a r a t l a n r e n d u m a t r i x s z a l mukodik! 5 i n t e l o a l l i t ( i n t meret ) { 6 // M e m o r i a f o g l a l a s 7 i n t mtx = new i n t [ meret ] ; 8 f o r ( i n t s =0; s<meret ; s++) { 9 mtx [ s ] = new i n t [ meret ] ; 10 f o r ( i n t o =0; o<meret ; o++) { 11 mtx [ s ] [ o ] = 0 ; 12 } 13 }

B vös négyzet (magic square) eloallit 14 // F e l t o l t e s 15 i n t s =0, o=meret / 2 ; 16 f o r ( i n t n=1; n<=meret meret ; n++) { 17 mtx [ s ] [ o ] = n ; 18 i n t i = s 1; i f ( i == 1) i=meret 1; 19 i n t j = o +1; i f ( j==meret ) j =0; 20 i f ( mtx [ i ] [ j ]!= 0) { 21 s++; 22 } e l s e { 23 s = i ; 24 o = j ; 25 } 26 } 27 r e t u r n mtx ; 28 }

B vös négyzet (magic square) 30 v o i d nyomtat ( i n t mtx, i n t meret ) { 31 f o r ( i n t s =0; s<meret ; s++) { 32 f o r ( i n t o =0; o<meret ; o++) { 33 c o u t << mtx [ s ] [ o ] << ' \ t ' ; 34 } 35 c o u t << e n d l ; 36 } 37 } 38 39 v o i d f e l s z a b a d i t ( i n t mtx, i n t meret ) { 40 f o r ( i n t s =0; s<meret ; s++) { 41 d e l e t e [ ] mtx [ s ] ; 42 } 43 d e l e t e [ ] mtx ; 44 }