Commit fee99183 by Szeberényi Imre

v1

parent a9eb703a
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<CodeBlocks_project_file> <CodeBlocks_project_file>
<FileVersion major="1" minor="6" /> <FileVersion major="1" minor="6" />
<Project> <Project>
<Option title="nem_oo" /> <Option title="CppEllenallas" />
<Option pch_mode="2" /> <Option pch_mode="2" />
<Option compiler="gcc" /> <Option compiler="gcc" />
<Build> <Build>
...@@ -38,12 +38,9 @@ ...@@ -38,12 +38,9 @@
<Add option="-Wall" /> <Add option="-Wall" />
<Add option="-DMEMTRACE" /> <Add option="-DMEMTRACE" />
</Compiler> </Compiler>
<Unit filename="max.hpp" /> <Unit filename="resistor.cpp" />
<Unit filename="memtrace.cpp" /> <Unit filename="resistor.h" />
<Unit filename="memtrace.h" /> <Unit filename="resistor_test.cpp" />
<Unit filename="nem_oo.cpp" />
<Unit filename="nem_oo.h" />
<Unit filename="nem_oo_teszt.cpp" />
<Extensions> <Extensions>
<code_completion /> <code_completion />
<envvars /> <envvars />
......
A Git tárolóból letölthető [https://git.ik.bme.hu/Prog2/ell_feladat/CppEllenallas](https://git.ik.bme.hu/Prog2/ell_feladat/CppEllenallas) A Git tárolóból letölthető [https://git.ik.bme.hu/Prog2/ell_feladat/CppEllenallas](https://git.ik.bme.hu/Prog2/ell_feladat/CppEllenallas)
fájlok felhasználásával hozzon létre a lokális fejlesztőkörnyezetében egy projektet! fájlok felhasználásával hozzon létre a lokális fejlesztőkörnyezetében egy C++ projektet!
Tanulmányozza a letöltött állományokat! Tanulmányozza a letöltött állományokat!
A **Resistor** osztály egy elektromos ellenállás leegyszerűsített működését szimulálja. A **Resistor** osztály egy elektromos ellenállás leegyszerűsített működését szimulálja.
Az osztályt a **resistor.h** állományban deklaráltuk. Az osztályt a **resistor.h** állományban deklaráltuk. Néhány tagfüggvényt inline tagfüggvényként (\*1) meg is valósítottunk.
Néhány kézenfekvő műveletet operátor túlterheléssel oldottunk meg. Az Ön feladata a többi függvény megvalósítása a **resistor.cpp** állományban.
Az Ön feladata a _resistor.h_ állományban deklarált nem inline tagfüggvények(\*1) megvalósítása a **resistor.cpp** állományban, úgy hogy
a **resistor\_test.cpp** fájl leforduljon és jól működjön! Modellünkben az ellenállások soros/párhuzamos összekapcsolásakor egy új ellenállás jön létre a kapcsolásnak megfelelő eredő ellenállással.
Az ellenállások összekapcsolását túlterhelt operátorokkal valósítjuk meg. A soros kapcsolást a + operatorral, míg párhuzamos kapcsolást a % operátorral. Soros kapcsoláskor az eredő ellenállás a két ellenállás összege, míg a párhuzamosan kapcsolt ellenállások eredője a két ellenállás replusza, vagyis
Két ellenállás összege alatt sorba kötést értünk, vagyis az eredő ellenállás a kettő összege.
Két ellenállás párhuzamos kapcsolását a % operátorral jelöljük. Párhuzamosan kapcsolt ellenállások eredője a két ellenállás replusza, vagyis
![R\_{{A\%B}}=\frac{{1}}{{\frac{{1}}{{R\_A}} +\frac{{1}}{{R\_B}}}}](https://jporta.iit.bme.hu/exercise/18/view/12/file) ![R\_{{A\%B}}=\frac{{1}}{{\frac{{1}}{{R\_A}} +\frac{{1}}{{R\_B}}}}](https://jporta.iit.bme.hu/exercise/18/view/12/file)
A konstruktorokon és a destruktoron kívül a következő tagfüggvényeket deklaráltuk: A konstruktorokon és a destruktoron kívül a következő tagfüggvényeket deklaráltuk:
void setDef(double) - a paraméter nélkül hívott konstruktor ezzel az ellenállásértékkel hozza létre az objektumot (ld. *2 megj.) void setDef(double) - alapérték beállítása. A paraméter nélkül hívott konstruktor ezzel az ellenállásértékkel hozza létre az objektumot (ld. \*2 megj.).
double getR() const – (eredő) ellenállás lekérdezése [Ω] double getR() const – (eredő) ellenállás lekérdezése [Ω].
Resistor operator+(const Resistor&) const – soros kapcsolás operátora Resistor operator+(const Resistor&) const – soros kapcsolás operátora.
Resistor operator%(const Resistor&) const – párhuzamos kapcsolás operátora Resistor operator%(const Resistor&) const – párhuzamos kapcsolás operátora.
Van még egy többszörös-operátor is, amely n darab egyforma sorosan kapcsolt r ellenállás
eredőjét képzi:
Resistor operator*(int n, const Resistor& r) Van még egy többszörös-operátor is, amely n darab egyforma sorosan kapcsolt r ellenállás eredőjét képzi:
Resistor operator\*(int n, const Resistor& r)
Valósítsa meg a hiányzó függvényeket úgy, hogy jól működjön az osztály a **resistor\_test.cpp** tesztprogrammal. Valósítsa meg a hiányzó függvényeket a specifikációnak megfelelően! A megvalósítást a **resistor\_test.cpp** tesztprogrammal ellenőrizze!
A * operátort úgy valósítsa meg, hogy nulla vagy negatív n esetén az Ön Neptun-kódját tartalmazó const char* típusú kivételt dobjon! A \* operátort úgy valósítsa meg, hogy nulla vagy negatív n esetén az Ön Neptun-kódját tartalmazó const char\* típusú kivételt dobjon!
A **defR** statikus adattagot úgy definiálja, hogy értéke **{resistor_value}Ω** legyen! A **defR** statikus adattagot úgy definiálja, hogy értéke a Jporta által megadott legyen legyen!
A definíciónál a **static** kulcsszót nem kell/szabad újra kiírni! (\*2) A definíciónál a **static** kulcsszót nem kell/szabad újra kiírni! (\*2)
**Megj:** **Megj:**
......
/** /**
* \file resistor.cpp * \file resistor.cpp
* (UTF-8 kodolasu fajl. Allitsa at a megjenetes kodolasat,
* ha a tovabbi kommentek nem olvashatok helyesen!)
*
* Ohmikus ellenállást modellező osztály megvalósítása * Ohmikus ellenállást modellező osztály megvalósítása
*/ */
......
#ifndef _RESISTOR_H #ifndef _RESISTOR_H
#define _RESISTOR_H #define _RESISTOR_H
#define NO_STATIC
/** /**
* \file resistor.h * \file resistor.h
* (UTF-8 kodolasu fajl. Allitsa at a megjenetes kodolasat,
* ha a tovabbi kommentek nem olvashatok helyesen!)
*
* Ohmikus ellenállás * Ohmikus ellenállás
*/ */
#define NO_STATIC
class Resistor { class Resistor {
double R; // az ellenállás értéke ohmban double R; // az ellenállás értéke ohmban
#ifndef NO_STATIC #ifndef NO_STATIC
...@@ -15,16 +20,16 @@ class Resistor { ...@@ -15,16 +20,16 @@ class Resistor {
#endif #endif
public: public:
/// Kontstruktor. /// Konstruktor.
/// R alapértelmezett értéket (defR-t) kap /// R alapértelmezett értéket (defR-t) kap
Resistor(); Resistor();
/// Kontstruktor. /// Konstruktor.
/// @param r - ellenállás értéke [ohm] /// @param r - ellenállás értéke [ohm]
Resistor(double r); Resistor(double r);
#ifndef NO_STATIC #ifndef NO_STATIC
/// Default ellenállásérték beállítása /// Alapértelmezett ellenállásérték beállítása
/// @param r - ellenállás értéke [ohm] /// @param r - ellenállás értéke [ohm]
static void setDef(double r); static void setDef(double r);
#endif #endif
...@@ -37,20 +42,20 @@ public: ...@@ -37,20 +42,20 @@ public:
/// Két ellenállás soros kapcsolása. /// Két ellenállás soros kapcsolása.
/// @param r - ellenállás /// @param r - ellenállás
/// @return - eredõ ellenállás /// @return - eredőként létrejövő ellenállás
Resistor operator+(const Resistor& r) const; Resistor operator+(const Resistor& r) const;
/// Két ellenállás párhuzamos kapcsolása. /// Két ellenállás párhuzamos kapcsolása.
/// @param r - ellenállás /// @param r - ellenállás
/// @return - eredõ ellenállás /// @return - eredőként létrejövő ellenállás
Resistor operator%(const Resistor& r) const; Resistor operator%(const Resistor& r) const;
}; };
/// Többszörös: n darab egyforma r ellenállás összege (soros kapcsolása). /// Többszörös: n darab egyforma r ellenállás összege (soros kapcsolása).
/// @param n - darabszám /// @param n - darabszám, ha n <= 0, akkor kivételt dob
/// @param r - ellenállás /// @param r - ellenállás
/// @return - eredõ ellenállás /// @return - eredőként létrejövő ellenállás
Resistor operator*(int n, const Resistor& r); Resistor operator*(int n, const Resistor& r);
#endif // _RESISTOR_H #endif // _RESISTOR_H
......
/** /**
* \file resistor_test.cpp * \file resistor_test.cpp
* (UTF-8 kodolasu fajl. Allitsa at a megjenetes kodolasat,
* ha a tovabbi kommentek nem olvashatok helyesen!)
*
* Ohmikus ellenállást modellező osztály kipróbálása * Ohmikus ellenállást modellező osztály kipróbálása
*
* Néhány ellenállás összekapcsolása, az elvárt eredmények megjegyzésben.
*/ */
#include <iostream> #include <iostream>
...@@ -59,7 +64,7 @@ int main() ...@@ -59,7 +64,7 @@ int main()
cout << "Építsünk örökmozgót!" << endl; cout << "Építsünk örökmozgót!" << endl;
} }
catch (const char *s) { catch (const char *s) {
cout << s << endl; // dobott kivétel cout << s << endl; // dobott kivétel
} }
return 0; return 0;
......
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