zpět
Vaším úkolem je vytvořit třídu reprezentující čtvercovou matici řádu 3. Vnitřně bude implementovaná pomocí jednorozměrného pole. Deklarace této třídy bude vypadat následovně:
class Matice
{
public:
Matice(int pole[3][3]);
void Vynasob(int x);
bool JeJednotkova();
bool JeNulova();
void Vypis();
private:
int data[9];
};
Stručný popis metod:
- Konstruktor - konstrukoru předáte dvourozměrné pole velikosti 3 x 3, které bude obsahovat prvky nově vytvořené matice. Prvky z dvourozměrného pole přepíše do pole jednorozměrného.
- Funkce Vynasob - všechny prvky matice vynásobi číslem předaným jako parametr.
- Funkce JeJednotkova - vrací logickou hodnotu true pokud je matice jednotkova (obsahuje jedničky na diagonále, ostatní prvky jsou nuly), v opačném případě vrací false.
- Funkce JeNulova - vrací logickou hodnotu true pokud je matice nulová (všechny prvky jsou nuly), jinak vrací false.
- Funkce Vypis - vypíše na standardní výstup matici v rozumném tvaru (pomocí mezer a odřádkování).
Třidu důkladně otestujte.
Dále můžete třídu modifikovat a zobecnit pro matici libovolného řádu (tato část již nebude bodovaná - slouží pro vaše další procvičení). Deklarace by mohla vypadat následovně:
class Matice
{
public:
Matice(int** pole, int rad);
void Vynasob(int x);
bool JeJednotkova();
bool JeNulova();
void Vypis();
~Matice()
private:
int* data;
int rad;
};
Místo statického pole velikosti 9 bude v privátní části ukazatel na pole prvků a číslo reprezentující řád matice. Funkce budou stejné, až na drobnou úpravu konstruktoru, a bude potřeba přidat destruktor.
- Konstruktor - konstrukoru předáte dvourozměrné pole přes ukazatel, které bude obsahovat prvky nově vytvořené matice, a řád této matice. Konstruktor vytvoří jednorozměrné dynamicky alokované pole potřebné velikosti a prvky do něj přepíše.
- Destruktor - postará se o uvolnění paměti (smazání dynamicky alokovaného pole).