Commit e11a4f92 by Szeberényi Imre

ecodings

parent 9af1298d
Ebben a feladatban 3 függvényt és egy sablont kell elkészítenie a specifikációknak megfelelően.
Töltse le a feladathoz előkészített teljes könyvtárat a tantárgy Git tárolójából git kliens használatával, vagy akár
más eszközzel a [https://git.ik.bme.hu/Prog2/ell_feladat/Nem_OO](https://git.ik.bme.hu/Prog2/ell_feladat/Nem_OO) címről!
más eszközzel a [https://git.ik.bme.hu/Prog2/ell\_feladat/Nem\_OO](https://git.ik.bme.hu/Prog2/ell_feladat/Nem_OO) címről!
**Feladatok:**
1. Valósítsa meg a _nem\_oo.h_ állományban deklarált függvényeket (_atoi()_, _strcat()_, _unique()_), melyek hasonlóan működnek, mint az azonos nevű szabványos függvények, de nem pontosan ugyanúgy. A függvények paramétereit és elvárt működését a _nem\_oo.h_ fájlban adtuk meg.
2. A _max.hpp_ fájlban valósítson meg a _sajat_ névtéren belül egy olyan sablont, ami alaptípusok esetén a paraméterként kapott érték közül a nagyobbat adja.
2. A _max.hpp_ fájlban valósítson meg a **sajat** névtéren belül egy olyan sablont, ami alaptípusok esetén a paraméterként kapott érték közül a nagyobbat adja.
3. Specializálja a sablont a _nem\_oo.h_ állományban deklarált _sajat::Komplex_ típusra úgy, hogy a nagyobb abszolút értékű Komplex számot adja vissza! Az abszolút érték kiszámításához használhatja a _sajat_ névtérben definiált _absKomplex_ inline függvényt.
4. Ellenőrizze a megvalósított függvények és sablonok működését a _nem\_oo\_test.cpp_ tesztprogrammal!
Csak az elkészített **nem\_oo.cpp** és **max.hpp** fájlokat kell feltöltenie a portálra.
A _memtrace.h_ és _memtrace.cpp_ fájlok a memóriakezelés teszteléséhez szükségesek. Nem kell megértenie a működésüket!
**Javaslat:**
**Javaslatok, és amire figyelni kell:**
- Fontos, hogy a megvalósítandó függvényeket a megfelelő **névtérben** definiálja.
- Fontos, hogy a megvalósítandó függvényeket a megfelelő **névtérben** definiálja.
- A **using namespace valami** elérhetővé teszi a valami névtér neveit _scope_ operátor nélkül, de ettől nem keletkezik minden definíció/deklaráció a valami névtérben!
- Az _atoi()_ megvalósításakor ügyeljen arra, hogy csak helyes számot fogadjon el!
- Helyes számjegysorozat végét white space, vagy sztring vége ('\0') jelzi. Minden más karakter előfordulása hiba.
- Szintén hiba, ha a számjegysorozatban olyan számjegy, vagy betű fordul elő, ami nem érvényes az adott számrendszerben. B számrendszerben a B számjegy már nem fordulhat elő!
- **Hiba** esetén dobjon **const char\*** típusú kivételt, melynek értéke az Ön **Neptun azonosítója** legyen!
- Használja a [Horner-elrendezést](https://hu.wikipedia.org/wiki/Polinom) a szám (polinom helyettesítési)
- **Hiba** esetén dobjon **const char\*** típusú kivételt, melynek értéke az Ön **Neptun azonosítója** legyen!
- Használja a [Horner-elrendezést](https://hu.wikipedia.org/wiki/Polinom) a szám (polinom helyettesítési)
értékének kiszámításához. Így elkerülheti a pow() használatát és n db szorzással és összeadással kiszámíthatja az értéket!
Például a decimális 346=((0\*10+3)\*10)+4)\*10+6, de a 3467=346\*10+7, azaz csak egy szorzással és egy összeadással több, és nem kellett tudni előre számjegek számát sem.
Például a decimális 346=((0\*10+3)\*10)+4)\*10+6, de az egy számjegy hozzáfűzésével keletkező 3467=346\*10+7, azaz csak egy szorzással és egy összeadással több, és nem kellett tudni előre számjegek számát sem.
- Először mindenképpen oldja meg a feladatot a saját környezetében. A Jporta pontosan ugyanazt a tesztprogramot futtatja, amit letöltött a Git tárolóból. Egyedüli különbség, hogy a CPORTA makró definiált.
- ELképzelhető olyan durva memóriahiba, amit az operációs rendszer csíp meg. Ilyenkor a Jportán 11-es megállási státus jelenik meg, ami azt jelenti, hogy a program illegális memóriaműveletet próbált végezni, amit az OS azonnali megállítással jutalmazott.
- Ügyeljen arra, hogy a **using namespace valami;** azt teszi lehetővé, hogy scope operátor használata nélkül is elérhetjük a valami névtér neveit, de ez nem jelenti azt, hogy mostantól minden definíció a valami névtérben keletkezik!
- ELképzelhető olyan durva memóriahiba, amit az operációs rendszer csíp meg. Ilyenkor a Jportán 11-es megállási státus jelenik meg, ami azt jelenti, hogy a program illegális memóriaműveletet próbált végezni, amit az OS azonnali megállítással jutalmazott.
**Szorgalmi feladat:**
......
......@@ -6,17 +6,17 @@
* ha a tovabbi kommentek nem olvashatok helyesen!)
*
*
* A C++ nem OO bvtseinek gyakorlshoz.
* A C++ nem OO bõvítéseinek gyakorlásához.
*
*
* FELADATOK:
* 2. Valstson meg EBBEN a fjlban, a Sajat nvtren bell egy olyan sablont, ami
* alaptpusok esetn a paramterknt kapott rtk kzl a nagyobbat adja.
* 3. Specializlja a sablont a nem_oo.h llomnyban deklarlt Komplex tpusra
* gy hogy a nagyobb abszolt rtk Komplex szmot adja vissza!
* 2. Valósítson meg EBBEN a fájlban, a Sajat névtéren belül egy olyan sablont, ami
* alaptípusok esetén a paraméterként kapott érték közül a nagyobbat adja.
* 3. Specializálja a sablont a nem_oo.h állományban deklarált Komplex típusra
* úgy hogy a nagyobb abszolút értékû Komplex számot adja vissza!
*
* gyeljen a helyes nvtr hasznlatra!
* Tipp: Hasznlja a scope opertort, vagy nyisson nvteret!
* Ügyeljen a helyes névtér használatra!
* Tipp: Használja a scope operátort, vagy nyisson névteret!
*/
#include "nem_oo.h"
......
......@@ -3,7 +3,7 @@ Memoriaszivargas-detektor
Keszitette: Peregi Tamas, BME IIT, 2011
petamas@iit.bme.hu
Kanari: Szeberenyi Imre, 2013.
VS 2012: Szebernyi Imre, 2015.,
VS 2012: Szeberényi Imre, 2015.,
mem_dump: 2016.
meset felszabaditaskor: 2018.
*********************************/
......@@ -207,10 +207,10 @@ START_NAMESPACE
}
}
/* ha nincs hiba, akkor 0-val tr vissza */
/* ha nincs hiba, akkor 0-val tér vissza */
int mem_check(void) {
initialize();
if(dying) return 2; /* cmzsi hiba */
if(dying) return 2; /* címzési hiba */
if(registry.next) {
/*szivarog*/
......@@ -220,7 +220,7 @@ START_NAMESPACE
fprintf(fperror, "Szivargas:\n");
print_registry_item(registry.next);
registry.next = NULL;
return 1; /* memria fogys */
return 1; /* memória fogyás */
}
return 0;
}
......@@ -320,7 +320,7 @@ START_NAMESPACE
END_NAMESPACE
/*******************************************************************/
/* C-stlus memriakezels */
/* C-stílusú memóriakezelés */
/*******************************************************************/
#ifdef MEMTRACE_C
......@@ -414,7 +414,7 @@ END_NAMESPACE
#endif/*MEMTRACE_C*/
/*******************************************************************/
/* C++-stlus memriakezels */
/* C++-stílusú memóriakezelés */
/*******************************************************************/
#ifdef MEMTRACE_CPP
......@@ -431,7 +431,7 @@ START_NAMESPACE
void set_delete_call(int line, const char * file) {
initialize();
delete_call=pack(0,"",line,file); /*func rtke lnyegtelen, majd fellrjuk*/
delete_call=pack(0,"",line,file); /*func értéke lényegtelen, majd felülírjuk*/
delete_called = TRUE;
}
......@@ -488,7 +488,7 @@ void operator delete[](void * p) THROW_NOTHING {
}
/* Visual C++ 2012 miatt kell, mert hklis, hogy nincs megfelel delete, br senki sem hasznlja */
/* Visual C++ 2012 miatt kell, mert háklis, hogy nincs megfelelõ delete, bár senki sem használja */
void operator delete(void * p, int, const char *) THROW_NOTHING {
memtrace::traced_delete(p,FDELETE);
}
......
#include <cstring>
#include <cstring>
#include <cctype>
#include "nem_oo.h"
......
#ifndef NEM_OO_H
#ifndef NEM_OO_H
#define NEM_OO_H
/**
* \file nem_oo.h
......
......@@ -84,7 +84,7 @@ int main() {
int i1 = 10;
int i2 = 200;
#ifndef CPORTA
cout << "max(" << i1 << ", " << i1 <<")= "; /// KIÍRÁS: max(10, 200)=
cout << "max(" << i1 << ", " << i2 <<")= "; /// KIÍRÁS: max(10, 200)=
#endif // CPORTA
cout << sajat::max(i1, i2) << endl; /// KIÍRÁS: 200
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment