Commit fee99183 by Szeberényi Imre

v1

parent a9eb703a
......@@ -2,7 +2,7 @@
<CodeBlocks_project_file>
<FileVersion major="1" minor="6" />
<Project>
<Option title="nem_oo" />
<Option title="CppEllenallas" />
<Option pch_mode="2" />
<Option compiler="gcc" />
<Build>
......@@ -38,12 +38,9 @@
<Add option="-Wall" />
<Add option="-DMEMTRACE" />
</Compiler>
<Unit filename="max.hpp" />
<Unit filename="memtrace.cpp" />
<Unit filename="memtrace.h" />
<Unit filename="nem_oo.cpp" />
<Unit filename="nem_oo.h" />
<Unit filename="nem_oo_teszt.cpp" />
<Unit filename="resistor.cpp" />
<Unit filename="resistor.h" />
<Unit filename="resistor_test.cpp" />
<Extensions>
<code_completion />
<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)
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!
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.
Néhány kézenfekvő műveletet operátor túlterheléssel oldottunk meg.
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!
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
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.
Az Ön feladata a többi függvény megvalósítása a **resistor.cpp** állományban.
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
![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:
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.)
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 – 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:
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 [Ω].
Resistor operator+(const Resistor&) const – soros kapcsolás operátora.
Resistor operator%(const Resistor&) const – párhuzamos kapcsolás operátora.
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.
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!
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 **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)
**Megj:**
......
/**
* \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
*/
......
#ifndef _RESISTOR_H
#define _RESISTOR_H
#define NO_STATIC
/**
* \file resistor.h
* (UTF-8 kodolasu fajl. Allitsa at a megjenetes kodolasat,
* ha a tovabbi kommentek nem olvashatok helyesen!)
*
* Ohmikus ellenállás
*/
#define NO_STATIC
class Resistor {
double R; // az ellenállás értéke ohmban
#ifndef NO_STATIC
......@@ -15,16 +20,16 @@ class Resistor {
#endif
public:
/// Kontstruktor.
/// Konstruktor.
/// R alapértelmezett értéket (defR-t) kap
Resistor();
/// Kontstruktor.
/// Konstruktor.
/// @param r - ellenállás értéke [ohm]
Resistor(double r);
#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]
static void setDef(double r);
#endif
......@@ -37,20 +42,20 @@ public:
/// Két ellenállás soros kapcsolása.
/// @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;
/// Két ellenállás párhuzamos kapcsolása.
/// @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;
};
/// 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
/// @return - eredõ ellenállás
/// @return - eredőként létrejövő ellenállás
Resistor operator*(int n, const Resistor& r);
#endif // _RESISTOR_H
......
/**
* \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
*
* Néhány ellenállás összekapcsolása, az elvárt eredmények megjegyzésben.
*/
#include <iostream>
......@@ -59,7 +64,7 @@ int main()
cout << "Építsünk örökmozgót!" << endl;
}
catch (const char *s) {
cout << s << endl; // dobott kivétel
cout << s << endl; // dobott kivétel
}
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