EAF II Feladat dokumentáció IV. feladat 4. házi feladathoz

Hasonló dokumentumok
Objektum elvű alkalmazások fejlesztése Programozási tételek újrafelhasználása 1.

Objektum elvű alkalmazások fejlesztése Programozási tételek újrafelhasználása 1. Készítette: Gregorics Tibor

Programozási tételek újrafelhasználása

OAF Gregorics Tibor: Minta dokumentáció a 4. házi feladathoz 1. Feladat. Megoldás

Programozás(A szakirány) II. beadandó feladat Farkas András HP6S15 1. csoport Veszprémi Anna / Hudoba Péter

Programozás Minta programterv a 2. házi feladathoz 1.

117. AA Megoldó Alfréd AA 117.

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.

Programozási feladatok megoldása visszavezetéssel egy osztály-sablon könyvtárra támaszkodva 1

Szekvenciális inputfájl felsorolása

1000.AA Megoldo Alfréd 1000.A

Torna. A torna.csv UTF-8 kódolású állományban soronként egy versenyző eredményeit tároljuk. Az adatokat pontosvessző választja el egymástól.

1.AA MEGOLDÓ BERCI AA 1.

500. AA Megoldó Alfréd AA 500.

infix kifejezés a+b ab+ +ab postfix kifejezés prefix kifejezés a+b ab+ +ab a+b ab+ +ab Készítette: Szabóné Nacsa Rozália

BME MOGI Gépészeti informatika 4.

Objektum elvű alkalmazások fejlesztése Kifejezés lengyel formára hozása és kiértékelése

Fejlett programozási nyelvek C++ Sablonok és adatfolyamok

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

Programozási Nyelvek: C++

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

3. Osztályok II. Programozás II

STL gyakorlat C++ Izsó Tamás május 9. Izsó Tamás STL gyakorlat/ 1

Informatika terméktervezőknek

500.AA Megoldo Arisztid 500.A

Tervminták II. (Híd, Bejáró, Gyártófüggvény) Halmaz és bejárása Osztály-sablonok

Szoftvertechnolo gia gyakorlat

128. AA Megoldó Alfréd AA 128.

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

503.AA Megoldo Arisztid 503.A

Globális operátor overloading

Objektum elvű alkalmazások fejlesztése. Verem típus osztály-sablonja

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

osztályok kapcsolata Származtatatás C++ Izsó Tamás március 19. Izsó Tamás Származtatatás/ 1

hiányzott szeptemberben vagy A tanuló nem hiányzott szeptemberben szöveget

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

500.AJ Megoldó Magyar Magdolna 500.J

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

Programozási tételek újrafelhasználható osztálysablon könyvtára

List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error

500. DD Megoldó Alfréd DD 500.

és az instanceof operátor

Bevezetés a programozásba 2

A feladat lényege egy felhasználói típusnak a zsák típusnak a megvalósítása.

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

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

C++ Standard Template Library (STL)

OOP: Java 1.Gy: Java alapok

C++ programozási nyelv Konstruktorok-destruktorok

1. Alapok. Programozás II

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

.AA Megoldó Alfréd AA.

.Net adatstruktúrák. Készítette: Major Péter

A képernyőre írást igénylő részfeladatok eredményének megjelenítése előtt írja a képernyőre a feladat sorszámát (például: 3. feladat:)!

Elemi alkalmazások fejlesztése II. 2. Beadandó feladat Juhász Ádám

Objektumok inicializálása

mul : S T N 1 ha t S mul(s, t) := 0 egyébként Keresés Ezt az eljárást a publikus m veletek lenti megvalósításánál használjuk.

Osztály és objektum fogalma

Programozási nyelvek II.: JAVA, 4. gyakorlat

0. Megoldó Manó 0. Programozás alapjai 2. (inf.) pót zárthelyi gyak. hiányzás: 2 n/kzhp: n/11,5. ABCDEF IB.028/2.

500.AA Megoldó Kulcsár 500.A

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

OOP: Java 8.Gy: Abstract osztályok, interfészek

Bevezetés a programozásba előadás: Öröklődés

Elemi alkalmazások fejlesztése III.

Programozási nyelvek II.: JAVA, 4. gyakorlat

Java II. I A Java programozási nyelv alapelemei

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

Programozás C++ -ban 2007/4

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

Bevezetés a Programozásba II 8. előadás. Polimorfizmus Giachetta Roberto

Kalapácsvetés 2016 szöveges

500. CC Megoldó Alfréd CC 500.

C++ programozási nyelv

INFORMATIKAI ALAPISMERETEK

Programozás II. ATM példa Dr. Iványi Péter

feladat pont min elért

Programozás C++ -ban

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

C++ Gyakorlat jegyzet 8. óra

Elemi Alkalmazások Fejlesztése II.

Generikus Típusok, Kollekciók

Fejlett programozási nyelvek C++ Iterátorok

Az alábbi példában a Foo f(5); konstruktor hívása után mennyi lesz f.b értéke? struct Foo { int a, b; Foo(int c):a(c*2),b(c*3) {} };

Java Programozás 1. Gy: Java alapok. Ismétlés ++

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

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

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

Eseménykezelés. Aszinkron kommunikáció

Programozás Minta programterv a 1. házi feladathoz 1.

Gelle Kitti Algoritmusok és adatszerkezetek gyakorlat - 07 Hasítótáblák

4. Gy: JAVA osztályok

