Kalkulator macierzy

0

Witam. :)
Robię właśnie kalkulator macierzy - projekt na zaliczenie.
Mam już taki fragment kodu:

template<class TYP>
class Macierz {
private:
    int m;
    int n;

protected:
    TYP **el;

public:
    Macierz(int m,int n)
        : m(m), n(n) {
        el = new TYP *[m];
        for(int i=0;i<m;i++)
            el[i] = new TYP[n];
    }
    Macierz(int m)
        : m(m), n(m) {
        el = new TYP *[m];
        for(int i=0;i<m;i++)
            el[i] = new TYP[m];
    }

    Macierz(const Macierz &macierz)
        : m(macierz.m), n(macierz.n) {
        el = new TYP *[m];
        for(int i=0;i<m;i++)
            el[i] = new TYP[n];
        for(int i=0;i<m;i++)
            for(int j=0;j<n;j++)
                el[i][j] = macierz.el[i][j];
    }

    ~Macierz() {
        for(int i=0;i<m;i++)
            delete [] el[i];
        delete [] el;
    }

    int getM() { return m; }
    int getN() { return n; }

    void wpisz() {
        for(int i=0;i<m;i++)
            for(int j=0;j<n;j++)
                cin >> el[i][j];
    }
    void wypisz() {
        for(int i=0;i<m;i++) {
            for(int j=0;j<n;j++)
                cout << el[i][j] << "   ";
            cout << endl;
        }
    }

    Macierz operator+(const Macierz macA) {
        if((m == macA.m) && (n == macA.n)) {
            Macierz<TYP> macB(m,n);
            for(int i=0;i<m;i++)
                for(int j=0;j<n;j++)
                    macB.el[i][j] = macA.el[i][j] + el[i][j];
            return macB;
        }
        else {
            cout << "Rozmiary macierzy nie sa poprawne!" << endl;
            Macierz<TYP> mac(0,0);
            return mac;
        }
    }

    Macierz operator*(const Macierz macA) {
        if(n == macA.m) {
            Macierz<TYP> macB(m,macA.n);
            for(int i=0;i<macB.m;i++) {
                for(int j=0;j<macB.n;j++) {
                    TYP suma = 0;
                    for(int k=0;k<n;k++)
                        suma += el[i][k] * macA.el[k][j];
                    macB.el[i][j] = suma;
                }
            }
            return macB;
        }
        else {
            cout << "Rozmiary macierzy nie sa poprawne!" << endl;
            Macierz<TYP> mac(0,0);
            return mac;
        }
    }

    Macierz operator*(TYP stala) {
        Macierz<TYP> macB(m,n);
        for(int i=0;i<m;i++)
            for(int j=0;j<n;j++)
                macB.el[i][j] = stala * el[i][j];
        return macB;
    }

    Macierz<TYP> transponuj() {
        Macierz<TYP> macB(n,m);
        for(int i=0;i<m;i++)
            for(int j=0;j<n;j++)
                macB.el[j][i] = el[i][j];
        return macB;
    }
};

W zadaniu postawiono wymagania: min. 7 klas, w tym 5 ułożonych w logiczną hierarchię.
Powinienem rozbić moją klasę Macierz na kilka klas, np. Dodawanie, Mnozenie, etc.?
Czy może jakoś inaczej mam ułożyć klasy w "logiczną hierarchię"?

0

Trzymaj w głowie, że kalkulator macierzy nie składa się wyłącznie z macierzy.

Btw, lq code.

0
spartanPAGE napisał(a):

Trzymaj w głowie, że kalkulator macierzy nie składa się wyłącznie z macierzy.

Btw, lq code.

Co to znaczy "lq code"?
I jak mam rozumieć to, że kalkulator macierzy nie składa się wyłącznie z macierzy? Masz na myśli że wektory też nim będziemy liczyć? :)

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