C++ függelék. Tartalom

Hasonló dokumentumok
Programozási nyelvek I. 5. előadás (Gregorics Tibor anyagának felhasználásával)

117. AA Megoldó Alfréd AA 117.

1. Alapok. Programozás II

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

Bevezetés a programozásba. 8. Előadás: Függvények 2.

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

Maximum kiválasztás tömbben

Pénzügyi algoritmusok

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

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

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

5. Gyakorlat. struct diak {

Fejlett programozási nyelvek C++ Iterátorok

C++ Standard Template Library (STL)

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

500. CC Megoldó Alfréd CC 500.

A C# programozási nyelv alapjai

Bevezetés a programozásba. 11. Előadás: Esettanulmány

INFORMATIKAI ALAPISMERETEK

Bevezetés a programozásba 2

Pénzügyi algoritmusok

Dinamikus csatolású függvénykönyvtár készítése és használata Plugin-szerű betöltés Egyszeű C++ osztályok készítése

Bevezetés a programozásba I.

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

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

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

Programozás C nyelven (9. ELŐADÁS) Sapientia EMTE

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

500. AA Megoldó Alfréd AA 500.

Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok

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

Bevezetés a programozásba I 8. gyakorlat. C++: szövegfolyamok, intelligens tömbök

Szerző. Varga Péter ETR azonosító: VAPQAAI.ELTE cím: Név: Kurzuskód:

C# feladatok gyűjteménye

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

Pénzügyi algoritmusok

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

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

Bevezetés a programozásba I 8. gyakorlat. C++: szövegfolyamok, intelligens tömbök. Adatfolyamok Hibalehetőségek

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

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

128. AA Megoldó Alfréd AA 128.

Informatika terméktervezőknek

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

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

Alkalmazott modul: Programozás. Programozási tételek, rendezések. Programozási tételek Algoritmusok és programozási tételek

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

Algoritmusok és adatszerkezetek II.

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

Programozás C nyelven (3. ELŐADÁS) Sapientia EMTE

Programozás C nyelven (10. ELŐADÁS) Sapientia EMTE

.AA Megoldó Alfréd AA.

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.

Programozás C és C++ -ban

Alkalmazott modul: Programozás. Programozási tételek, rendezések Giachetta Roberto

Programozás I. Szöveges fájlok kezelése Felsorolástípus Objektumtömb Gyakorló feladatok

BME MOGI Gépészeti informatika 13.

C++ programozási nyelv Konstruktorok-destruktorok

Programozás C++ -ban

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

Bevezetés a programozásba I.

A C# PROGRAMOZÁSI NYELV

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

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 II. 4. Dr. Iványi Péter

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

Programozás C++ -ban 2007/4

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

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

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

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

Szerző Lővei Péter LOPSAAI.ELTE IP-08PAEG/25 Daiki Tennó

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

Programozási alapismeretek 2009/2010

A C++ Standard Template Library rövid összefoglalás

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

INFORMATIKA tétel 2018

2. Rekurzió. = 2P2(n,n) 2 < 2P2(n,n) 1

Programozás C++ -ban

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.

Bevezetés a programozásba I.

Bevezetés a programozásba Előadás: Tagfüggvények, osztály, objektum

Sejtautomaták. Szőke Kálmán Benjamin - SZKRADT.ELTE május 17.

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

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

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

Bevezetés Kiíratás Beolvasás Formázás Fájlkezelés Gyakorló feladatok C++ I/O. Bevezetés. Izsó Tamás február 20. Izsó Tamás C++ I/O / 1

Kalapácsvetés 2016 szöveges

3. Osztályok II. Programozás II

Programozas 1. Strukturak, mutatok

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

500. DD Megoldó Alfréd DD 500.

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

Feladat: Nagy számok típusa: Típusérték-halmaz: Típusműveletek: Értékadás operátor: Bitshift << operátor: Összeadás operátor:

BME MOGI Gépészeti informatika 5.

INFORMATIKAI ALAPISMERETEK

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás

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

Tartalomjegyzék. Általános Információ! 2. Felhasználói dokumentáció! 3. Feladat! 3. Környezet! 3. Használat! 3. Bemenet! 3. Példa!

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

Átírás:

Jelen dokumentumra a Creative Commons Nevezd meg! Ne add el! Ne változtasd meg! 3.0 Unported licenc feltételei érvényesek: a művet a felhasználó másolhatja, többszörözheti, továbbadhatja, amennyiben feltünteti a szerzők nevét és a mű címét, de nem módosíthatja, és kereskedelmi forgalomba se hozhatja. C++ függelék Juhász Tibor Tóth Bertalan: Programozási ismeretek kezdő versenyzőknek (Műszaki Könyvkiadó, 2017) Kiegészítés Összeállította: Tóth Bertalan Tartalom 1. Sztring feldarabolása elválasztó karakter mentén... 2 2. Olyan szövegfájl sorainak felolvasása, amelyekben előre nem ismert darabszámú adat található... 2 3. Két tömb (a és b) együttes rendezése az első tömb (a) adatai alapján... 2 4. Szövegsor darabolása a Split() függvény kétszeri hívásával... 3 5. Egydimenziós tömbök a C++ programokban... 3 6. Sztring egész szám átalakítások... 3 7. C++11 véletlenszám-generálási példa... 4 8. Hagyományos dátum-/időkezelés a C++-ban... 4 9. C/C++11 vegyes dátum- és időkezelés... 6 10. Magyar szövegek rendezése 1.... 7 11. Magyar szövegek rendezése 2.... 8 12. A Visual Basic like műveletének megfelelő C++11 program... 8 13. Rendezett halmazfelsorolást előállító program időméréssel... 8 14. Szöveges állomány teljes tartalmának sztringbe olvasása... 9 15. Struktúra változók biztonságos azonosság-vizsgálata C++-ban... 9 16. Egydimenziós tömbök átadása függvényeknek... 10 17. Egydimenziós tömbök rendezése... 11 Tóth B.: C++ függelék (Programozási ismeretek kezdő versenyzőknek) 1

1. Sztring feldarabolása elválasztó karakter mentén A szükséges fejállományok: <iostream>, <string>, <sstream>, <vector> vector<string> Split(const string &s, char elvalaszto) { vector<string> elemek; stringstream ss(s); string elem; while (getline(ss, elem, elvalaszto)) { elemek.push_back(elem); return elemek; 2. Olyan szövegfájl sorainak felolvasása, amelyekben előre nem ismert darabszámú adat található A szükséges fejállományok: <iostream>, <fstream> int adat; ifstream fajlbe("adatok.txt"); while (fajlbe >> adat) { cout << adat << " "; if (fajlbe.get()=='\n') // elértük a sor végét? fajlbe.close(); 3. Két tömb (a és b) együttes rendezése az első tömb (a) adatai alapján A szükséges fejállományok: <iostream>, <algorithm> const int n=7; int a[n] = { 1, 4, 3, 0, 2, 12, 23; int b[n] = { 10, 40, 30, 0, 20, 120, 230; for (int i=0; i<n-1; i++) { for (int j=i+1; j<n; j++) { if (a[i]>a[j]) { swap(a[i], a[j]); swap(b[i], b[j]); for (int i=0; i<n; i++) { cout<<a[i]<< " " << b[i] << endl; Tóth B.: C++ függelék (Programozási ismeretek kezdő versenyzőknek) 2

4. Szövegsor darabolása a Split() függvény kétszeri hívásával A szükséges fejállományok: <iostream>, < vector>, <cstdlib> int csapat1, csapat2, gol1, gol2; vector<string> temp, golok; string sor="1 3 2:4"; temp = Split(sor,' '); csapat1 = atoi(temp[0].c_str()); csapat2 = atoi(temp[1].c_str()); golok = Split(temp[2],':'); gol1 = atoi(golok[0].c_str()); gol2 = atoi(golok[1].c_str()); 5. Egydimenziós tömbök a C++ programokban A szükséges fejállományok: <iostream>, < vector> // Statikus egydimenziós tömb kezdőérték-adással // A tömb csak a main() függvényből való kilépéskor törlődik const int meret = 7; int a[meret] = {1, 2, 3, 5, 8, 13; a[meret-1] = a[meret-2]+a[meret-3]; // Dinamikus egydimenziós tömb, mutató felhasználásával int *p = new int[meret] {1, 2, 3, 5, 8, 13; p[meret-1] = p[meret-2]+p[meret-3]; // A dinamikus tömb törlése delete[] p; // A vector sablon felhasználásával az elemek a vektor törlése nélkül is // eltávolíthatók, maga a vektor azonban nem törölhető vector<int> v {1, 2, 3, 5, 8, 13; // 6-elemű vektor v.resize(v.size()+1); // újraméretezzük v[v.size()-1] = v[v.size()-2] + v[v.size()-3]; v.clear(); // a vektornak nincs egyetlen eleme sem 6. Sztring egész szám átalakítások A szükséges fejállományok: <iostream>, <string>, <cstdlib> string IntToStr(unsigned long long szam, unsigned char alap) { static char szamjegyek[36+1] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" ; string szamb = ""; int szamjegy; while (szam > 0) { szamjegy = szam % alap; szamb = szamjegyek[szamjegy] + szamb; szam /= alap; return szamb == ""? "0" : szamb; Tóth B.: C++ függelék (Programozási ismeretek kezdő versenyzőknek) 3

int main () { string str10 = "2014 C++ Szabvany"; int adat; adat = atoi(str10.c_str()); cout << adat << endl; // 2014 adat = stoi(str10); cout << adat << endl; // 2014 string str20 = IntToStr(38432, 20) + "0"; cout << str20 << endl; // 4G1C00 string str16 = "131CD2A"; string str02 = "-10011000111"; size_t p; int egesz10 = stoi (str10, &p); cout << egesz10 << " : " << str10.substr(p) << endl; // 2014 : C++ Szabvany int egesz02 = stoi (str02, nullptr, 2); unsigned long egesz20 = stoul (str20, nullptr, 20); unsigned long long egesz16 = stoll (str16, nullptr, 16); string szamok = to_string(egesz10) + ", " + to_string(egesz16) + ", "; szamok += to_string(egesz02) + ", " +to_string(egesz20); cout << szamok << endl; // 2014, 20041002, -1223, 768640 7. C++11 véletlenszám-generálási példa A szükséges fejállományok: <iostream>, <random>, <ctime> random_device rd; // véletlen eszköz mt19937 gen(rd()); // a választott generátor gen.seed(time(0)); // véletlen kezdőérték // egyenletes eloszlás a [0, 1) intervallumban uniform_real_distribution<double> nd(0, 1); for (int i=0; i<10; i++) cout << nd(gen) << endl; // véletlen szám létrehozása 8. Hagyományos dátum-/időkezelés a C++-ban A szükséges fejállományok: <iostream>, < clocale>, <ctime> // Várakozik ms ezredmásodpercig (Windows alatt) void Varakozik(clock_t ms ) { clock_t cel; cel = ms + clock(); while( cel > clock() ); int main (void) { setlocale(lc_all, "Hun"); const int pmeret = 123; char puffer[pmeret]; time_t most; tm *helyiido; Tóth B.: C++ függelék (Programozási ismeretek kezdő versenyzőknek) 4

// az aktuális idő lekérdezése most = time (NULL); // átalakítása helyi idővé helyiido = localtime (&most); // kiírás szabványos formátumban cout << asctime (helyiido) << endl; // kiírás saját formátumban strftime (puffer, pmeret, "Ma %A, %B %d. van.\n", helyiido); strftime (puffer, pmeret, "Az idő: %I:%M:%S %p.\n", helyiido); // ------------------------------------------------------------------------- // Milyen napra esik az adott dátum? int ev, ho, nap; tm datum = {0; time_t akkor; cout << "év : "; cin >> ev; cout << "hó : "; cin >> ho; cout << "nap: "; cin >> nap; datum.tm_year = ev - 1900; datum.tm_mon = ho - 1; datum.tm_mday = nap; akkor = mktime(&datum); if (akkor == -1) cout << "hibás dátum" << endl; else { strftime(puffer, pmeret, "%A", &datum); cout << "az év " << datum.tm_yday <<". napja, " << endl; cout << "a hét " << datum.tm_wday <<". napja, " << endl; // A két időpont közötti másodpercek száma: cout << "Az eltelt másodpercek: " << fixed << difftime(akkor, most); // ------------------------------------------------------------------------- // futásidő mérése: clock_t kezdete = clock(); Varakozik(1223); clock_t vege = clock(); clock_t orautesek = vege - kezdete; double masodpercek = orautesek / (double) CLOCKS_PER_SEC; cout << "futásidő: " << masodpercek << endl; Tóth B.: C++ függelék (Programozási ismeretek kezdő versenyzőknek) 5

9. C/C++11 vegyes dátum- és időkezelés A szükséges fejállományok: <iostream>, < clocale>, <ctime>, <chrono> // Várakozik ms ezredmásodpercig void Varakozik(unsigned long ms ) { typedef chrono::high_resolution_clock ora; ora::time_point kezdete = ora::now(); ora::time_point vege = kezdete; while (chrono::duration_cast<chrono::milliseconds> (vege - kezdete).count() < ms) { vege = ora::now(); typedef chrono::system_clock ora; int main (void) { setlocale(lc_all, "Hun"); const int pmeret = 123; char puffer[pmeret]; ora::time_point most; time_t most_t; tm *helyiido; // az aktuális idő lekérdezése most = ora::now(); most_t = ora::to_time_t(most); // átalakítása helyi idővé helyiido = localtime (&most_t); // kiírás szabványos formátumban cout << asctime (helyiido) << endl; // kiírás saját formátumban strftime (puffer, pmeret, "Ma %A, %B %d. van.\n", helyiido); strftime (puffer, pmeret, "Az idő: %I:%M:%S %p.\n", helyiido); // ------------------------------------------------------------------------- // Milyen napra esik az adott dátum? int ev, ho, nap; tm datum = {0; ora::time_point akkor; time_t akkor_t; cout << "év : "; cin >> ev; cout << "hó : "; cin >> ho; cout << "nap: "; cin >> nap; datum.tm_year = ev - 1900; datum.tm_mon = ho - 1; datum.tm_mday = nap; akkor_t = mktime(&datum); if (akkor_t == -1) cout << "hibás dátum" << endl; else { strftime(puffer, pmeret, "%A", &datum); cout << "az év " << datum.tm_yday <<". napja, " << endl; cout << "a hét " << datum.tm_wday <<". napja, " << endl; Tóth B.: C++ függelék (Programozási ismeretek kezdő versenyzőknek) 6

// A két időpont közötti másodpercek száma: akkor = ora::from_time_t(akkor_t); chrono::duration<double> masodpercek = akkor-most; cout << "Az eltelt másodpercek: " << fixed; cout << masodpercek.count(); // ------------------------------------------------------------------------- // futásidő mérése: ora::time_point kezdete = ora::now(); Varakozik(1223); ora::time_point vege= ora::now(); unsigned long ms = chrono::duration_cast<chrono::milliseconds> (vege - kezdete).count(); cout << "futásidő: " << ms/1000.0 << endl; 10. Magyar szövegek rendezése 1. A C++ alapértelmezés szerint helyi beállapításaival és saját kódtáblával A szükséges fejállományok: <iostream>, < clocale>, <string>, <algorithm> static string sorrend_abc = "aaáábbccddeeééffgghhiiííjjkkllmmnnoo" "óóööőőppqqrrssttuuúúüüűűvvwwxxyyzz"; bool Azonos(char cha, char chb) { int pa = sorrend_abc.find(cha); int pb = sorrend_abc.find(chb); return (pa/2) == (pb/2); bool Kisebb(string a, string b) { bool eredmeny = false; int i = 0; while ( (a[i]!=0) && (b[i]!=0) && Azonos(a[i],b[i]) ) { i++; int pa = sorrend_abc.find(a[i]); int pb = sorrend_abc.find(b[i]); if ((pa==-1) ((pa!=-1 && pb!=-1) && ((pa/2) < (pb/2))) ) eredmeny = true; return eredmeny; abigél Adél Adél Aladár ábel Ádám Ágnes bandi Bálint Benő setlocale(lc_all, ".1250"); string nevek[] = {"Adél", "abigél", "Ádám", "ábel", "Ágnes", "bandi", "Adél", "Bálint", "Aladár","Benő"; sort(begin(nevek), end(nevek), Kisebb); for (const string& s : nevek) cout << s << endl; Tóth B.: C++ függelék (Programozási ismeretek kezdő versenyzőknek) 7

11. Magyar szövegek rendezése 2. A C++ magyar ( hu-hu ) helyi beállapításainak alkalmazásával (VC++ 2013-ban) A szükséges fejállományok: <iostream>, < clocale>, <string>, <locale>, <algorithm> bool Kisebb(string a, string b) { locale loc("hu-hu"); const collate<char>& coll = use_facet<collate<char> >(loc); int result = coll.compare(a.data(), a.data() + a.length(), b.data(), b.data() + b.length()); return result < 0; setlocale(lc_all, "hu-hu"); string nevek[] = {"Adél", "abigél", "Ádám", "ábel", "Ágnes", "bandi", "Adél", "Bálint", "Aladár","Benő"; sort(begin(nevek), end(nevek), Kisebb); for (const string& s : nevek) cout << s << endl; 12. A Visual Basic like műveletének megfelelő C++11 program az STL reguláris kifejezések könyvtárának a használatával A szükséges fejállományok: <iostream>, < regex>, <string> bool Like(const string& str, const regex& minta) { return regex_match(str,minta); regex minta(".[0-9][a-ft-z].*[^aez]"); if (Like("x3zbbbbbbf",minta)) // hasonlít cout<<"hasonlít"<<endl; else cout<<"nem hasonlít"<<endl; if (Like("x3z",minta)) // nem hasonlít cout<<"hasonlít"<<endl; else cout<<"nem hasonlít"<<endl; 13. Rendezett halmazfelsorolást előállító program időméréssel A megoldás a sort() és az unique() algoritmusokra épül. A szükséges fejállományok: <iostream>, < ctime>, <cstdlib>, <vector>, <algorithms, <chrono> class Stopper { private: chrono::time_point<chrono::high_resolution_clock> kezdete, vege; public: void Start() { kezdete = vege = chrono::high_resolution_clock::now(); void Stop() { vege = chrono::high_resolution_clock::now(); double ElteltIdo() { auto eltelt = chrono::duration_cast<chrono::milliseconds>(vege-kezdete); return eltelt.count(); ; ábel abigél Ádám Adél Adél Ágnes Aladár Bálint bandi Benő Tóth B.: C++ függelék (Programozási ismeretek kezdő versenyzőknek) 8

unsigned int m = 10000000; vector<int>tomb(m, 0); srand(time(0)); for (int& elem: tomb) elem = rand(); Stopper stopper; stopper.start(); sort(begin(tomb), end(tomb)); auto utolso = std::unique(begin(tomb), end(tomb)); tomb.erase(utolso, end(tomb)); stopper.stop(); cout << "Eltelt ido" << stopper.elteltido() << " ms\n"; cout << "A megmaradt elemk szama:" << tomb.size() << endl; 14. Szöveges állomány teljes tartalmának sztringbe olvasása A szükséges fejállományok: <iostream>, < string>, < fstream>, < sstream> ifstream fajlbe("szövegfájl.txt"); stringstream puffer; puffer << fajlbe.rdbuf(); fajlbe.close(); string szoveg = puffer.str(); cout << szoveg << endl; 15. Struktúra változók biztonságos azonosság-vizsgálata C++-ban A szükséges fejállományok: <iostream>, < string> struct TDiak { string nev; bool fiu; ; bool Megegyeznek(const TDiak& d1, const TDiak& d2) { return (d1.nev == d2.nev) && (d1.fiu == d2.fiu); bool operator==(const TDiak& d1, const TDiak& d2) { return (d1.nev == d2.nev) && (d1.fiu == d2.fiu); Tóth B.: C++ függelék (Programozási ismeretek kezdő versenyzőknek) 9

TDiak diak1 = {"Laci", true; TDiak diak2; diak2.nev = "Laci"; diak2.fiu = "true"; cout << Megegyeznek(diak1, diak2) << endl; // 1 -> igen cout << (diak1==diak2) << endl; // 1 -> igen 16. Egydimenziós tömbök átadása függvényeknek A szükséges fejállományok: <iostream>, < vector> void Feltolt(int tomb[], int meret, int adat) { for (int i=0; i<meret; i++) tomb[i] = adat; void Feltolt(vector<int>& tomb, int adat) { for (int& elem : tomb) elem = adat; vector<int> Letrehoz_es_Feltolt(int meret, int adat) { vector<int> t(meret, adat); return t; const int elemszam = 12, tesztadat = 123; // Statikus tömb int stomb[elemszam]; Feltolt(stomb, elemszam, tesztadat); for (int elem : stomb) cout << elem << " "; // Dinamikus tömb int *dtomb = new int[elemszam]; Feltolt(dtomb, elemszam, tesztadat); for (int i=0; i<elemszam; i++) cout << dtomb[i] << " "; delete[] dtomb; // vektor1 függvény csak feltölti vector<int> vektor1(elemszam); Feltolt(vektor1, tesztadat); for (int elem : vektor1) cout << elem << " "; // vektor2 függvény létrehozza és feltölti vector<int> vektor2; vektor2 = Letrehoz_es_Feltolt(elemszam, tesztadat); for (int elem : vektor2) cout << elem << " "; Tóth B.: C++ függelék (Programozási ismeretek kezdő versenyzőknek) 10

17. Egydimenziós tömbök rendezése A szükséges fejállományok: <iostream>, < vector>, <algorithm> bool Hasonlit(const int& a, const int& b) { return a > b; const int elemszam = 10; // Statikus tömb int stomb[elemszam] = {7, 29, 10, 2, -9, 12, 11, 30, -4, 23; sort(begin(stomb), end(stomb)); for (int elem : stomb) cout << elem << " "; // Összehasonlító függvény sort(stomb, stomb+elemszam, Hasonlit); for (int elem : stomb) cout << elem << " "; // Dinamikus tömb int *dtomb = new int[elemszam] {7, 29, 10, 2, -9, 12, 11, 30, -4, 23; sort(dtomb, dtomb+elemszam); for (int i=0; i<elemszam; i++) cout << dtomb[i] << " "; // Összehasonlító függvény stable_sort(dtomb, dtomb+elemszam, Hasonlit); for (int i=0; i<elemszam; i++) cout << dtomb[i] << " "; delete[] dtomb; // vektor vector<int> vektor {7, 29, 10, 2, -9, 12, 11, 30, -4, 23; sort(begin(vektor), end(vektor)); for (int elem : vektor) cout << elem << " "; // Lambda-kifejezés stable_sort(begin(vektor), end(vektor), [](const int& a, const int& b) {return a>b;); for (int elem : vektor) cout << elem << " "; Tóth B.: C++ függelék (Programozási ismeretek kezdő versenyzőknek) 11