Programozás I gyakorlat. 5. Struktúrák



Hasonló dokumentumok
Országzászlók (2015. május 27., Sz14)

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

Információs Technológia

Információs Technológia

Töltögetés és kannibálok

Körkörös listák. fej. utolsó. utolsó. fej

Bevezetés a C++ programozásba

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

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

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

Bevezetés a C programozási nyelvbe. Az Általános Informatikai Tanszék C nyelvi kódolási szabványa

Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE

C# feladatok gyűjteménye

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.

Géptermi zh-írás forgatókönyve

INFORMATIKAI ALAPISMERETEK

INFORMATIKA javítókulcs 2016

2. Hatványozás, gyökvonás


PROGRAMOZÁS ALAPJAI (ANSI C NYELVEN)

3. Gyakorlat Ismerkedés a Java nyelvvel

Rekurzió. Horváth Gyula.

1. Írjunk programot mely beolvas két egész számot és kinyomtatja az összegüket.

117. AA Megoldó Alfréd AA 117.

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

A PROGAMOZÁS ALAPJAI 1. Függvény mint függvény paramétere. Függvény mint függvény paramétere. Függvény mint függvény paramétere

Osztály és objektum fogalma

INFORMATIKAI ALAPISMERETEK

2.3. A C nyelv utasításai

A DBM függvények használata

C# feladatgyűjtemény Kovács Emőd, Radványi Tibor, Király Roland, Hernyák Zoltán

/* Az iter függvény meghívása és a visszatérő érték átadása a gyok változóba */ gyok = iter( n, a, e ) ;

Vizuális programozás gyakorlat

Bevezetés a programozásba. 12. Előadás: 8 királynő

Programozás alapjai C nyelv 9. gyakorlat. Rekurzió. Rekurzív algoritmus

INFORMATIKAI ALAPISMERETEK

C# osztályok. Krizsán Zoltán

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

Elemi alkalmazások fejlesztése IV. Adatbázis-kezelő GUI alkalmazás készítése 3. Összetett tábla karbantartása

2015, Diszkrét matematika

Internet technológiák

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

Feladat: Hogyan tudunk létrehozni egy olyan vector nevű tömb típust, amely egy háromdimenziós térbeli vektort reprezentál?

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)

Szirmay-Kalos László. L(x, ω)=l e (x,ω)+ L(h(x,-ω),ω) f r (ω,x, ω) cos θ dω A jobb oldali radiancia:

Bevezetés a programozásba 2

Az emelt szintű. informatika érettségi. programozási feladatainak. megoldása Java nyelven. NetBeans IDE 8.1 környezetben

INFORMATIKA tétel 2019

Információs Technológia

IoT2 ThingSpeak adatgyűjtés

Típusok és konstansok

Rekurzió. Programozás alapjai C nyelv 9. gyakorlat. Rekurzív algoritmus. Rekurzív algoritmus fajtái. Példa: n! (2) Példa: n!

0.1. Mi az a standard be- és kimenet? A két mintafeladat leírása

Programozási módszertan. Dinamikus programozás: Nyomtatási feladat A leghosszabb közös részsorozat

A lista eleme. mutató rész. adat rész. Listaelem létrehozása. Node Deklarálás. Létrehozás. Az elemet nekünk kell bef zni a listába

XML adatkezelés. 11. témakör. Az XQuery nyelv alapjai. XQuery. XQuery célja egy imperatív lekérdező nyelv biztosítása. XQuery.

A programozás alapjai 1 Rekurzió

ISA szimulátor objektum-orientált modell (C++)

MS Access Feladatgyűjtemény

Bevezetés a C++ programozási nyelvbe

Mesterséges intelligencia 1 előadások

Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia

STL. Algoritmus. Iterátor. Tároló. Elsődleges komponensek: Tárolók Algoritmusok Bejárók

- $! ""./0+1 &!2" 3& &# $!!4"&"#! 5""1 -&"#! $&"8&3"2

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

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

Adatbázisok II. Jánosi-Rancz Katalin Tünde 327A

A készülék használata elõtt kérjük olvassa el figyelmesen a használati utasítást.

2018, Funkcionális programozás

I. Egydimenziós tömb elemeinek rendezése

