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
l1_gyakorlok.pdf
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
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
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
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;
2034.csv
l5_gyakorlok.pdf
OOP Labor 6 – 1. Zárthelyi gyakorló labor
zh1_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.ipynb
l1_gyakorlok.pdf
PYTHON Labor 2 – Logikai műveletek, Elágazás
PYTHON Labor 3 – While ciklus, Randomszám generálás
PYTHON Labor 4 – List és tuple használata, For ciklus, Range
PYTHON Labor 5 – Lista szeletelése, Iterátorok
PYTHON Labor 6 – 1. Zárthelyi gyakorló labor
zh1_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
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
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 szerepe:
Az előadások elméleti hátteret biztosítanak a matematikai fogalmak és tételek megalapozásához.
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: EGYEZTETÉS ALATT
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ások.
2. zárthelyi: EGYEZTETÉS ALATT
Témája: Valós függvények határértéke, folytonossága. Differenciálszámítás alkalmazásokkal.
Pót/javítózárthelyi: EGYEZTETÉS ALATT
Témája: az 1., illetve a 2. zárthelyivel megegyező.
Pót-pótzárthelyi
Időpont: EGYEZTETÉS ALATT
Anyaga, időtartama az 1. vagy a 2. zárthelyivel 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, és a zárthelyi megírása különeljárási díj kifizetésével 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 eredménnyel megírt zárthelyiket javítani lehet. Ugyanaz a dolgozat szolgál javításra és pótlásra is pótlás/javítás idején, és az egész hétvégén együttes átlaga a pót-pótzárthelyiń.
Vizsgajegy
Csak a jelenlétű 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, akkor az aláírást megtagadjuk.
Aláírást elnyert hallgató sikeres (legalább 50%-os) vizsga után kaphat jegyet, amit a két zárthelyin elért eredmények átlaga határoz meg.
p =
p₁ + p₂ + 2v
4
átlaga határoz meg a következő táblázat szerint:
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ó.
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
ANALÍZIS Gyakorlat 2 – Halmazalgebra, Számossággal kapcsolatos feladatok, Relációk, függvények, Korlátos számhalmazok
Hamarosan...
ANALÍZIS Gyakorlat 3 – Komplex számok, Vektoralgebra
Hamarosan...
ANALÍZIS Gyakorlat 4 – Analitikus térgeometria, egyenesek és síkok megadása, Távolságok és szögek, Numerikus sorozatok I.
Hamarosan...
ANALÍZIS Gyakorlat 5 – Numerikus sorozatok II.
Hamarosan...
ANALÍZIS Gyakorlat 6 – Numerikus sorozatok III.
Hamarosan...
ANALÍZIS Gyakorlat 8 – Függvény határértéke
Hamarosan...
ANALÍZIS Gyakorlat 9 – Korlátos zárt halmazon folytonos függvények, Trigonometrikus, hiperbolikus függvények és inverzeik
Hamarosan...
ANALÍZIS Gyakorlat 10 – Deriválás, Érintőegyenessel kapcsolatos feladatok, Deriválás gyakorlása, logaritmikus deriválás, Magasabbrendű deriváltak
Hamarosan...
ANALÍZIS Gyakorlat 11 – Középérték tételek, l’Hospital-szabály
Hamarosan...
ANALÍZIS Gyakorlat 12 – Teljes függvényvizsgálat, Szélsőértékek meghatározása, Taylor-formula, Egyszerűbb határozatlan integrálok
Hamarosan...
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
Hamarosan...
ANALÍZIS Gyakorlat 14 – Határozott integrál
Hamarosan...
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
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