Objektum-orientált programozás alap információk
Cél:
A további tanulmányokat támogató informatikai ismeretek és készségek bővítése, valamint az objektum-orientált technológiák alkalmazásának elsajátítása C++ nyelven.
Főtémák:
- OOP alapelvek és C++ nyelvi eszközök (osztály, kapszulázás, öröklődés, polimorfizmus, absztrakció)
- Összetett adattárolási elvek és adatstruktúrák
- Operációs rendszerek
- Hálózatok
- Adatbázisok
Laborok szerepe:
Objektumok készítésének és felhasználásának begyakorlása, összetett adattárolási elvek alkalmazása, a problémamegoldó készség fejlesztése.
Előadások szerepe:
Áttekintést adnak az informatika további területeiről (operációs rendszerek, hálózatok, adatbázisok), és tárgyalják az objektum-orientált programozás alapelveit a laborok megértésének támogatására.
Várható kimenet:
Szilárd OOP-alapismeretek C++-ban; moduláris, jól karbantartható kód készítése; OO technikák és adatstruktúrák magabiztos alkalmazása mérnöki feladatokban.
ZH SZABÁLYOK
Engedélyezett segédeszközök
1. A tanszéki oldalra feltöltött laborok
2. Saját USB-n hozott gyakorló kódok: ezek lehetnek akár a gyakorló feladatok AI-jal promptolt megoldásai is, azonban a számonkérés során nem használható közvetlen semmilyen LLM.
Becsületesség garanciák
1. A számonkérés során telefonokat kikapcsolva a táskába helyezni
2. Internet elérés kikapcsolva
3. Laptop tálca elrejtés azonnali bukás
FELKÉSZÜLÉS ZH-KRA
1. szint: A mintaZH feladatok legyenek elkészítve akár LLM-mel, akár kézzel.
! EZT MINDENKÉPPEN TARTSUK BE
2. szint: A laborok gyakorlófeladatainak megoldása otthon
3. szint: A laborok gyakorlófeladatainak megoldása laboron időre
Ezért összesen akár 10 pluszpont is szerezhető a félév során, laboronként max 2 pont
OOP Labor 1 – C++ Bevezető – Adatfolyamok, Mutatók, Referenciák, Konzolszínezés
#include <iostream>
#include <iomanip>
#include <ctime>
#include <cmath>
int main() {
cout << "Adj meg egy valós számot: ";
cin >> valos_szam;
double* cpp_tomb = new double[5];
delete[] cpp_tomb;
int** matrix = new int*[meret];
for (int i = 0; i < meret; i++)
delete[] matrix[i];
}
main.cpp
#include <string>
#define ALAP "\033[0m"
#define FELKOVER "\033[1m"
#define ALAHUZOTT "\033[4m"
#define INVERTALT "\033[7m"
#define PIROS "\033[31m"
#define H_LILA "\033[45m"
int main() {
cout << H_LILA << FEHER << "lila háttér"
<< ALAP;
}
ansi_escape.cpp
1. Feladat: Véletlenszám-eloszlás ellenőrzése
Írj programot, amely 1000 db [0,1) közötti egyenletes véletlenszámot generál, és kiírja, hogy hány darab esik az [0,0.5) és hány a [0.5,1) intervallumba!
...
...
2. Feladat: Pi közelítése Monte Carlo-módszerrel
Számítsd ki a π értékét véletlenszerűen generált pontok segítségével az egységnégyzetben és negyedkörben
...
...
3. Feladat: Integrál Monte Carlo-módszerrel
Becsüld meg a határozott integrál értékét Monte Carlo-módszerrel: e^(-x²) függvény [0,1] intervallumon
...
...
4. Feladat: Kétváltozós integrál becslése
Monte Carlo-módszerrel közelítsd a kétszeres integrált: xy függvény [0,1]×[0,1] tartományon
...
...
5. Feladat: Monte Carlo szimuláció Gauss-eloszlással
Gauss-eloszlású véletlenszámokból közelítsd a várható értéket: E[X²] ahol X ~ N(0,1)
...
...
l1_gyakorlok.pdf
Ctrl+F / Ctrl+H
Keresés / Csere
Ctrl+K, C / Ctrl+K, U
Komment ki/be
Ctrl+K, D
Dokumentum formázása
Ctrl+Space
IntelliSense
Ctrl+.
Quick Actions
F5 / Ctrl+F5
Futtatás debug-gal / debug nélkül
F9 / F10 / F11
Breakpoint / Step Over / Step Into
VS 2022 C/C++ gyorsbillentyűk
OOP Labor 2 – Függvények, Sablonok, Makrók, Preprocesszor – Dinamikus tömbkezelés, Színezés
#include <iostream>
#include "fgv.h"
#include "szinek.h"
static double negyzet(double x)
inline static ostream& dendl(ostream& os)
extern int laborszam;
int main() {
csere_referencia(a, b);
csere_sablon(sz1, sz2);
matematikai_fgv* f = negyzet;
}
main.cpp
#pragma once
#ifndef FGV_H
#define FGV_H
#include <string>
void csere(int* elso, int* masodik);
void csere_referencia(...);
template <typename Tipus>
void csere_sablon(Tipus& elso, ... );
double tomb_atlag(const double* tomb, ... );
double tomb_atlag(const int* tomb, ... );
double tomb_atlag(double mennyiLegyen = 0);
typedef double matematikai_fgv(double);
namespace korszeru {
...
}
#endif
fgv.hpp
#include "fgv.hpp"
#include <limits>
void csere_referencia(int& elso, ... ) {
int tmp = elso;
elso = masodik;
masodik = tmp;
}
template <typename Tipus>
void csere_sablon(Tipus& elso, ... ) {
Tipus tmp = elso;
elso = masodik;
masodik = tmp;
}
fgv.cpp
#pragma once
#define ALAP "\033[0m"
#define FELKOVER "\033[1m"
#define ALAHUZOTT "\033[4m"
#define FEKETE "\033[30m"
#define PIROS "\033[31m"
#define ZOLD "\033[32m"
#define H_FEKETE "\033[40m"
#define H_PIROS "\033[41m"
#define H_ZOLD "\033[42m"
#define KIEMELT(FOCIM, UZENET) \
cout << H_SARGA << FEKETE << " " << FOCIM
<< " " << ALAP << " " << UZENET << endl;
szinek.hpp
1. Feladat: Tömb minimum és maximum keresése referenciával
Készíts egy függvényt, amely egy int típusú dinamikus tömb minimumát és maximumát két referencián keresztül visszaadja!
...
...
2. Feladat: Két tömb összefűzése sablonfüggvénnyel
Írj template függvényt, amely két azonos típusú dinamikus tömböt összefűz és új dinamikusan lefoglalt tömböt ad vissza
...
...
3. Feladat: Medián számítása sablonfüggvénnyel
Készíts template függvényt, amely egy T* típusú tömb mediánját számolja ki páros és páratlan elemszámra
...
...
4. Feladat: Keresés int tömbben, pointerrel, index visszaadással
Írj függvényt, amely egy dinamikus int tömbben megkeresi az első, felhasználó által megadott számot és visszaadja az elem indexét
...
...
5. Feladat: Konzoltörléses animáció több színnel és animációval
Írj programot, amely egy szöveget karakterenként ír ki gépelés animációval, majd színes animációkkal újra kiírja
...
...
l2_gyakorlok.pdf
OOP Labor 3 – Összetett osztályok és asszociáció – "Étel" és "Alapanyag" példaprojekt
#include <vector>
#include "alapanyag.hpp"
#include "etel.hpp"
int main() {
Alapanyag zab("Zabpehely", 62, 13, ... );
Etel zabkasa("Zabkása");
zabkasa.alapanyag_hozzaad(tej, 150);
cout << zabkasa << endl;
tej.ar_set(55);
}
main.cpp
class Alapanyag {
private:
string nev;
double szenhidrat_100g,
feherje_100g, ...
double ar_100g;
public:
Alapanyag(const string& nev,
double ch, double feh, ...
double ar);
string nev_get() const;
double ch_get() const, ...
void ar_set(double uj_ar);
friend ostream& operator<<(ostream& os,
const Alapanyag& a);
};
alapanyag.hpp
#include "alapanyag.hpp"
Alapanyag::Alapanyag(const string& nev,
double ch, ...)
: nev(nev),
szenhidrat_100g(ch), ...
ar_100g(ar)
{}
string Alapanyag::nev_get()
const { return nev; }
double Alapanyag::ch_get()
const { return szenhidrat_100g; }
…
ostream& operator<<(ostream& os, ... ) {
os << a.nev << " (100g): "
...
}
alapanyag.cpp
#include "alapanyag.hpp"
#include <vector>
#include <utility>
class Etel {
private:
string nev;
vector<pair<Alapanyag, double> > alpk;
//vector<pair<Alapanyag*, double> > alpk;
public:
Etel(const string& nev); // konstruktor
~Etel(); // destruktor
void alapanyag_hozzaad(...);
double ossz_ch() const, ...
void osszes_alapanyag_kiir() const;
friend ostream& operator<<(..., ...);
};
etel.hpp
#include "etel.hpp"
void Etel::alapanyag_mennyiseg_novel(...) {
for (auto& par : alapanyagok) {
if (par.first.nev_get() == alapanyag_nev) {
//if (par.first->nev_get() == alapanyag_nev) {
par.second += gramm;
return;
}
}
}
ostream& operator<<(...) {
os << "Étel: " << e.nev << endl;
e.osszes_alapanyag_kiir();
os << "Tápérték összesen:" ...
return os;
}
etel.cpp
1. Feladat: Jegyek feldolgozása tömbbel és osztállyal
Készíts egy Diak osztályt, amelynek van egy név adattagja és egy egész típusú tömbje (jegyek 1-5-ig). Számold meg a jegyeket és keress szélsőértékeket
...
...
2. Feladat: Jegyek feldolgozása vektorral és osztállyal
Az 1. feladat tömbjét cseréld le vektorra (std::vector), a Diak osztály tagjaként! Készíts tagfüggvényt az átlag számításához
...
...
3. Feladat: Háromszög osztály, létezés vizsgálattal
Készíts egy Haromszog osztályt, amelynek tagjai: három oldal hossza (a, b, c), és egy bool letezik adattag. Vizsgáld a háromszög-egyenlőtlenséget
...
...
4. Feladat: Páros adattípusok, átlag és szélsőértékek
Készíts egy vektort, amely párokat (std::pair) tartalmaz város neve és napi átlaghőmérséklet. Számítsd ki statisztikákat
...
...
5. Feladat: Prímszámok a tartományban és statisztikájuk
Kérj be két egész számot (a, b) egy zárt intervallum határaként! Generálj egy vektort, amely tartalmazza az összes prímszámot ebben a tartományban
...
...
l3_gyakorlok.pdf
OOP Labor 4 – Szövegfeldolgozás és konzol formázás: Tördélő osztály, színezett kimenet
#include <string>
#include <vector>
#include "tordelo.h"
#include "szinek.h"
ostream& tab(ostream& os) { return os.put('\t'); }
int main() {
string bemenet; getline(cin, bemenet);
Tordelo t(bemenet);
int n = t.darab(); vector<string> szavak;
string s1 = szavak.empty() ? "" : szavak[0];
string_view view = modern;
}
main.cpp
#ifndef TORDELO_H
#define TORDELO_H
using namespace std;
#include <string>
class Tordelo {
string s;
mutable int allapot;
mutable bool szokar;
public:
static string elvalasztok;
Tordelo(const string& input);
int darab() const;
string szo(int hanyadik) const;
};
#endif
tordelo.hpp
#include "tordelo.hpp"
using namespace std;
string Tordelo::elvalasztok = " ,.?!-";
Tordelo::Tordelo(const string& input)
: s(input),
allapot(0),
szokar(false)
{}
int Tordelo::darab() const {
...
}
string Tordelo::szo(int hanyadik) const {
...
}
tordelo.cpp
#pragma once
#define ALAP "\033[0m"
#define FELKOVER "\033[1m"
#define ALAHUZOTT "\033[4m"
#define FEKETE "\033[30m"
#define PIROS "\033[31m"
#define ZOLD "\033[32m"
#define H_FEKETE "\033[40m"
#define H_PIROS "\033[41m"
#define H_ZOLD "\033[42m"
#define KIEMELT(FOCIM, UZENET) \
cout << H_SARGA << FEKETE << " " << FOCIM
<< " " << ALAP << " " << UZENET << endl;
szinek.hpp
1. Feladat: Nagybetűvel kezdődik-e a szöveg?
Olvass be egy sort (egész mondatot), majd írd ki, hogy nagybetűvel kezdődik-e, van-e írásjel a végén, és a többi betű kisbetű-e vagy sem
...
...
2. Feladat: Szavak visszafelé sorrendben
Olvass be egy mondatot! Írd ki a szavakat visszafelé sorrendben (de maguk a szavak ne forduljanak meg)
...
...
3. Feladat: Betű gyakoriság számolása
Olvass be egy sort, majd írd ki, hány 'a' betű van benne! Példa: "almafa alatt áll a fa." -> Az 'a' betűk száma: 6
...
...
4. Feladat: Hossz szerinti szavak csoportosítása
Olvass be egy mondatot, majd írd ki, hány darab különböző hosszúságú szó van, és a csoportokat is jelenítsd meg szóhossz szerint
...
...
5. Feladat: Betűre végződő szavak számolása
Olvass be egy mondatot, majd írd ki az összes olyan szót, amely 'a' betűre vagy 'A' betűre végződik, valamint azt is, hogy hány ilyen szó volt
...
...
l4_gyakorlok.pdf
OOP Labor 5 – Formátum-ellenőrzés, Kivételkezelés, Fájlbeolvasás, Szűrés osztályokkal
#include <regex>
#include "CsvFeldolgozo.hpp"
#include "DatumKezeles.hpp"
#define BEMENTEI_FAJL "BME_2034.csv"
constexpr char bemeneti_fajl[] = "...";
int main() {
string bekert_datum;
for (int i = 0; i < 10; ++i) {
...
if (regex_match(bekert_datum, ...)) {...}
...
if (i == 9) { ... }
}
}
main.cpp
#pragma once
#include <string>
#include <tuple>
#include <regex>
using namespace std;
extern const regex datum_minta;
class DatumKezeles {
public:
// "YYYY.MM.DD" formátumú-e
static bool ervenyes_datum(const string& s);
// A "YYYY.MM.DD" formátumból(év, hónap, nap)
static tuple<int, int, int> bont_dat(const string& s);
};
DatumKezeles.hpp
#include "DatumKezeles.hpp"
#include <regex>
#include <sstream>
using namespace std;
// regex a "YYYY.MM.DD" formátumra
const regex datum_minta(R"...");
bool DatumKezeles::ervenyes_datum(...) {
return regex_match(s, datum_minta);
}
tuple<int, int, int> DatumKezeles::bont_dat(const string& s) {
int ev = 0, honap = 0, nap = 0;
char pont1, pont2;
istringstream ss(s);
ss >> ev >> pont1 >> honap >> ... ;
}
DatumKezeles.cpp
#include <fstream>
class CsvFeldolgozo {
public:
CsvFeldolgozo(const string& bemeneti_fajl, ...);
bool datum_utani_feldolgozas(...);
private:
string bemeneti_fajl, ...
ifstream be_fajl;
ofstream szoveges_fajl;
fstream binaris_fajl;
void fajl_megnyitas();
void fajl_bezaras();
static string vagas(const string& s);
void sor_feldolgozas(const string& sor, ...);
};
CSVFeldolgozo.hpp
#include "CsvFeldolgozo.hpp"
#include "DatumKezeles.hpp"
#include <tuple>
void CsvFeldolgozo::fajl_megnyitas() {
be_fajl.open(bemeneti_fajl, ios::in);
if (!be_fajl.is_open())
throw runtime_error("..." + ...);
...
}
void CsvFeldolgozo::fajl_bezaras() {
...
}
CSVFeldolgozo.cpp
Tárgykód;Tárgynév;Kurzus;Oktató;
CMEFKTVTRGY;Promptolástechnika;25o_L01;Harcos József;
CMEMSLPJIX;Mesterséges Intelligencia alkalmazásai;25_L1;Vincze József;
CME00004741;Komplex hiperbolikus analízis;l1_25;Dr. Catherine Petit;
CME00008033;Számelmélet 2;L0_25;Dr. Nagy Sándor;
CME00005422;Sztochasztikus differenciálegyenletek;L1-25;Dr. rer. math. Martin Groß;
CME00006321;Kvaternikus-többváltozós Mértékfunkcionálanalízis;25_l1;Dr. Ovilovits Zsüliett;
CMEQXBN982;Neurokognitív Fluktuációelmélet;L1_25;Kiszelyvári Bence;
BME_2034.csv
1. Feladat: Telefonminta ellenőrzése
Készíts egy TelefonKezeles osztályt, benne egy static bool ervenyes_telefonszam metódussal, ami elfogadja például: +36 20 1234567 vagy 06-30-765-4321
...
...
2. Feladat: Prefix + hívószám bontása
Implementálj egy struct Telefon és static Telefon bontott_telefonszam függvényt, ami valid telefonból kiválasztja a három részt regex-csoportokkal
...
...
3. Feladat: CSV-szűrés és fájlba írás
Adott egy contacts.csv fájl. Írj egy CsvTelefonFeldolgozo osztályt, ami beolvassa a CSV-t soronként és szűri a valid/hibás telefonszámokat
...
...
4. Feladat: Konfigurálható prefix-lista
Készíts egy telefon.cfg fájlt, amiben soronként egy engedélyezett prefix szerepel. Csak ezekkel a prefixekkel fogadd el a számokat
...
...
5. Feladat: Record struktúra és fájlkezelés
Készíts egy Record nevű struktúrát és egy RecordLista nevű osztályt. Olvass be adatok.txt fájlból id és név párokat kivételkezeléssel
...
...
l5_gyakorlok.pdf
OOP Labor 8 – 1. Zárthelyi dolgozat
OOP Labor 9 – Öröklés, Dinamikus memória osztályon belül és Bináris fájlkezelés
#include <iostream>
#include "orokles.cpp"
#include "destruktor_this.cpp"
#include "binaris.cpp"
using namespace std;
int main() {
AltalanosEszkoz kalapacs("Kalapács", 1.2,
"KAL123", "GY-KAL");
kalapacs.mutat();
kalapacs.kiirPublic();
u.setName("Példa Elemér").setAge(23).print();
auto msWB = binaris_iras("adatok.bin", v);
}
main.cpp
class Eszkoz {
private:
string szeriaszam;
protected:
string gyartoKod;
public:
string nev;
double suly;
Eszkoz(...)
: szeriaszam(sz), gyartoKod(gy), ... {}
void kiirPublic() const {
cout << "[Eszkoz] Nev: " << nev << endl;
}
string getSzeriaszam() const { return ... ; }
protected:
string getGyartoKod() const { return ... ; }
};
orokles.cpp
class DinTomb {
int* tomb; ...
public:
DinTomb(int m) : meret(m) {
tomb = new int[meret];
for (int i = 0; i < meret; ++i)
~DinTomb() { delete[] tomb; }
};
class User {
...
public:
User& setName(const string& name) {
this->name = name;
return *this;
}
};
destruktor_this.cpp
#include <chrono>
#include <cstdint>
#include <sys/stat.h>
using namespace chrono;
struct Adat {
int id;
double ertek;
};
static long long fajlmeret(const string& fajlnev) {
struct stat st {};
if (stat(fajlnev.c_str(), &st) == 0)
return (long long)st.st_size;
return -1;
}
binaris.cpp
l9_gyakorlok.pdf
OOP Labor 10 – Egyedi, natív adatstruktúrák STL nélkül
#include <cstddef>
#include <cassert>
int main() {
Adat a(1), b(2), c(3), d(4);
lista.vegere_beszuras(&a.hook1);
lista.vegere_beszuras(&b.hook1);
lista.print_all();
Buffer<int, 3> cb;
cb.push(1); cb.push(2); cb.push(3);
cout << "Kezdet: "; cb.print();
IndexeltBKF bkf;
for (int v : {5, 2, 8, 1, 4, 7, 9})
bkf.beszur(v);
}
main.cpp
#include <cassert>
template<typename T, size_t N>
class Buffer {
T buffer[N];
size_t head = 0;
size_t tail = 0;
size_t size_ = 0;
public:
void push(const T& value) {...}
T pop() {...}
size_t size() const { return size_; }
void print() const {...}
};
korkoros_buffer.cpp
#include <cstddef> // offsetof
struct IntruzivCsomo {
IntruzivCsomo* kovetkezo = nullptr;
IntruzivCsomo* elozo = nullptr;
};
struct Adat {
IntruzivCsomo hook1; // első lista láncolása
IntruzivCsomo hook2; // második lista láncolása
int ertek;
Adat(int ertek) : ertek(ertek) {}
};
indexelt_bkf.cpp
#include <stdexcept>
struct Node {
int ertek;
int meret;
Node* bal;
Node* jobb;
Node(int v) : ertek(v), meret(1),
bal(nullptr), jobb(nullptr) {}
};
struct IndexeltBKF {
Node* gyoker = nullptr;
void meret_frissites(Node* csomo) {...}
Node* beszur(Node* csomo, int ertek) {...}
void beszur(int ertek) {...}
Node* k_adik_legkisebb(...) const {...} ...
};
intruziv_lista.cpp
l10_gyakorlok.pdf
OOP Labor 11 – Konténerek és algoritmusok az STL-ben
#include "utils.hpp"
void demo_vector();
void demo_list();
void demo_deque();
void demo_set();
void demo_unordered_set();
void demo_map();
void demo_unordered_map();
int main() {
run_demo("VECTOR", demo_vector);
run_demo("LIST", demo_list);
run_demo("DEQUE", demo_deque);
run_demo("SET", demo_set);
run_demo("MAP", demo_map);
}
main.cpp
#include <vector>
#include <algorithm>
vector<int> szamok;
void demo_vector() {
szamok.assign({ 3, 5, 1, 4, 2, 2, 5 });
sort(szamok.begin(), szamok.end());
print_container(szamok, "rendezett vektor");
cout << "a 2-esek száma: " << count(szamok.begin(), szamok.end(), 2) << "\n";
erase(szamok, 5);
print_container(szamok, "...");
}
vector.cpp
#include <list>
#include <algorithm>
void demo_list() {
list<string> nevek = { "Anna", "Bela", "..." };
nevek.push_front("David");
nevek.push_back("Edit");
print_container(nevek, "Lista kezdeti ...");
auto it = find(nevek.begin(), nevek.end(), "Cecil");
if (it != nevek.end())
nevek.insert(it, "Gabor");
print_container(nevek, "Gabor beszúrva ...");
}
list.cpp
#include <deque>
#include <algorithm> // reverse, max_element
vector<int> szamok;
void demo_deque() {
deque<int> d = { 10, 20, 30 };
d.push_front(5);
d.push_back(40);
print_container(d, "Deque tartalma");
reverse(d.begin(), d.end());
print_container(d, "Fordított deque");
auto max_it = max_element(d.begin(), d.end());
cout << "Legnagyobb elem: " << *max_it << "\n";
}
deque.cpp
#include "utils.hpp"
#include <set>
void demo_set() {
set<int> halmaz = { 7, 3, 4, 4, 1, 6 };
print_container(halmaz, "Set tartalma");
cout << (halmaz.find(3) != halmaz.end() ?
"3 benne van\n" : "3 nincs benne\n");
auto lb = halmaz.lower_bound(5);
if (lb != halmaz.end())
cout << "Első >= 5: " << *lb << "\n";
halmaz.erase(6);
print_container(halmaz, "6 törlése után");
}
set.cpp
#include "utils.hpp"
#include <unordered_set>
void demo_unordered_set() {
unordered_set<string> s = { "kutya", "macska" };
s.insert("madar");
print_container(s, "Unordered_set tartalma");
cout << (s.find("hal") != s.end() ?
"hal benne van\n" : "hal nincs benne\n");
s.erase("macska");
print_container(s, "macska törlése után");
cout << "A halmaz üres? " << (s.empty() ?
"Igen" : "Nem") << "\n";
}
unordered_set.cpp
#include "utils.hpp"
#include <map>
void demo_map() {
map<string, int> pontok = { {"Anna", ... };
pontok.emplace("David", 88);
for (auto& [nev, pont] : pontok)
cout << nev << " pontszáma: " << pont << "\n";
cout << "Cecil benne van? " << (pontok.count("Cecil") ?
"Igen" : "Nem") << "\n";
pontok.erase("Bela");
print_container(pontok | views::keys,
"Kulcsok Bela törlése után");
cout << "Aktuális elemszám: " << pontok.size() << "\n";
}
map.cpp
#include "utils.hpp"
#include <unordered_map>
void demo_unordered_map() {
unordered_map<string, int> szotar = {
{"zold", 2}, {"kek", 3} };
szotar["fekete"] = 0;
for (auto& [szin, kod] : szotar)
cout << szin << " -> " << kod << "\n";
cout << "kek kulcs benne van? " << (szotar.count("kek")
? "Igen" : "Nem") << "\n";
szotar.erase("zold");
}
unordered_map.cpp
#ifndef UTILS_H
#define UTILS_H
#include <ranges>
template <typename Container>
void print_container(const Container& c,
const string& label = "") {
if (!label.empty()) cout << label << ": ";
for (const auto& elem : c) cout << elem << " ";
cout << "\n";
}
void run_demo(const string& title, void (*func)());
#endif
utils.hpp
#include "utils.hpp"
#include <string>
using namespace std;
void run_demo(const string& title, void (*func)()) {
cout << "==== " << title << " ====\n";
func();
cout << "\n";
}
utils.cpp
l11_gyakorlok.pdf
OOP Labor 12 – Állapottal rendelkező objektumok: Funktorok, Predikátumok, Lambdák és Függvénypointerek
// funktorok.cpp
int osszead_funktor_hivas(int a, int b);
double skalar_szorzo_hivas(double c, double x);
// predikatumok_alg.cpp
int db_hosszabb_mint(const std::vector<std::string>& v, size_t n);
int db_kisbetu(const std::string& s);
// lambdak.cpp
int lambdas_osszeadas(int a, int b);
int hozza_k_ertek_szerint(int x, int k);
void ref_capture_novel(int& a, int b);
// hivas_tipusok.cpp
int duplaz_fvptr(int x);
int lambda_pluszegy(int x);
main.cpp
// 2) ÁLLAPOTOS funktor: konstruktorban kapott
// skálázó tényezőt ELMENTI, és használja.
struct SkalarSzorzo {
double c;
explicit SkalarSzorzo(double c_) : c(c_) {}
double operator()(double x) const {
return c * x;
}
};
funktorok.cpp
#include <cctype> // islower
// "HosszabbMint" — állapotos predikátum:
// eltároljuk a küszöböt, és az alapján döntünk.
struct HosszabbMint {
size_t n;
explicit HosszabbMint(size_t n_) : n(n_) {}
bool operator()(const string& s) const {
return s.size() > n;
}
};
predikatumok.cpp
int lambdas_osszeadas(int a, int b) {
int res = ([](int x, int y)
{ return x + y; })(a, b);
return res;
}
int hozza_k_ertek_szerint(int x, int k) {
// [k] => k érték szerint kerül be (MÁSOLAT).
// A k későbbi külső módosítása itt nem látszik.
int res = ([k](int v) { return v + k; })(x);
return res;
}
void ref_capture_novel(int& a, int b) {
([&a, b]() { a += b; })();
}
lambdak.cpp
int std_function_valtas(int x, int mode) {
// std::function-be tetszőleges "int(int)" hívható betehető
std::function<int(int)> f;
if (mode == 0) {
// lambda
f = [](int v) { return v + 1; };
}
else {
// függvénymutató
f = &duplaz_impl;
}
return f(x);
}
hivas_tipusok.cpp
l12_gyakorlok.pdf
OOP Labor 13 – 2. Zárthelyi gyakorló labor
zh2_gyakorlok.pdf
OOP Labor 14 – 2. Zárthelyi dolgozat
Programozás Python nyelven alap információk
Cél:
A további tanulmányokat támogató alapvető informatikai ismeretek és készségek elsajátítása.
Főtémák:
- Algoritmusok
- Programozás alapelemei
- Adatstruktúrák
- Objektum-orientált programozás alapjai
- Python mérnöki számításokra
Laborok szerepe:
Programozási gyakorlottság és problémamegoldó készség fejlesztése feladatokon keresztül.
Előadások szerepe:
Áttekintést adnak az informatika alapterületeiről és segítik a gyakorlaton használt eszközök megértését.
Várható kimenet:
Biztos alapfokú Python-tudás a további informatikai/programozási kompetenciák hatékony fejlesztéséhez.
ZH SZABÁLYOK
Engedélyezett segédeszközök
1. A tanszéki oldalra feltöltött laborok
2. Saját USB-n hozott gyakorló kódok: ezek lehetnek akár a gyakorló feladatok AI-jal promptolt megoldásai is, azonban a számonkérés során nem használható közvetlen semmilyen LLM.
Becsületesség garanciák
1. A számonkérés során telefonokat kikapcsolva a táskába helyezni
2. Internet elérés kikapcsolva
3. Laptop tálca elrejtés azonnali bukás
FELKÉSZÜLÉS ZH-KRA
1. szint: A mintaZH feladatok legyenek elkészítve akár LLM-mel, akár kézzel.
! EZT MINDENKÉPPEN TARTSUK BE
2. szint: A laborok gyakorlófeladatainak megoldása otthon
3. szint: A laborok gyakorlófeladatainak megoldása laboron időre
Ezért összesen akár 20 pluszpont is szerezhető a félév során, laboronként max 2 pont
PYTHON Labor 1 – Változók, Matematikai műveletek, Be és kimenet, Konvertálás
nev = "Benedek"
eletkor = 21
magassag = 1.96
hazas = False
import keyword
print("Kulcsszavak: ", *keyword.kwlist)
# Lista létrehozása
hobbik = ["pénzkeresés", "kondizás", "..."]
print("Hobbik:", hobbik)
# Szöveg kiíratása behelyettesítéssel
print("Nevem: {0}, ...: {1}".format(nev, eletkor))
# opcionális paraméterek ...
print("Nevem:", nev, "Életkorom:", eletkor, sep="|", end="év\n")
lab1.zip
1. Feladat: Személyes Adatkezelő Program
Írj egy programot, amely bekéri a felhasználó nevét, életkorát és magasságát (cm-ben). Számítsa ki mikor lesz 65 éves és váltsa át a magasságot méterbe és inch-be
...
...
2. Feladat: Szabadesés Számítások
Készíts egy programot, amely kiszámolja egy szabadesés során megtett utat. Használja a fizikai képletet és számítsa ki a végső sebességet
...
...
3. Feladat: Háromszög Számítások
Írj programot, amely bekéri egy háromszög két oldalának hosszát és a közöttük lévő szöget. Számítsa ki a harmadik oldalt és a területet kétféleképpen
...
...
4. Feladat: Összetett Kifejezések és Bitműveletek
Matematikai kifejezések kiértékelése változó precedenciával és bitműveletek tesztelése bináris formában
...
...
5. Feladat: Koordináta-geometria Komplex Számokkal
Két pont kezelése komplex számként: távolság számítása, felezőpont meghatározása és fázisszög kiszámítása
...
...
l1_gyakorlok.pdf
Ctrl+/ (⌘+/)
Sor-komment ki/be
Shift+Alt+A (⌥⇧A)
Tömb-komment ki/be
Alt+↑/↓ (⌥+↑/↓)
Sor fel/le mozgatása
Ctrl+D (⌘+D)
Következő előfordulás kijelölése
Ctrl+F / Ctrl+H (⌘+F / ⌘+H)
Keresés / Csere
Ctrl+Shift+F (⌘⇧F)
Keresés a projektben
Alt+Click; Ctrl+Alt+↓/↑
Több kurzor hozzáadása
VS Code Python gyorsbillentyűk
PYTHON Labor 2 – Logikai műveletek, Elágazás
# Logikai változók létrehozása
A = True, B = False
# ÉS (and)
logikai_es = A and B
print("Logikai ÉS:", logikai_es)
# Egyenlőség (==)
egyenloseg = 5 == 5
print("Egyenlőség:", egyenloseg)
a = 20, b = 20
if b > a:
print("'b' nagyobb, mint 'a'")
else:
if b < a:
print("'b' kisebb, mint 'a'")
else:
print("'b' ugyanakkora, mint 'a'")
print("következő utasítás")
lab2.zip
1-2. Feladat: Életkor Kategorizálás, Másodfokú Egyenlet Megoldó
If-elif-else szerkezetek gyakorlása: életkor kategóriák (csecsemő, óvodás, iskolás, felnőtt, nyugdíjas) és másodfokú egyenlet megoldása diszkrimináns vizsgálattal
...
...
3. Feladat: Gázállapot Analízis
Fizikai számítások feltételes logikával: gáz nyomás, hőmérséklet, térfogat validációja és ideális gáztörvény alkalmazása. Összetett feltételek kombinálása
...
...
4. Feladat: Digitális Áramkör Szimulátor
Logikai kapuk szimulációja match-case szerkezettel: AND, OR, NAND, NOR, XOR kapuk, összetett áramkörök és igazságtábla generálás
...
...
5. Feladat: BMI Kalkulátor és Értékelő
Komplex feltételes logika: BMI számítás, WHO kategorizálás, adatvalidáció és személyre szabott egészségügyi tanácsok életkor alapján
...
...
l2_gyakorlok.pdf
PYTHON Labor 3 – While ciklus, Randomszám generálás
x = 1
while x <= 10:
print(f"x értéke: {x}")
if x == 4: # ha x == 4, akkor kilépünk
break
x = x + 1
print("Már nem vagyok a while ciklusban")
import random
veletlenszam_egesz = random.randint(1, 100)
print(f"...: {veletlenszam_egesz}")
veletlenszam_lebegopontos = random.random()
print(f"...: {veletlenszam_lebegopontos}")
veletlenszam_egesz = random.randrange(10, 100, 5)
mu = 0, sigma = 1 # Szórás
vltln_lp = random.gauss(mu, sigma)
print(f"Normál eloszlás: {vltln_lp}")
lab3.zip
import math, random, time
def trapez_integral(f, a, b, n):
h = (b - a) / n
osszeg = 0.5 * f(a)
i = 1
while i < n:
x = a + i * h
osszeg += f(x)
i += 1
osszeg += 0.5 * f(b)
return osszeg * h
while True:
x = 2.0 * random.random() - 1.0
y = 2.0 * random.random() - 1.0
lab3_peldak.zip
1. Feladat: Szám Kitalálós Játék
While ciklusos játéklogika: véletlen számgenerálás 1-100 között, tippek értékelése, próbálkozások számlálása, érvénytelen bemenet kezelése
...
...
2. Feladat: Prímszám Vizsgáló és Generátor
Matematikai algoritmusok while ciklussal: prímvizsgálat √n-ig, első N prímszám generálás, hatékonysági statisztika készítése
...
...
3. Feladat: Pénzfeldobás Szimulátor
Statisztikai szimuláció: N feldobás szimulálása, sorozatok elemzése, valószínűség összehasonlítása az elméleti 0.5-tel, eredmények kiértékelése
...
...
4. Feladat: Szabadesés Szimuláció
Fizikai szimulációk while ciklussal: szabadesés lépésenkénti számítása (g=9.81 m/s², Δt=0.1s), analitikus megoldással való összehasonlítás
...
...
5. Feladat: Jelszó Generátor és Erősség Ellenőrző
Komplex algoritmus: jelszó generálás karakterkészletekkel, erősség pontrendszer (0-60+ pont), ismétlések és minták büntetése, automatikus újragenerálás
...
...
lab3_gyakorlok.pdf
PYTHON Labor 4 – List és tuple használata, For ciklus, Range
# Lista létrehozása
listam = [1, 2.0, "három", "négy", "5", 1]
ures_lista = []
masik_lista = list((1, 2, 3, 4, 5))
hossz = len(listam)
elso = listam[0]
listam.append(6)
listam += [11, 12]
listam.remove(1)
listam.pop(3)
listam.clear()
keresett_elem = 3
megtalalhato = keresett_elem in listam
listam.sort()
listam.reverse()
masolat = listam.copy()
lab4.zip
1-2. Feladat: Statikai Számítások
Koncentrált erős támreakció számítása egyensúlyi egyenletekkel, rácsos tartó erős analízis háromszög geometriával, momentum egyenletek megoldása
...
...
3. Feladat: Nyomatéki Ábra Generálása
Tartó nyomatéki ábra számítása és megjelenítése: konzolterhelések kezelése, n részre osztás, maximum nyomaték keresése, M(x) függvény kiértékelése
...
...
4. Feladat: Newton-Raphson Módszer
Függvények zérushelyeinek keresése iterációs módszerrel: konvergencia vizsgálat, deriváltak számítása, cos(x)-x és exponenciális egyenletek megoldása
...
...
5. Feladat: Numerikus Integrálás és Deriválás
Trapéz szabály integráláshoz, középponti különbség deriváláshoz: sin(x), x², eˣ függvények analízise, analitikus értékekkel való összehasonlítás
...
...
l4_gyakorlok.pdf
PYTHON Labor 5 – Lista szeletelése, Iterátorok
gyumolcsok = ["alma", "körte", "banán", "narancs",
"kivi", "dinnye", "mangó"]
print(f"Második elem: {gyumolcsok[1]}")
print(f"Utolsó elem: {gyumolcsok[-1]}")
print(f"Tartomány [-1:-4:-1]: {gyumolcsok[-1:-4:-1]}")
alma, korte, banan = gyumolcsok
print(f"{alma}, {korte}, {banan}")
_, _, banan = gyumolcsok
print(f"Banán: {banan}")
szamok = [1, 5, 2], negyzet = []
for szam in szamok:
negyzet.append(szam**2)
print(f"Négyzetek: {negyzet}")
lab5.zip
1-2. Feladat: Statikai Szerkezetek
Rúdszerkezet reakcióerő számítása háromszög tartón, megoszló teher eredőjének meghatározása: egyensúlyi egyenletek, szimmetria alkalmazása, legnagyobb nyomaték
...
...
3-4. Feladat: Numerikus Matematika
Függvény határértékének numerikus vizsgálata x→2 esetén, érintő egyenes meghatározása numerikus deriválással: központi differencia módszer, h=0.001 lépésköz
...
...
5. Feladat: Elektromos Hálózat Analízis
Összetett ellenállásos hálózat teljesítmény-számítása: soros és párhuzamos kapcsolások, Kirchhoff törvények ellenőrzése, eredő ellenállás számítás
...
...
l5_gyakorlok.pdf
PYTHON Labor 8 – 1. Zárthelyi dolgozat
PYTHON Labor 9 – String használata
PYTHON Labor 10 – Szövegfájlok kezelése
f = open(
"adatok.txt", mode="w", encoding="utf-8"
) # fájl megnyitása, ...
print(type(f))
f.close() # fájl bezárása
with open("adatok.txt", "w") as f:
pass # ide kerülnek majd az utasítások
# A fájl itt még mindig nyitva van
f.write("Egy egy szöveg, ami bekerül a fájlba.\n")
f.write("Ez lesz a második sor.")
f = open("binaris_adatok.bin", "wb") # bináris adatok megnyitása írása
f.write(b"\x01\x02\x03\x04") # bájtok sorozata
f.close() # fájl bezárása
lab10.zip
M3;20
M4;5
M10;2
M8;5
M4;12
M3;10
M10;4
M8;10
M10;5
M6;8
csavarok.csv (lab11.zip-ben)
Neptunkód Pontszám
BATMAN 100
VERFES 56
SECDED 81
SCFRGR 38
zh.txt (lab11.zip-ben)
l10_gyakorlok.pdf
PYTHON Labor 11 – Set és Dictionary
hallgato = {"nev": "Kiss Tamás", "neptun":
"KDLRDR", "pontszam": 60}
print(f"Hallgató adatai: {hallgato}")
print(type(hallgato))
kulcsok = ("nev", "neptun", "pontszam")
hallgato = dict.fromkeys(kulcsok)
print(f"Hallgató adatai: {hallgato}")
hallgato = dict.fromkeys(kulcsok, 0)
print(f"Hallgató adatai: {hallgato}")
print(f"Hallgató neve: {hallgato['nev']}")
print(f"Hallgató ...: {hallgato.get('neptun')}")
print(f"Hiányzó kulcs: {hallgato.get('jegy')}")
lab11_dict.zip
gyumolcsok = {"alma", "körte", "banán", "alma"}
print(f"Halmaz elemei: {gyumolcsok}")
halmaz = set(("alma", True, 42, 3.14)) # zárójel!
print(type(halmaz))
gyumolcsok.pop()
print(f"Halmaz elemei: {gyumolcsok}")
gyumolcsok.clear()
print(f"Halmaz elemei: {gyumolcsok}")
del gyumolcsok # itt már nem létezik ...
gyumolcsok = {"alma", "körte", "banán"}
for gyumolcs in gyumolcsok:
print(gyumolcs)
lab11_set.zip
[
{
"nev": "Kiss Tamás",
"kor": 21
},
{
"nev": "Nagy Tamás",
"kor": 20
},
{
"nev": "Molnar Tamás",
"kor": 21
}
]
data.json (lab11_dict.zip-ben)
Neptunkód;Pontszám
DF56FG;86
BATMAN;100
VERFES;48
SECDED;68
SCFRGR;39
SEFJHI;89
NKO8JK;76
zh.csv (lab11_dict.zip-ben)
Neptunkód Pontszám
BATMAN 100
VERFES 56
SECDED 81
SCFRGR 38
zh.txt (lab11_dict.zip-ben)
l11_gyakorlok.pdf
PYTHON Labor 12 – Függvény írása
PYTHON Labor 13 – 2. Hibakezelés, Zárthelyi gyakorló labor
PYTHON Labor 14 – 2. Zárthelyi dolgozat
Matematika A1 villamosmérnököknek alap információk
Általános adatok:
- Tantárgykód: BMETE90AX00
- Követelmény (óra/leckeszám): 4/4/0/V/6
- Félév: 2025/26 ősz
- Nyelv: magyar
Cél:
A további tanulmányokat támogató alapvető matematikai ismeretek és készségek elsajátítása villamosmérnöki alkalmazásokhoz.
Főtémák:
- Matematikai logika és halmazelmélet
- Vektoralgebra és analitikus geometria
- Valós és komplex számok tulajdonságai
- Függvények jellemzése és folytonossága
- Differenciál- és integrálszámítás alapjai és alkalmazásai
Előadások szerepe:
Az előadások elméleti hátteret biztosítanak a matematikai fogalmak és tételek megalapozásához.
Kistermi gyakorlatok szerepe:
A gyakorlaton résztvevők átfogó képet kapnak az analízis eszköztáráról és annak villamosmérnöki relevanciájáról, a számonkérések eredményes teljesítésére fókuszálva.
Előadások és gyakorlatok:
Előadások
U0+UU0 – Dr. Farkas Lóránt Ernő: szerda 12:00 (Q-I), csütörtök 12:00 (E.I.B.)
U0+UU0 – Dr. Farkas Lóránt Ernő: szerda 12:00 (Q-I), csütörtök 12:00 (E.I.B.)
Nagytantermi gyakorlatok
U0 – Nagy Ilona: kedd 15:00 (IB025)
UU0 – Bunth Gergely: kedd 15:00 (IB026)
U0 – Nagy Ilona: kedd 15:00 (IB025)
UU0 – Bunth Gergely: kedd 15:00 (IB026)
Gyakorlatvezetők
U01 – Farkas Lóránt: szerda 15:00 (E.406)
U02 – Pálfy Máté: szerda 15:00 (E.407)
U03 – Tislér Levente: péntek 8:00 (E.404)
U04 – Kiss Márton: szerda 10:00 (R.504)
U05 – Sándor Zalán: péntek 8:00 (E.406)
U06 – Tripsánszky Ákos: péntek 8:00 (E.406)
U07 – Bunth Gergely: szerda 8:00 (E.404)
U08 – Kiss Márton: szerda 8:00 (E.405)
U09 – Pataki Gergely: szerda 10:00 (R.505)
U10 – Hegyi Veronika: szerda 15:00 (E.305c)
I1 (IMSC) – Pataki Gergely: szerda 15:00 (E.305ab)
I2 (IMSC) – Réffy Júlia: szerda 15:00 (E.306ab)
U01 – Farkas Lóránt: szerda 15:00 (E.406)
U02 – Pálfy Máté: szerda 15:00 (E.407)
U03 – Tislér Levente: péntek 8:00 (E.404)
U04 – Kiss Márton: szerda 10:00 (R.504)
U05 – Sándor Zalán: péntek 8:00 (E.406)
U06 – Tripsánszky Ákos: péntek 8:00 (E.406)
U07 – Bunth Gergely: szerda 8:00 (E.404)
U08 – Kiss Márton: szerda 8:00 (E.405)
U09 – Pataki Gergely: szerda 10:00 (R.505)
U10 – Hegyi Veronika: szerda 15:00 (E.305c)
I1 (IMSC) – Pataki Gergely: szerda 15:00 (E.305ab)
I2 (IMSC) – Réffy Júlia: szerda 15:00 (E.306ab)
Jelenléti követelmények:
A gyakorlatokon a részvétel kötelező. Az előadások és gyakorlatok óraszámának 30%-át meghaladó hiányzás esetén az aláírás nem szerezhető meg. A hiányzás az adott hét valamelyik kapcsolódó gyakorlatán történő igazolt részvétellel pótolható. A jelenlétet minden alkalommal ellenőrizzük.
Várható kimenet:
Szilárd matematikai alapismeretek a villamosmérnöki képzés további tantárgyaihoz és a szakmai problémák megoldásához.
FÉLÉVKÖZI SZÁMONKÉRÉSEK
Általános információk
Két darab 90 perces évközi zárthelyit íratunk, melyeken segédeszköz (zsebszámológép, stb.) nem használható.
Zárthelyi időpontok és témák
1. zárthelyi:
2025.10.20. (hétfő), 8:15–10:00
Témája: Matematikai logika és halmazelmélet. Vektoralgebra és analitikus térgeometria. Komplex számok. Valós sorozatok és határértékszámításuk.
2. zárthelyi:
2025.11.20. (csütörtök), 8:15–10:00
Témája: Valós függvények határértéke, folytonossága. Differenciálszámítás alkalmazásokkal.
Pót- és javítózárthelyik
Pót/javítózárthelyi 1.:
2025.11.03. (hétfő), 18:00–20:00
Témája: az 1. zárthelyiével megegyező.
Pót/javítózárthelyi 2.:
2025.12.08. (hétfő), 18:00–20:00
Témája: a 2. zárthelyiével megegyező.
Pót-pótzárthelyi
Időpont: 2025.12.15-i hét
Anyaga, időtartama az 1. vagy a 2. zárthelyiével azonos.
Itt javítani már nem lehet.
Itt javítani már nem lehet.
Jelentkezés: A pót-pótzárthelyire a Neptunban jelentkezni kell, a megírása különeljárási díjjal jár.
A tárgy teljesítésének feltétele
Aláírást az kap, aki a gyakorlaton a jelenléti követelményt teljesítette, és mindkét zárthelyit külön-külön legalább 40%-ra megírta.
Pótlási és javítási lehetőség
A meg nem írt, vagy 40% alatti eredménnyel megírt zárthelyi(ke)t pótolni kell, a legalább 40%-os zárthelyik javíthatók. Ugyanaz a dolgozat szolgál javításra és pótlásra. Az egyik zárthelyi pótolható a pótzárthelyin, és az egyik még egyszer pótolható a pót-pótzárthelyin.
Javítózárthelyire előzetesen az előadónál kell jelentkezni. A javítózárthelyit nem kötelező beadni, de beadás esetén az új eredmény lép a régi helyébe (rontani is lehet). Ha a javító eredménye < 40%, 40%-ot könyvelünk – javítózárthelyin megbukni nem lehet.
Házi feladatok
A félév során folyamatosan házi feladatok lesznek.
Egy témakörből legfeljebb 3 pont szerezhető, összesen legfeljebb 15 pont.
A HF-pontokkal egy ZH kipótolható 40%-ra.
A fel nem használt HF-pontokat a félég végén megduplázzuk és a megajánlott jegy képletébe beszámítjuk (hf).
Egy témakörből legfeljebb 3 pont szerezhető, összesen legfeljebb 15 pont.
A HF-pontokkal egy ZH kipótolható 40%-ra.
A fel nem használt HF-pontokat a félég végén megduplázzuk és a megajánlott jegy képletébe beszámítjuk (hf).
Vizsgajegy
Csak a jelenléti követelményeket teljesítő hallgatók kapnak aláírást. Ha a két zárthelyi bármelyikének eredménye (pótlás után) nem éri el a 40%-ot, az aláírást megtagadjuk.
Aláírással rendelkező hallgató sikeres (legalább 40%-os) vizsga után kaphat megajánlott jegyet, amelyet az alábbi képlet határoz meg:
p =
p₁ + p₂ + 2v
4
+ hf
ahol p₁, p₂ a két ZH, v a vizsga százalékos eredménye, hf pedig a házi feladatokból származó pontszám (duplázás után).
0% ≤ p < 40% esetén elégtelen (1)
40% ≤ p < 55% esetén elégséges (2)
55% ≤ p < 70% esetén közepes (3)
70% ≤ p < 85% esetén jó (4)
85% ≤ p ≤ 100% esetén jeles (5)
Az írásbeli alapján megajánlott jegy szóbeli vizsgával javítható. Szóbelire a legalább 25%-ot elért hallgató jelentkezhet.
Konzultáció
A zárthelyik előtt az oktatóval egyeztetés szerint konzultációt tartunk.
Ezen kívül a gyakorlatvezetőknél is lehet konzultálni a gyakorlatokon és azokon kívül is.
A kapcsolat fülnél e-mailben kereshettek.
Ezen kívül a gyakorlatvezetőknél is lehet konzultálni a gyakorlatokon és azokon kívül is.
A kapcsolat fülnél e-mailben kereshettek.
Ajánlott jegyzetek
- Obádovics J. Gyula: Matematika (/Felsőbb matematika) (könyvtár / online használt könyv)
- Fritz Józsefné, Kónya Ilona, Pataki Gergely, Tasnádi Tamás: Matematika 1.
- Laczkovich Miklós – T. Sós Vera: Analízis 1. (Nemzeti Tankönyvkiadó)
- Thomas–Weir–Hass–Giordano: Thomas-féle Kalkulus I–II–III. (Typotex)
ANALÍZIS Gyakorlat 1 – Logika, Egyenlőtlenségek, Binomiális együtthatók, Teljes indukció
I. Logikai feladatok
Az alábbi feladatokban a ∧ jelöli az ÉS, ∨ a VAGY, ¬ a negálás műveletét. Igazoljuk a következő azonosságokat!
...
...
II. Egyenlőtlenségek igazolása
(1 + 1/n)ⁿ < 4, n ∈ N és további egyenlőtlenségek bizonyítása
...
...
III. Binomiális együtthatók
Binomiális együtthatók tulajdonságainak bizonyítása: Pascal-háromszög, binomiális tétel alkalmazásai
...
...
GYAK1.pdf
I. Extra logikai feladatok
Igazoljuk a következő azonosságot! Komplex logikai kifejezések és tagadások
...
...
II. Egyenlőtlenségek igazolása
Abszolút értékes egyenlőtlenségek és pozitív valós számokra vonatkozó egyenlőtlenségek bizonyítása
...
...
III. Binomiális együtthatók
Páros indexű binomiális együtthatók összege és tulajdonságaik
...
...
IV. Egyenletek megoldása
Gyökös egyenletek megoldása a valós számok körében
...
...
GYAK1_EXTRA.pdf
I. Feladat - Ítéletek logikai analízise
Villamosmérnöki állítások formalizálása: elemi és összetett ítéletek azonosítása, logikai műveletek (¬, ∧, ∨, →, ↔) alkalmazása szimbolikus formában
...
...
II. Feladat - Kvantorok és tagadások
Mondatok átfogalmazása logikai jelekkel (∀, ∃) és tagadásaik képzése De Morgan-szabályokkal: elektrotechnikai példákon keresztül
...
...
Megoldási útmutató és megoldókulcs
Részletes magyarázatok az elemi és összetett ítéletek felismerésére, logikai műveletek azonosítására és kvantoros állítások formalizálására
...
...
GYAK1_FORMALIS_LOGIKA.pdf
ANALÍZIS Gyakorlat 2 – Halmazalgebra, Számossággal kapcsolatos feladatok, Relációk, függvények, Korlátos számhalmazok
I. Halmazalgebra feladatok
Legyenek A, B, C halmazok. Bizonyítsuk be azonosságokat! Komplementum képzés, halmazműveletek és ekvivalenciák
...
...
II. Néhány feladat számossággal kapcsolatban
Egy faluban 1000 ház van. Ezek közül 250-ben van autó, 900-ban hűtőszekrény, 950-ben TV, 990-ben rádió. Legalább hány házban van mind a négy eszköz?
...
...
III. Korlátos számhalmazok
Határozza meg halmazok supremumát és infimumát. Korlátos halmazok vizsgálata, maximális és minimális elemek keresése
...
...
GYAK2.pdf
I. Extra Halmazalgebra
Legyenek A, B, C halmazok. Bizonyítsuk be azonosságokat! Komplementum képzés, halmazkülönbség és Venn-diagramok tetszőleges számú halmazzal
...
...
II. Egy extra feladat számossággal kapcsolatban
Négy halmaz uniójának számossága: befoglaló-kizáró elv alkalmazása négy halmazra kiterjesztve
...
...
GYAK2_EXTRA.pdf
ANALÍZIS Gyakorlat 3 – Komplex számok, Vektoralgebra
I. Komplex számok átalakításai
Hozzuk algebrai alakra a kifejezéseket és adjuk meg az abszolút értéküket! Komplex számok hatványozása és n-dik gyök meghatározása
...
...
II. Komplex számokkal kezelhető geometriai feladatok
Sokszögeknek komplex számokkal megadjuk néhány csúcsát. Határozzuk meg a hiányzó csúcsokat! Szabályos háromszög, négyzet, ötszög és paralelogramma
...
...
III. Komplex gyökű egyenletek
Határozzuk meg az egyenletek gyökeit a komplex számok körében. Lineáris, másodfokú, harmadfokú és negyedfokú egyenletek megoldása
...
...
GYAK3.pdf
Elméleti összefoglaló — Komplex impedancia
Komplex impedancia alapjai a villamosmérnökségben. Váltakozó áramú áramkörök Z = R + jX reprezentációja, reaktív elemek és fázisviszonyok
...
...
Induktivitás és kapacitás komplex leírása
Induktivitás ZL = jωL és kapacitás ZC = -j/ωC. Energiatárolás mágneses és elektromos térben, fáziseltolások és energiafolyamatok
...
...
Példa feladat 1 — Labor táplálási ág impedanciája
230 Veff, 50 Hz-es labor-táplálási ágban három soros szakasz impedanciája. Kábel, PFC egység és EMI-szűrő komplex számítása
...
...
GYAK3_EXTRA.pdf
ANALÍZIS Gyakorlat 4 – Analitikus térgeometria, egyenesek és síkok megadása, Távolságok és szögek, Numerikus sorozatok I.
I. Analitikus térgeometria, egyenesek és síkok megadása
Tetraéder térfogatszámítása, síkok metszéspontja, egyenesek paraméteres és paraméter nélküli egyenletrendszere különböző feltételekkel
...
...
II. Távolságok, szögek
Egyenesen lévő pontok távolsága síktól, síkok távolsága egymástól, síkok illeszkedése egyenesre és pontok távolságszámítása
...
...
GYAK4.pdf
I. Analitikus térgeometria, egyenesek és síkok megadása
Egyenesek merőleges vektorokra, síkok metszésvonalaival párhuzamos egyenesek, síkok illeszkedése egyenesekre és merőlegesség feltételei
...
...
II. Távolságok, szögek
Z tengelyen lévő pont egyenlő távolságra síkoktól, pont távolsága egyenestől, metszésvonalak és síkok közötti szögek koszinusza
...
...
GYAK4_EXTRA.pdf
ANALÍZIS Gyakorlat 5 – Numerikus sorozatok II.
Numerikus sorozatok konvergenciája
Konvergensek-e az alábbi sorozatok? Ha igen, mi a határértékük? Sorozatok an-tól mn-ig különböző típusokkal: racionális törtfüggvények, faktoriálisok, gyökök
...
...
Növekedési rend összehasonlítása
1 ≪ ln n ≪ n^α ≪ n^k ≪ n^k ln^m n ≪ a^n ≪ n! ≪ n^n (n → ∞). Sorozatok határértékének meghatározása a növekedési rend alapján
...
...
GYAK5.pdf
Numerikus sorozatok konvergenciája (Extra)
Konvergensek-e az alábbi sorozatok? Ha igen, mi a határértékük? Sorozatok An-tól On-ig különböző típusokkal: hatványfüggvények, gyökfüggvények, exponenciális függvények
...
...
Növekedési rend összehasonlítása (Extra)
1 ≪ ln n ≪ n^α ≪ n^k ≪ n^k ln^m n ≪ a^n ≪ n! ≪ n^n (n → ∞). További komplex sorozatok határértékének meghatározása
...
...
GYAK5_EXTRA.pdf
ANALÍZIS Gyakorlat 7 – Függvény határértéke, folytonossága, szakadási helyek vizsgálata
I. Függvény határértéke definíció alapján
Epsilon-delta definíció alkalmazása határértékek bizonyítására. Konkrét számítások delta meghatározásához adott epsilon értékekre
...
...
II. Függvény határértéke átalakításokkal
Határértékek számítása algebrai átalakításokkal. Végtelen határértékek, racionális függvények és oldali határértékek vizsgálata
...
...
III-IV. Szakadási helyek és folytonosság
Függvény szakadási helyeinek vizsgálata abszolút értékkel és exponenciális függvényekkel. Paraméterek megválasztása folytonossághoz
...
...
GYAK7.pdf
I. Függvény határértéke definíció alapján
Végtelen határértékek epsilon-delta definíciója. Racionális függvények és nevezőben nullává váló kifejezések vizsgálata
...
...
II. Függvény határértéke átalakításokkal
Komplex határértékek gyökfüggvényekkel, binomiális kifejezésekkel és végtelen határértékekkel. Gyökös kifejezések racionalizálása
...
...
III-IV. Szakadási helyek és folytonosság (Extra)
Racionális függvények szakadási helyei és exponenciális függvények folytonossága. Paraméterek meghatározása folytonossághoz abszolút értékfüggvénynél
...
...
GYAK7_EXTRA.pdf
ANALÍZIS Gyakorlat 8 – Függvény határértéke
I. Korlátos zárt halmazon folytonos függvények
Van-e megoldása az x⁵ - 18x + 2 = 0 egyenletnek [-1, 1]-ben? Folytonos függvény húrjainak hosszúsága zárt intervallumon
...
...
II. Trigonometrikus, hiperbolikus függvények és inverzeik
Határértékek számítása trigonometrikus és hiperbolikus függvényekkel: sin, cos, tan, arctan, sinh, cosh függvények
...
...
GYAK8.pdf
I. Korlátos zárt halmazon folytonos függvényekből még 2 példa
Felveszi-e az f(x) = x³/4 - sin(πx) + 3 függvény a 73 értéket a [-2, 2] intervallumon? Egyenletes folytonosság vizsgálata
...
...
II. Extra trigonometrikus, hiperbolikus függvények és inverzeik
További határértékek arcsin és arctan függvényekkel. Paraméterek hatása a határértékekre
...
...
III. Unaloműző hiperbolikus függvény addíciós tételek
Igazoljuk a hiperbolikus függvények addíciós tételeit: sh(x + y) és ch(x + y) képletei
...
...
GYAK8_EXTRA.pdf
ANALÍZIS Gyakorlat 9 – Korlátos zárt halmazon folytonos függvények, Trigonometrikus, hiperbolikus függvények és inverzeik
I. Deriválás, értelmezési tartomány, folytonosság
Az értelmezési tartomány mely pontjaiban deriválhatóak az alábbi függvények? Gyökfüggvények és összetett függvények deriválása
...
...
II-III. Érintőegyenes és síkgörbe
Függvény érintőegyenesének egyenlete adott pontban: sin√x függvény. Síkgörbe érintőegyenese: x³ + y³ - 6xy = 0 görbe
...
...
IV. Paraméteres feladatok
Parabola érintése x tengelyhez, harmadfokú függvény érintési feltételei és folytonos, mindenütt deriválható függvény paraméterinek meghatározása
...
...
GYAK9.pdf
I. Deriválás, értelmezési tartomány, folytonosság (Extra)
További deriválási feladatok paraméterekkel: gyökfüggvények, összetett függvények és trigonometrikus függvények deriválása
...
...
II-III. Érintőegyenes és síkgörbe (Extra)
Harmadfokú és exponenciális függvények érintőegyenesei. Síkgörbék érintői: implicit függvények és körök
...
...
IV. Extra paraméteres feladat
Origón átmenő egyenes, amely érinti az x² - 4x + y² + 3 = 0 görbét. Érintési feltételek meghatározása
...
...
GYAK9_EXTRA.pdf
ANALÍZIS Gyakorlat 10 – Deriválás, Érintőegyenessel kapcsolatos feladatok, Deriválás gyakorlása, logaritmikus deriválás, Magasabbrendű deriváltak
I. Unalmasabb L'Hospital szabály blokk
Alapvető 0/0 és ∞/∞ típusú határértékek: ln x/(x-1), exponenciális és trigonometrikus függvények kombinációi
...
...
II. Kicsit érdekesebb L'Hospital szabály blokk
Logaritmikus és exponenciális függvények határértékei: ln x²/√x, x ln sin x, összetettebb 0·∞ típusú határértékek
...
...
III. Nehezebb L'Hospital szabály blokk
Komplex határértékek: x²e^x, 1/x - 1/(e^x-1) és 1/x^(sin x) típusú kifejezések megoldása
...
...
GYAK10.pdf
I. Nem túl izgalmas, de tanulságos L'Hospital szabály feladat
Exponenciális függvények összetett határértéke: xe^(x/2)/(e^x + x) végtelen határértéknél
...
...
II. Még 3 nehezebb L'Hospital
Komplex határértékek: 1/ln x - 1/(x-1), (sin x)^x és (1 + x)^(ln x) hatványfüggvény típusú határértékek
...
...
GYAK10_EXTRA.pdf
ANALÍZIS Gyakorlat 11 – Középérték tételek, l’Hospital-szabály
I. Függvényvizsgálat
Teljes függvényvizsgálat három függvényre: x⁶ - 3x⁴ + 3x² - 1, x²e^(1/x) és x√(16 - x²). Értelmezési tartomány, deriváltak, szélsőértékek, inflexiós pontok
...
...
II. Szélsőértékek meghatározása
Abszolút szélsőértékek zárt intervallumokon: f(x) = x³ + 6x² - 15x + 3 a [-6, 6] és f(x) = x² ln x az [1, e] intervallumon
...
...
GYAK11.pdf
I. Extra függvényvizsgálatos feladat
Teljes függvényvizsgálat: F(x) = x - 2 arctan(x/(x+1)). Összetett inverz trigonometrikus függvény elemzése
...
...
II. Szélsőértékek meghatározása plusz két feladat
G(x) = xe^(-x) szélsőértékei a [1/2,∞] intervallumon és két függvény távolságának minimuma: x² és x³ függvények távolsága a [0,1] intervallumon
...
...
GYAK11_EXTRA.pdf
ANALÍZIS Gyakorlat 12 – Teljes függvényvizsgálat, Szélsőértékek meghatározása, Taylor-formula, Egyszerűbb határozatlan integrálok
I. Közelítés Taylor-polinomokkal
Számítsuk ki cos 0,2-t 3 tizedesjegy pontossággal! √102 és e^0,1 közelítése Taylor-polinomokkal megadott pontossággal
...
...
II. Egyszerűbb határozatlan integrálok
Határozatlan integrálok számítása: racionális törtfüggvények, exponenciális függvények, trigonometrikus helyettesítések és összetett függvények
...
...
GYAK12.pdf
I. Közelítés Taylor-polinomokkal plusz példák
Bizonyítsuk be, hogy ha x > 0, akkor sinh x > x + x³/3! sin x Taylor-polinomja x₀ = π/6-hoz tartozó 3-ad fokú maradéktaggal
...
...
II. Még néhány egyszerűbb határozatlan integrál
További integrálok: ln²x/x, trigonometrikus kifejezések gyökökkel, másodfokú nevezők és sin²x cos³x típusú integrálok
...
...
GYAK12_EXTRA.pdf
ANALÍZIS Gyakorlat 13 – Parciális integrálás, Helyettesítési integrálás, Racionális törtfüggvények, illetve arra vezető helyettesítések
ANALÍZIS Gyakorlat 14 – Határozott integrál
I. Görbék által bezárt korlátos térrész meghatározása
Területszámítás görbék között: y = x² és y = 1 - x² görbék, racionális és gyökfüggvények által bezárt területek meghatározása
...
...
II. Görbék megadott intervallumon való hosszának meghatározása
Ívhossz számítása a képlettel: s = ∫√(1 + (f'(x))²) dx. Parabola és logaritmikus függvény ívhossza adott intervallumon
...
...
III. Forgástest térfogatának meghatározása
Forgástest térfogat képlet: V = π ∫ (f(x))² dx. Trigonometrikus függvény forgatásával keletkező test térfogata
...
...
GYAK14.pdf
I. Görbék által bezárt korlátos térrész meghatározása (Extra)
További területszámítási feladatok: √x + √y = 1 és x + y = 1 görbék, valamint y = ln x és y = ln²x logaritmikus függvények által bezárt területek
...
...
II. Görbe megadott intervallumon való hosszának meghatározása (Extra)
Ívhossz számítása további példákkal: y = x^(3/2) hatványfüggvény ívhossza a [0, 4] intervallumon
...
...
III. Forgástestek térfogatának meghatározása (Extra)
További forgástest térfogatok: logaritmikus függvény és y = √(1 + x²) függvény forgatásával keletkező testek térfogata
...
...
GYAK14_EXTRA.pdf
IPA Labor 1 – Bevezetés, Preprocesszorok, Adattípusok, Alapvető I/O
#include <stdio.h>
#define PI 3.14159
#define jegy 5
#define pontosvesszo ;
int main(void) {
int egesz, Egesz;
float lebegopontos;
char nagykarakter = 'A';
printf("TAROLASI MERETEK:\n");
double lebegopontosabb = (double)339 / 108;
scanf_s("%lf", &lebegopontosabb);
int clear;
while ((clear = getchar()) != '\n');
}
main.c
1. Feladat: Numerikus alapok és hengerfelület
Kérj be egy unsigned int db darabszámot (db≥1), valamint két unsigned double értéket: h [m] és R [m]
...
...
2. Feladat: Típusok és kiírási formátumok
Kérj be egy tetszőleges egész számot, majd a 256-tal vett maradékát töltsd egy char változóba
...
...
3. Feladat: Lokalizáció és beolvasás
Add hozzá a könyvtárat, és hívd meg: setlocale(LC_ALL, "").
...
...
4. Feladat: Bemeneti puffer és hibakeresés
Breakpointokkal vizsgáld meg, mi történik különféle bemenetek esetén a scanf() és a getchar() használatakor
...
...
5. Feladat: Karakter és szám ASCII-kód vizsgálata
Kérjen be a felhasználótól egy egész számot, majd írja ki, hogy az milyen ASCII-karakternek felel meg.
...
...
l1_gyakorlok.pdf
Ctrl+F / Ctrl+H
Keresés / Csere
Ctrl+K, C / Ctrl+K, U
Komment ki/be
Ctrl+K, D
Dokumentum formázása
Ctrl+Space
IntelliSense
Ctrl+.
Quick Actions
F5 / Ctrl+F5
Futtatás debug-gal / debug nélkül
F9 / F10 / F11
Breakpoint / Step Over / Step Into
VS 2022 C/C++ gyorsbillentyűk
IPA Labor 2 – Függvények, Matematikai műveletek, Feltételes szerkezetek, Bitműveletek
#define _USE_MATH_DEFINES
#define PI 3.14159
#include <math.h>
#include <locale.h>
#define DUPLA(x) x*2
int main(void){
setlocale(LC_ALL, "");
double szamolas = pow(sin(M_PI / 3), (double)2 / 3);
int a = 10, b = 20;
a ^= b;
b ^= a;
a ^= b;
}
main.c
1. Feladat: Másodfokú megoldóképlet & nevezetes esetek
Kérj be három double együtthatót: a, b, c, melyek az a x² + b x + c = 0 polinomhoz tartoznak...
...
...
2. Feladat: Középérték-választó betű alapján
Kérj be három double számot: x, y, z. Ezután kérj be egy char jelölőt: A, H, G/M, K...
...
...
3. Feladat: Háromszög oldalakból – terület, szögek, típus
Kérj be három double értéket: a, b, c. Először vedd mindegyik abszolút értékét fabs()-szal...
...
...
4. Feladat: Bitműveletek demó – &,|,^, ~, eltolások
Kérj be két unsigned int számot a, b (célszerű 0..255 tartományban tesztelni)...
...
...
5. Feladat: Idő beolvasása óra:perc formában & ellenőrzés
Kérd be a pontos időt ora:perc alakban scanf_s("%i:%i", &ora, &perc) segítségével...
...
...
l2_gyakorlok.pdf
IPA Labor 3 – Időkezelés, Véletlenszám-generálás, Ciklusok, Intervallumfelezés, Karaktervezérelt menü
#include <conio.h>
#include <time.h>
#include <stdlib.h>
int main() {
time_t ido;
ido = time(NULL);
double ora = (double)ido / 3600;
double nap = ora / 24;
double ev = nap / 365;
printf("1970 jan 1 ota eltelt %lli mp,
vagyis kb %4.1f ev\n\n", ido, ev);
srand((unsigned int)ido);
int kocka = rand() % 6 + 1;
double normalt = (double)rand() / RAND_MAX;
}
main.c
1. Feladat: Számkitalálós játék
Készíts egy játékot, amely srand(time(NULL)) után sorsol egy egész számot az [1;100] tartományból...
...
...
2. Feladat: Polinomértékek & előjelváltás keresése
Olvasd be egy harmadfokú polinom együtthatóit: a, b, c, d és egy intervallumot [A; B]...
...
...
3. Feladat: Integrálközelítés a 2. feladat polinomjára
A 2. feladat polinomját használd, és ugyanazon [A; B] intervallumon becsüld meg az integrál értéket...
...
...
4. Feladat: ASCII alapú NEPTUN-kód generátor
Generálj véletlen 6 hosszú kódot, amely az A-Z nagybetűk és a 0-9 számjegyek karaktereiből áll...
...
...
5. Feladat: Dobókocka statisztika & csillagos hisztogram
Kérd be a dobások számát N (N > 0). srand(time(NULL)) után szimulálj N db dobást...
...
...
l3_gyakorlok.pdf
IPA Labor 4 – For Ciklus, Statikus Tömbök, Hibalehetőségek, 2D Tömbök, Buborékrendezés
#define tombmeret 5
int main() {
setlocale(LC_ALL, "");
srand((unsigned int)time(NULL));
int kezd_ev = 1970,
aktualis_ev = 2025,
szokoevek_szama = 0;
for (int kezd_ev = 1970;
kezd_ev < aktualis_ev;
kezd_ev++) {
if (kezd_ev % 4 == 0) {
szokoevek_szama++;
...
}
}
}
main.c
1. Feladat: Téglalapok egy 2D tömbben
Készíts egy N×2 egész tömböt, ahol minden sor egy téglalap két oldalát tartalmazza...
...
...
2. Feladat: Prímdöntés és osztóvizsgálat
Olvass be egy pozitív egész n-t. Döntsd el for ciklussal, hogy n prím-e...
...
...
3. Feladat: n×2×2 mátrixok determinánsa és gyökvizsgálat
Hozz létre egy n×2×2 egész tömböt és töltsd fel számokkal (pl. -9..9)...
...
...
4. Feladat: 3×3 mátrixok – determináns és egy sajátérték becslése
Készíts k darab 3×3 mátrixot, töltsd fel egész számokkal. Számold ki a determinánst, a nyomot és a másodfokú főminort...
...
...
5. Feladat: Tömbstatisztika & gyakorisági hisztogram (0..100)
Olvass be N darab (0≤érték≤100) egész számot egy tomb[N] tömbbe. Számold ki min, max, átlag értékeket...
...
...
l4_gyakorlok.pdf
IPA Labor 5 – Pointerek, Memóriacím, Precedencia, Dinamikus És Többdimenziós Tömbök
#include <stdlib.h> // malloc-hoz
int main(void) {
printf("c értéke: %i\n\
\rc címe &c=%p\n\
\rpointer által mutatott ...: %i\n\
\rpointer által mutatott cím=%p\n\
\rpointer címe: &p=%p\n\n",
c,
&c,
*p,
p,
&p);
int* p_int1; // Első tömb
p_int1 = (int*)malloc(10 * sizeof(int));
}
main.c
1. Feladat: Szökőévek száma for-ciklussal
Írd meg a szökőévek számlálását a [1970; 2024] intervallumban. Szabály: ha év mod 4 = 0 akkor szökő...
...
...
2. Feladat: Statikus tömbök, feltöltés és buborékrendezés
Hozz létre egy int tarolo[10] tömböt, töltsd fel rand() értékekkel, majd írd ki előre és visszafelé is...
...
...
3. Feladat: Véges pontosság – 0.1 + 0.2 és 0.3 összehasonlítása
Számold ki double típussal: a = 0.1 + 0.2, b = 0.3. Hasonlítsd össze fabs(a-b) és egy kis epsilon alapján...
...
...
4. Feladat: Integrálközelítés (trapézszabály)
Legyen három választható függvény: f_1(x), f_2(x), f_3(x) az alábbiak szerint...
...
...
5. Feladat: Véletlen harmadfokú polinom és gyök keresése
Generálj véletlen egész együtthatókat a, b, c, d a [-25; 25] tartományból úgy, hogy a ≠ 0...
...
...
l5_gyakorlok.pdf
IPA Labor 7 – 1. Zárthelyi dolgozat
IPA Labor 8 – Függvények, Paraméterátadás, Rekurzió, Struktúrák, Saját Fejlécek
#include "fuggvenyek.h"
#include "strukturak.h"
int main(void) {
köszönés();
lehessenek_ekezetek();
srand((unsigned int)time(NULL));
int tomb10[10];
int tomb25[25];
int_tomb_random_feltoltes
(tomb10, 10, -50, 50);
int_tomb_random_feltoltes2
(tomb25, 25, -50, 50);
int_tomb_kiiratas(tomb10, 10);
}
main.c
#pragma once
void köszönés() {
printf("Hello!\n\n");
}
void puffer_torles() {
int clear;
while ((clear = getchar()) != '\n');
}
unsigned long long faktorialis_sima(int n) {
…
}
unsigned long long faktorialis_rekurziv(int n) {
...
}
fuggvenyek.h
#pragma once
struct civil {
int igazolvanyszam,
eletkor;
double karizma,
ero,
intelligencia;
};
strukturak.h
1. Feladat: Statisztika függvény tömbre
Írj egy statisztika függvényt, ami egy double tömbre kiszámítja és kiírja: átlag, szórás, medián, minimum, maximum...
...
...
2. Feladat: Véletlen mátrix generálása paraméterekkel
Írj függvényt, amely két egész paramétert kap (rows, cols) és létrehoz egy rows × cols méretű mátrixot...
...
...
3. Feladat: Binomiális együttható iteratív és rekurzív
Írj két függvényt a binomiális együtthatóra: egy iteratív és egy rekurzív megoldást...
...
...
4. Feladat: Anyagi pont mozgása (struktúrákkal)
Hozz létre struct Vec2 { double x,y; }; és struct Pont { Vec2 p, v; }; típusokat...
...
...
5. Feladat: Numerikus integrálás (trapéz, & függvénymutató)
Írj egy double integrate(double (*f)(double), double a, double b, int n) függvényt...
...
...
l8_gyakorlok.pdf
IPA Labor 9 – Karaktertömbök, C Stringek és Alapvető Stringfüggvények
#include <string.h>
int main(void) {
setlocale(LC_ALL, "");
char string[] =
"Tegnap este programoztam";
char* dinam_string1 =
(char*)malloc(101 * sizeof(char));
gets_s(dinam_string1, 101); // Pl. Pelda Bence
char* dinam_string2 =
(char*)malloc(101 * sizeof(char));
memset(dinam_string2, 0,
101 * sizeof(char));
fgets(dinam_string2, 101 * sizeof(char),
stdin); // pl. Pelda Eper - \n-t is beolvassa
...
}
main.c
1. Feladat: Névkezelés struktúrákkal
Írj programot, amely ékezet nélküli neveket kér be és 2D karaktertömbben tárolja...
...
...
2. Feladat: Vers beolvasása és magánhangzó számlálás
Készíts programot, amely \n-enként tördelve képes beolvasni egy verset egy 2D karaktertömbbe...
...
...
3. Feladat: Számok feldolgozása
Készíts programot, amely szóközzel elválasztott számokból álló char[] stringet olvas be...
...
...
4. Feladat: Sztring visszafelé és szócsere
Készíts programot, amely visszafelé kiír egy char[] stringet. Írj függvényt, amely kicseréli egy sztring első és utolsó szavát...
...
...
5. Feladat: Szavakhoz tartozó számok előjelváltása
Készíts char[] stringet, amely szavakból és számokból áll (pl. alma 12 körte -7 barack 0)...
...
...
l9_gyakorlok.pdf
IPA Labor 10 – Fájlkezelés, Stringműveletek, Memóriakezelés
#define bemenetnev "minta.csv"
#define kimenetnev "kimenet.csv"
#define inputnev "input.txt"
#define outputnev "output.txt"
FILE *be, *ki;
int main(void) {
char* buffer = (char*)malloc(100),
*mutato, *kovetkezo;
if (buffer == NULL) {
printf("Memória foglalási hiba!\n");
return -1;
}
...
}
main.c
0,01;0;0
0,02;0;0
0,03;0;0
0,04;0,23;0,000003386
0,05;0,14;0,00000245
0,06;0,08;0,000001382
0,07;0,06;0,000001235
0,08;0,04;0,000000819
0,09;0,01;0,000000073
0,1;0;0
0,11;0;0
0,12;0;0
0,13;0,15;0,000049433
0,14;0,12;0,000039514
0,15;0,11;0,000040838
0,16;0,1;0,00004096
0,17;0,11;0,000059447
0,18;0,13;0,000098561
0,19;0,2;0,00027436
0,2;0,25;0,0005
minta.csv
Szerda délután szeretek programozni laboron.
13523 9832 821 8942 83 1 0 0 0 1232
#&&@@[]]ˇ^°˘°~ˇ˘˘`˘°˛˘^˘^ˇ.,.-.,<>#
G4DT8N
HLKR3B
BFF21A
SZTM4P
FZS631
JOE123
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
szép.
input.txt
1. Feladat: Egészek feldolgozása szövegfájlban
Adott egy .txt fájl, amelyben soronként tetszőleges darab egész szám szerepel szóközzel elválasztva...
...
...
2. Feladat: Tördeld a szöveget megadott szélességre
Egy nagyon hosszú, egyetlen soros fájlt tördelj új sorokra 20 karakterenként...
...
...
3. Feladat: Egyszerű szóelválasztó
Írj primitív szóelválasztó programot magyar szavakhoz. Szabályok: két egymást követő mássalhangzó között választható el...
...
...
4. Feladat: Hangrend meghatározása
Írj programot, amely eldönti egy beírt szóról, hogy magas, mély vagy vegyes hangrendű...
...
...
5. Feladat: Szó kiemelése mondatban
Kérj be egy mondatot és külön egy szót. Ellenőrizd, hogy a szó teljes szóként (szóhatárok között) előfordul-e a mondatban...
...
...
l10_gyakorlok.pdf
IPA Labor 11 – Vizsgakérdések, Bináris Fájlok, Programtervezés, Kódoptimalizálás
#include <time.h> // clock_t
int main(void) {
errno_t err;
err = fopen_s(&fp, "output.txt", "w");
if (err != 0) {
perror("output.txt megnyitása sikertelen");
exit(EXIT_FAILURE);
}
for (int i = 0; i < iteraciok; i++) {
fputs(text, fp);
}
fclose(fp);
clock_t start, stop;
start = clock();
stop = clock();
}
main.c
Diasor
Vizsgakérdések + egyéb (archiválva)
1. Feladat: Szöveg → szöveg másolás + statisztika
Olvass be egy tetszőleges szöveges fájlt soronként fgets segítségével. Írd át egy új fájlba úgy, hogy minden sor elejére sorszámot írsz...
...
...
2. Feladat: Egész számok írása/olvasása TXT és bináris módban
Generálj N darab int értéket (pl. 0..N-1). Írd ki őket szövegként fprintf(fp_txt, "%d\n", i), majd olvasd vissza és ellenőrizd az összeget...
...
...
3. Feladat: Naplófájl készítése (append mód)
Hozz létre egy log.txt fájlt, amelyet minden futáskor "a" vagy "a+" módban nyitsz meg...
...
...
4. Feladat: Fix hosszúságú rekordok binárisan
Kérj be 10 darab (név, pont) párt, ahol a név legfeljebb 31 karakter (C-string), a pont int...
...
...
5. Feladat: Szöveg nagybetűsítése fájlban
Olvass be egy input.txt fájlt bájtonként fgetc segítségével. Írj egy upper.txt kimeneti fájlt...
...
...
l11_gyakorlok.pdf
IPA Labor 12 – 2. ZH Gyakorlás, Alap Algoritmusok, Rekurzió
#include <Windows.h>
#include <fuggvenyek.h>
#define BUFFMERET 128
typedef struct {
char rendszam[7];
int evjarat;
}Auto;
FILE* be, * ki;
char inputfajl1[] = "input_autok1.txt";
char inputfajl2[] = "input_autok2.txt";
int main(void) {
char buffer[BUFFMERET];
while (!feof(be)) { ... }
}
main.c
#pragma once
void puffer_torles() { ... }
void nagybetu_kisbetu(char* buffer) {
char* poz = 0;
while (
(poz = strpbrk(buffer, "ABCDEFGHIJKLMNOPQRSTUVWXYZ"))
)
{ *poz += 32; }
}
double statisztika(double* tomb, ...) { ... }
fuggvenyek.h
ABC123 1969
DEF456 2001
GHI789 2009
JKL101 1980
MNO112 1990
input_autok1.txt
ABC123 1969 HHH666 2001
ASD911 2009 JKL101 1980 MNO112 1990
input_autok2.txt
IPA Labor 14 – 2.Zárthelyi dolgozat