Bevezetés a Programozásba II 11. előadás. Adatszerkezetek megvalósítása. Adatszerkezetek megvalósítása Adatszerkezetek

Információs Technológia

5. modul - Adatbázis-kezelés

Preprocesszor. Programozás alapjai C nyelv 11. gyakorlat. Makrók (2) Makrók (#define) Makrók (3) #include

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

Programozás alapjai C nyelv 11. gyakorlat. Preprocesszor. Makrók (#define)

3. Hőmérők elkészítése

Powershell 1. gyakorlat

Programozás C nyelven 5. ELŐADÁS. Sapientia EMTE

Kriptográfiai algoritmus implementációk időalapú támadása Endrődi Csilla, Csorba Kristóf BME MIT

INFORMATIKAI ALAPISMERETEK

KÖZGAZDASÁGI ALAPISMERETEK (ELMÉLETI GAZDASÁGTAN)

Általános programozási feladatok

Mintavétel a gyakorlatban. Tóth Gergely ELTE-TÁTK, Doktori iskola Statisztika tanszék

C programnyelv 1. Kedves Kollegina, Kolléga!

C programozás. { Márton Gyöngyvér, 2009 } { Sapientia, Erdélyi Magyar Tudományegyetem }

SZERVER OLDALI JAVASCRIPT. 3. hét Javascript nyelvi elemek

Megoldott feladatok. Informatika

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

INFORMATIKA tétel 2018

Matematikai alapok. Dr. Iványi Péter

5. Gyakorlat. struct diak {

Programozás. C++ osztályok. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék

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

4. Öröklődés. Programozás II

Programozás alapjai 9.Gy: Struktúra 2.

Programozás I. Metódusok C#-ban Egyszerű programozási tételek. Sergyán Szabolcs

Informatika feladatmegoldó verseny. Kiss Elemér Szakkollégium február 19. Dr. Kovács Lehel István

Érdekes informatika feladatok

Átírás:

Programozás I gyakorlat 5. Struktúrák

Bemelegítés Írj programot, amely beolvassa 5 autó adatait, majd kiírja az adatokat a képernyőre. Egy autóról a következőket tároljuk: maximális sebesség fogyasztás szállítható személyek száma 2

Első megoldás #include <stdio.h> #define N 5 int main() { int maxseb[n]; int fogyasztas[n]; int szemelyek[n]; int i; for (i = 0; i < N; i++) { scanf("%d %d %d", &maxseb[i], &fogyasztas[i], &szemelyek[i]); for (i = 0; i < N; i++) { printf("%d.: %d %d %d\n", i, maxseb[i], fogyasztas[i], szemelyek[i]); return 0; 3

Első megoldás int maxseb[n]; int fogyasztas[n]; int szemelyek[n]; int i; for (i = 0; i < N; i++) { scanf("%d %d %d", &maxseb[i], &fogyasztas[i], &szemelyek[i]); Egy autó adatait külön tömbökben tároljuk Még több adatnál még nehezebben kezelhető a kód Megoldás: Egy új adattípusban tároljuk egyetlen autó adatait 4

struct Kocsi { ; int maxseb; int fogyasztas; int szemelyek; Struktúra A memóriában a három változó (maxseb, fogyasztas, szemelyek) egymás mellé kerül, valamint logikailag is egy egységbe foglaljuk őket A kód felépítése is egyszerűbb, átláthatóbb lesz 5

struct Kocsi { int maxseb; int fogyasztas; int szemelyek; ; Struktúra A struct kulcsszó jelzi, hogy struktúrát hozunk létre 6

struct Kocsi { int maxseb; int fogyasztas; int szemelyek; ; Struktúra Ez lesz a struktúra neve 7

struct Kocsi { int maxseb; int fogyasztas; int szemelyek; ; Struktúra Ezek az adattagok alkotják a struktúrát 8

struct Kocsi { int maxseb; int fogyasztas; int szemelyek; ; Struktúra A struktúra adattagjait kötelező { -ek közé írni 9

struct Kocsi { int maxseb; int fogyasztas; int szemelyek; ; Struktúra Végül a struktúrát ;-el zárjuk 10

struct Kocsi { int maxseb; int fogyasztas; int szemelyek; ; Struktúra Ez a struktúra még nem változó! Ez csak egy leírás arról, hogy egy ilyen típusú változónak hogyan kell felépülnie, ebből létre kell hozni egy vagy több változót (ahogy a tervrajz alapján megépítik a házakat) 11

Struktúra int main() { struct Kocsi kocsi; kocsi.maxseb = 200; kocsi.fogyasztas = 10; kocsi.szemelyek = 5; scanf("%d", &kocsi.maxseb); A változó típusa: struct Kocsi 12

Struktúra int main() { struct Kocsi kocsi; kocsi.maxseb = 200; kocsi.fogyasztas = 10; kocsi.szemelyek = 5; scanf("%d", &kocsi.maxseb); A változó neve: kocsi 13

Struktúra int main() { struct Kocsi kocsi; kocsi.maxseb = 200; kocsi.fogyasztas = 10; kocsi.szemelyek = 5; scanf("%d", &kocsi.maxseb); A kocsi-n belül a maxseb adattagot használhatjuk úgy, mint a többi változót 14

int main() { Struktúra struct Kocsi kocsik[n]; int i; for (i = 0; i < N; i++) { scanf("%d %d %d", &kocsik[i].maxseb, &kocsik[i].fogyasztas, &kocsik[i].szemelyek); for (i = 0; i < N; i++) { printf("%d.: %d %d %d\n", i, kocsik[i].maxseb, kocsik[i].fogyasztas, kocsik[i].szemelyek); return 0; 15

typedef typedef struct Kocsi { int maxseb; int fogyasztas; int szemelyek; Kocsi; int main() { Kocsi kocsik[n]; struct Kocsi k; struct Kocsi helyett használhatjuk a Kocsi típusnevet is 16

Feladat Írj programot, amely beolvassa 5 autó adatait billentyűzetről (szintén fogyasztás, maximális sebesség és utasok száma), majd beolvas egy S sebességet és egy F fogyasztást. A program határozza meg, hogy a program tárol-e olyan autót, amelynek legalább S a sebessége, vagy a fogyasztása legfeljebb F. Melyik programozási tételt kell alkalmazni? 17

keresés Alkalmazzuk a lineáris keresés tételét A nem ez az az elem, amit keresek feltételt kell jól megfogalmazni: i = 0; while (i < N &&!(kocsik[i].maxseb >= s kocsik[i].fogyasztas <= f)) { i++; if (i < N) { printf("van ilyen auto, a %d.\n", i); else { printf("nincs ilyen auto\n"); 18

keresés De persze ezt a feltételt okosabban is megfogalmazhatjuk: i = 0; while (i < N && kocsik[i].maxseb < s && kocsik[i].fogyasztas > f) { i++; if (i < N) { printf("van ilyen auto, a %d.\n", i); else { printf("nincs ilyen auto\n"); 19

Feladat Bővítsd ki az előző programot úgy, hogy írja ki, mennyi az autók átlagos fogyasztása. 20

Feladat Bővítsd ki az előző programot, hogy határozza meg, melyik a leggyorsabb autó, valamint hogy melyiknek van a legnagyobb fogyasztása. 21

Feladat Az előző programot bővítsük ki úgy, hogy az autókat sebesség szerint növekvő sorrendbe rendezze! 22

Feladat Az előző rendezést fejlesszük tovább úgy, hogy továbbra is a sebesség szerint rendezzen növekvő sorrendbe, de ha több autónak a sebessége azonos, akkor az azonos sebességű járműveken belül az autók a fogyasztásuk szerint csökkenő sorrendben legyenek rendezve! 23

Gyakran ismételt kérdések Mi a hiba az alábbi programban? struct valami { int a, b; int main() { return 0; Hiányzik a ; a struktúra végéről. Ekkor a program minden, a struktúra utáni szót úgy értelmezi, hogy azok változók, amelyek struktúra típusúak. 24

Gyakran ismételt kérdések Az autós feladatban az auto nevet adtam a struktúrának, de azt nem fogadja el, miért? struct auto { int maxseb; int fogyasztas; int szemelyek; ; Az auto a C nyelv kulcsszava, a jelentését majd a függvényeknél megbeszéljük. 25