język C++ macierze

olak87
Użytkownik
Użytkownik
Posty: 136
Rejestracja: 8 gru 2007, o 22:43
Płeć: Kobieta
Lokalizacja: wrocław
Pomógł: 2 razy

język C++ macierze

Post autor: olak87 »

Zad 1. Utwórz klasę macierz reprezentującą macierz jednowymiarową. Klasa powinna
zawierać metody implementujące typowe operacje na macierzach (dodawanie
macierzy lub stałej, odejmowanie macierzy lub stałej, mnożenie przez stałą).

mam problem z tym zadaniem wogole mi cos nie wychodzi, moze ma ktos jakis pomysl
spajder
Użytkownik
Użytkownik
Posty: 735
Rejestracja: 7 lis 2005, o 23:56
Płeć: Mężczyzna
Lokalizacja: Łódź
Podziękował: 2 razy
Pomógł: 133 razy

język C++ macierze

Post autor: spajder »

proponuję zacząć tak:

Kod: Zaznacz cały

template<class C> class Macierz
{
    private:
        std::valarray<C> elementy;
    public:
        Macierz();
        Macierz(Macierz&);
        Macierz(*T);

        Macierz& dodaj(Macierz&);
        Macierz& odejmij(Macierz&);
        Macierz& mnoz(Macierz&);
        void wypisz();
};
i wtedy np. dodawanie:

Kod: Zaznacz cały

template<class C>Macierz<C>& Macierz<C>::dodaj(Macierz<C>& m)
{
    int rozm1 = this.elementy.size();
    int rozm2 = m.elementy.size();
    C zero = 0;

    this.elementy.resize(rozm2);
    for(int i = 0; i < rozm1 && i < rozm2; i++)
        this.elementy[i] += m.elementy[i];

    return this;
}
jeśli nie chcesz robić tego generycznie tylko na konkretnych typach, po prostu wywal wszędzie C i wstaw co tam chcesz (double, int czy coś innego). Trzy konstruktory tworzą macierz pustą, kopiują utworzoną już macierz i tworzą macierz z tablicy elementów (tak wstawiłem, bo chyba to rozsądne). Odejmowanie będzie praktycznie tak samo jak dodawanie, mnożenie jeszcze prostsze, bo nie trzeba bawić się w zmianę rozmiaru.

Oczywiście standardowo kodu nie sprawdzałem, mój post to duża podpowiedź, a nie gotowy program
ODPOWIEDZ