Informatika2-2013/Hazi09

A MathWikiből

kezdeti file

A feladat egy olyan osztály megírása ami tárolja a számolásunkat. (Kezdeti file elsõ sorban link.) Van egy szam adattagja, melyben az értékét tárolja és egy szamolas adattagja (ez egy string) melyben az eddigi számolás menetét tárolja.

Erre egy példa:

a = Szamol(5.0)
b = Szamol(6.0)
 
d = a * b
 
print d.szam  # 30.0
print d.szamolas  # (5.0 * 6.0)

A precedenciával sokat nem kell törõdnünk ezt a python tudja magától.

A függvények amiket meg kell írni (nem kell megijedni, hogy ilyen sok, hisz ha megvan az __add__, a többi mûvelet csak egy-két karakterben tér el tõle):

  • __init__(self, szam): egy számot kap mellyel létrehozza a szam adattagot és a szamolas-t (a szamolas-hoz tanultuk, hogy az str függvény mindenféle dolgot string-é alakít és kezdetben a szamolas-ban csak az alap szam van benne string-ként)
  • __add__(self, jobboldal): az összeg megvalósítása
  • __sub__(self, jobboldal): a különbség megvalósítása
  • __mul__(self, jobboldal): a szorzás megvalósítása
  • __div__(self, jobboldal): a hányados megvalósítása
  • __pow__(self, jobboldal): a hatványozás megvalósítása
  • __repr__(self): hogy print-el szépen ki lehessen írni a számolásunkat, a következõ módon kell kinéznie:
a = Szamol(5.0)
b = Szamol(6.0)
 
d = a * b
 
print d  # (5.0 * 6.0) = 30.0

Tehát a szamolas adattag, utána egy egyenlõség és a szam adattag.

Amit ne felejtsünk el semmiképp, hogy a zárójeleket minden mûveletnél tegyük ki a szamolas-ba.

A kezdeti file-ban megadott tesztekre a teljes kimenet a következõ (ha ez egyezik akkor 99%, hogy jó a kódotok):

(5.0 + 6.0) = 11.0
(5.0 - 6.0) = -1.0
(5.0 * 6.0) = 30.0
(5.0 / 6.0) = 0.833333333333
(5.0 ** 6.0) = 15625.0
==========
(5.0 + (6.0 * 2.0)) = 17.0
((5.0 - 6.0) / 2.0) = -0.5
==========
((5.0 ** 5.7) + (((1.5 * 2.4) - 8.9) / 1.2)) = 9636.73743833
Személyes eszközök