Tervminták a valósidejű gyakorlatban

228. AA Default Konstruktor AA 228.

// keressük meg a legnagyobb faktoriális értéket, ami kisebb, // mint százmillió

PROGRAMOZÁSI NYELVEK - CPP. GYAKORLAT JEGYZET

Programozás II gyakorlat. 8. Operátor túlterhelés

1. Öröklés Rétegelés Nyilvános öröklés - isa reláció Korlátozó öröklődés - has-a reláció

Objektumorientált programozás C# nyelven III.

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

Átírás:

EAF II Feladat dokumentáció IV. feladat 4. házi feladathoz Oldja meg az alábbi feladatokat úgy, hogy a programja csak EGYETLEN HELYEN TARTALMAZHAT CIKLUST az általános összegzést megvalósító osztály-sablon (lásd alább) Do() metódusában, amelyik az előadáson bemutatott iterated.hpp állományra támaszkodik. Rávezetı feladat: Egy szöveges állományban szavakat helyeztünk el szóközökkel, sorvége jelekkel elválasztva. Hány a betővel kezdıdı szó található benne? A feladat: Egy szöveges állományban szavakat helyeztünk el szóközökkel, sorvége jelekkel elválasztva, ábécé szerint rendezve. Írjuk ki a szavakat soronként egy szöveges állományba úgy, hogy minden azonos kezdıbetőjő szócsoport után kiírjuk, hogy hány szó szerepelt az adott csoportban. Kettő osztályt kell megvalósítani a 2 feladathoz (bár abban nem vagyok biztos, hogy az első az feladat, vagy csak segítség..) Tehát az első részhez az osztály megvalósítása: Az osztály létrehozásakor egy szekvenciális fájlt nyitunk meg, amiből a felolvasás történik. A Summation osztály két metódusát felülbírálva: - Cond-ba beleteszem a feltétel lényegét, hogy csak az a kezdetű szavakat nézzük. - Add-ba, ha találtunk ilyet, akkor növelem a számot class CountFirstA : public Summation<std::string, int> private: int db; CountFirstA(const std::string& s): db(0) in = new SeqInFile<std::string>(s); ~CountFirstA() delete in; bool Cond(const std::string &e) return e[0] == 'a'; void Add(const std::string &e) ++db; out = &db; ;

class WordsCounter : public Summation<WordCount, SeqOutFile<WordCount>> private: char prev_char; WordsCounter(const std::string& s) : prev_char(0) in = new AbsSeqInFile(s); out = new SeqOutFile<WordCount>("ujinputalpha.txt"); ~WordsCounter() delete out; delete in; void Add(const WordCount &e) out->write(e); ; A Második osztály: - Paraméterként kapja a felolvasandó fájlt, amiből majd az Absztraktfelolvasát létrehozzuk. - A kiírásra a SeqOutFile-t használjuk, ami WordCount-al van paraméterezve. WordCount struktúrában meg kell valósítani a felolvasást és a kiíratást. struct WordCount WordCount() : count(0) ; std::string word; int count; friend std::ifstream& operator >> (std::ifstream& f, WordCount& df); friend std::ofstream& operator << (std::ofstream& f, const WordCount& df); ; std::ofstream& operator << (std::ofstream& f, const WordCount& df) f << df.word << ": " << df.count << std::endl; return f; std::ifstream& operator >> (std::ifstream& f, WordCount& df) f >> df.word; return f;

class AbsSeqInFile : public Iterated<WordCount> SeqInFile<WordCount>* f; WordCount dx; bool eof_x; AbsSeqInFile(const std::string& s) f = new SeqInFile<WordCount>(s); f->first(); ~AbsSeqInFile() delete f; void Next(); bool End() const return eof_x; WordCount Current()const return dx; ; void AbsSeqInFile::Next() bool l = true; dx.word = ""; if (!(eof_x = f->end())) while(l &&!f->end()) std::string c = f->current().word; if( "" == dx.word ) dx.count = 0; dx.word = f->current().word[0]; if(f->current().word[0]!= dx.word[0]) l = false; if( f->current().word[0] == dx.word[0] ) ++dx.count; f->next(); AbsSeqInFile ban történik meg a lényegi rész a második feladat feldolgozásához. Lényegiben, elsıként a Summation osztály Do metódusa fogja kiváltani. Ott egy for ciklusban van. template <class, class Outcome> void Summation<, Outcome>::Do() e; for(in->first();!in->end(); in->next()) if( Cond(e = in->current()) ) Add(e);

AbsSeqInFile::Next-ben feltöltöm a WordCount-er, amit majd a Summation::Doban visszatérve, a Cond(true) ként az Add-ba kerül, az Add-ba a kiírás van megvalósítva. Summation osztály fejléce: template <class, class Outcome> class Summation // feldolgozandó iterált objektum mutatója: Iterated<> *in; // az eredmény objektum mutatója: Outcome *out; virtual void Add(const & e) = 0; virtual bool Cond(const & e) return true; virtual ~Summation() void Do(); Outcome ScalarResult() return *out; ;

Osztály diagramm: Iterated +Write() +Current() : SeqInFile #ifstream # +Current() : SeqOutFile -ofstream +Write() 1 AbsSeqInFile #SeqInFile<WordCount>* #WordCount +Current() 1 * * CountFirstA WordsCounter +Cond() Summatio +Cond() +Do() +ScalarResult()