Pierścień wielomianów nad dowolnym ciałem

0

Witam... musze napisać program oto moje zadanie: "Pierścień wielomianów jednej zmiennej nad dowolnym ciałem, wyznaczanie pochodnej, całki oznaczonej, wyszukiwanie miejsc zerowych, dzielenie wielomianów z resztą itp." no i nie ukrywam że problem się pojawił przy "dowolnym ciele"... prof powiedział że: "ezeli korzysta Pani z szablonow to oczywiscie wystarcza rzeczywiste i zespoone (wtedy uzytkownik jak bedzie chcial doimplementuje sobie dowolne cialo)"; pierwszy problem to czy jak zobie tak że jako klase szablonowa dam Wielomian to czy w niej mam umieścić kod np metody całkuj dla obu tych typów(czyli R i C)czy mam te metody umieścić w klasach LiczbyZespolone???

0

imho, jesli cialo ma byc 'wymienne', wielomian byc szablonem lub proxy

idea:

struct CialoX
{
    typedef xxxx element;
    static element dodaj(element, element);
    static element odejmij(element, element);
    static element pomnoz(element, element);
    static element podziel(element, element);
    static element zerowy;
    static element neutralny;
};

struct CialoR { .. };
struct CialoC { .. };

template<CL> class Wielomian
{    typedef CL::element elem;

     vector<elem> wspolczynniki;
     elem wartosc_w_punkcie(elem);
};

template<CL> CL::element calkowanie(Wielomian<CL::element> wielomian, CL::element od, CL::element do)
{
    elem tmp = CL::zerowy;
    for(elem x = od; x<do; CL::dodaj(x, 1) )
        tmp = CL::dodaj(tmp, wielomian.wartosc_w_punkcie(x));
    return tmp;
};

edit:
oczywiscieeee podana implementacja 'calkowania' jest debilna, bledna i w ogole. pokazuje tylko jak np. mozna zaprojektowac klasy Ciala, wielomianu. prawidlowa implementacja wymaga obliczenia calki nieoznaczonej z podanego wielomianu, a nastepnie podstawienia do niej granic calkowania i obliczenia calki oznaczonej. to, co chcialem pokazac to to, ze TRZEBA uzywac dodawania/mnozenia/etc zdefiniowanego w ciele. przyklad nazywa te operacje explicite, CialoX zawiera metodyo podanych nazwach - ale rownie dobrze mozna to zrobic porpzez zdefiniowanie roznych klas 'elementow' i przeciazaniu ich operatorow +-*/, a elementy zerowe/neutralne moga byc statycznymi polami w klasie elementy

0

Napisałam to tak...problem się pojawił przy dzidziczeniu klasy CialoR czyli liczb rzcezywistych po klasie CaloC czyli po zespolonoych.

Zobacz kod źródłowy

jak ktoś bedzie miał jakiś pomysł to bardzo prosze o pomoc...

0

nie mialem czasu sie wgryzac, wiec na razie odnosnie pierwszego 'buczacego' komentarza:

        CialoC& operator=(const CialoC W){//tuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
....
CialoR& operator=(const CialoR W){//tuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

operator= raczej zwykl pobierac parametr przez const& a nie przez const-value

a jaki byl konkretny blad kompilacji?

btw. implementacje tych operatorow skrocilbym do:

        CialoC& operator=(CialoC const & toDrugie)
    {
        Rzeczyw = toDrugie.Rzeczyw;
        Urojona = toDrugie.Urojona;
        return *this;
    };
...
        CialoR& operator=(CialoR const & toDrugie)
    {
        CialoC::operator=(toDrugie);
        return *this;
    };

nie ma potrzeby dostarczac nowego operatora skoro bazowy sie tym zajmie poprawnie [toDrugie jest typu CialoR wiec jego .urojona przeciez i tak jest rowniez zerem]

0

[CIACH- z watku o linkowaniu szablonow]... zrobiłąm pliki naglowkowe... dołączyłam do pliku głównego no ale jak próbuje to skompilować to mi wywal bła linkera że funkce których używam są nie zdefiniowane... czyli tak jakby nie mógł znaleźć ich kody chyba.... jak mam sobie z tym poradzić??? mam coś gdzieś jeszcze dopisywać?

I tak zwykle klasy mi linkuje ładnei bez problemu ale mam jedną szablonową no i jej nie może praogram ogarnąć... nie jestem jakimś specjalista w tej dziedzinie ...

mam program główny i powiedzmy trzy klasy Cialo, CialoC i Wielomiany... i w plikach naglowkowych mam same deklaracje "Cialo.h, CialoC.h i Wielomiany.h a ich definicje mam w oddzielnch plikach .cpp . no i wszystko łądnie połaczone dyrektywami #include... wielomian jest klasa szablonową. no to taki główny zarys problemu.[/CIACH]

0

no w sumie nie wpadłam na to z operatorem "="; funkcje zajmujace się doawaniem itd zrobiłąm jako zaprzyjażźnione bo wtedy wszystko jest ok z dziedziczeniem w R po C... nie udało mi się dojść do tego dlaczego tam mi coś nie działało... wiec pozmianiałam wszystko... ale dzięki za cenne uwagi :) przydadząsie :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1