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
język C++ macierze
-
- 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
proponuję zacząć tak:
i wtedy np. dodawanie:
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
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();
};
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;
}
Oczywiście standardowo kodu nie sprawdzałem, mój post to duża podpowiedź, a nie gotowy program