2. úkol: Knihovna pro práci s maticemi - deadline 31.12.2017 23:59

Základní idea

Představme si, že pracujeme na programu, který provádí výpočty na maticích celých čísel a na základě pozorování jeho chování jsme zjistili, že:

Rozhraní

Základním objektem programu je třída mat, je možné s ní pracovat pomocí následujících metod:

Hodnocení

Celkový počet bodů za úkol je 25, přičemž až 20 je možné získat za splnění základního zadání. Dalších 5 bodů lze získat za splnění jednoho z níže uvedených rozšíření

Základní zadání (20 bodů)

Rozšíření (5 bodů)

Vyberte si jedno z následujících rozšíření:

  1. Vytvořte třídu mat jako šablonu, tedy template <typename T> mat (použití: mat<float> fMat(3,3);), kde T může být libovolný číselný typ. Můžete tedy očekávat, že na něm budou všechny potřebné aritmetické operace a bude možné na něj implicitně zkonvertovat např. 0 a 1.
  2. Vyberte si dvě z operací uvedených níže a zoptimalizujte je s využitím běhového polymorfismu. U binárních operací dejte pozor na to, že polymorfní může být levý i pravý operand. Operace:

Testovací vstupy

Níže přiložený program by se měl v pořádku zkompilovat a úspěšně v Debug režimu proběhnout, aniž by byl porušen jakýkoliv assert:

Poznámky