Search
V této úloze budete mít za úkol implementovat maticové operace sčítání, odčítání a násobení. Všechny prvky všech matic (i v průběhu výpočtu) se vejdou do 32-bitového znaménkového typu integer.
Pokud nebude vstup ve správném formátu nebo nepůjde provést příslušnou maticovou operaci, tak vypište “Error: Chybny vstup!” a konec řádku na standardní chybový výstup a ukončete program s návratovou hodnotou 100.
Error: Chybny vstup!
100
malloc()
calloc()
getline()
realloc()
Na standardním vstupu jsou pouze dvě matice s jednou operací (+,-,*). Vaším úkolem je provést zadanou operaci a vypsat na standardní výstup výslednou matici.
Na standardním vstupu jsou dvě matice (nebo v bonusovém zadání i více matic) oddělené jedním řádkem se znakem operace (+,-,*). Každá matice má na prvním řádku nejprve svoji velikost ($n$, $m$) a následuje $n$ řádků vždy s $m$ hodnotami matice. Jednotlivé hodnoty jsou oddělené mezerami, ale za poslední hodnotou je pouze znak nového řádku.
Formát výstupu je stejný, ale obsahuje pouze jednu matici. Nezapomeňte, že na konci řádku není mezera a i za posledním řádkem je znak nového řádku.
$ \left( \begin{array}{cc} 76 & 98 & -31 \\ 30 & 30 & 32 \end{array} \right) - \left( \begin{array}{c} 89 & 25 & 38 \\ 1 & -32 & -38 \end{array} \right) = \left( \begin{array}{c} -13 & 73 & -69 \\ 29 & 62 & 70 \end{array} \right) $
2 3 76 98 -31 30 30 32 - 2 3 89 25 38 1 -32 -38
2 3 -13 73 -69 29 62 70
$ \left( \begin{array}{cc} -59 & 78 & -85\end{array} \right) \times \left( \begin{array}{c} 78 \\ -28 \\ -97\end{array} \right) = \left( \begin{array}{c} 1459\end{array} \right) $
1 3 -59 78 -85 * 3 1 78 -28 -97
1 1 1459
2 3 16 41 -98 * 3 1 96 -67 49
$ \left( \begin{array}{cc} 81 & -96 & -56 & -9 \\ -19 & 66 & 37 & -21 \\ 20 & 49 & -71 & -49 \\ 45 & -96 & 20 & 8\end{array} \right) \times \left( \begin{array}{c} -89 & -96 \\ 76 & 75 \\ 65 & 2\end{array} \right) $
4 4 81 -96 -56 -9 -19 66 37 -21 20 49 -71 -49 45 -96 20 8 * 3 2 -89 -96 76 75 65 2
Na vstupu je sekvence matic o maximální délce 100 spolu se zadanými operacemi. Operace vyhodnocujte podle jejich priority a vypište až výslednou matici. To odpovídá tomu, jako kdyby byl následující výraz s maticemi A až F:
$$ A + B * C + D * E - F$$
ozávorkován následujícím způsobem:
$$ A + (B * C) + (D * E) - F$$
$ \left( \begin{array}{cc} 6 & 4\end{array} \right) + \left( \begin{array}{cc} -6 & 7\end{array} \right) + \left( \begin{array}{cc} -6 & -4\end{array} \right) = \left( \begin{array}{cc} -6 & 7\end{array} \right) $
1 2 6 4 + 1 2 -6 7 + 1 2 -6 -4
1 2 -6 7
$ \left( \begin{array}{cc} 0 & 4 & -9 \\ -9 & 6 & -4 \\ 3 & 5 & -2 \\ -1 & 7 & 5\end{array} \right) \times \left( \begin{array}{cc} -10 & -9 & -8 & 9 \\ -4 & 0 & -9 & 1 \\ 4 & 6 & -9 & 5\end{array} \right) + \left( \begin{array}{cc} 0 & -9 & 3 & -6 \\ 10 & -9 & 8 & -7 \\ -1 & 0 & 5 & 1 \\ 3 & 2 & -9 & 9\end{array} \right) = \left( \begin{array}{cc} -52 & -63 & 48 & -47 \\ 60 & 48 & 62 & -102 \\ -59 & -39 & -46 & 23 \\ 5 & 41 & -109 & 32\end{array} \right) $
4 3 0 4 -9 -9 6 -4 3 5 -2 -1 7 5 * 3 4 -10 -9 -8 9 -4 0 -9 1 4 6 -9 5 + 4 4 0 -9 3 -6 10 -9 8 -7 -1 0 5 1 3 2 -9 9
4 4 -52 -63 48 -47 60 48 62 -102 -59 -39 -46 23 5 41 -109 32
2 2 3 x10 -9 5 + 2 2 8 -5 1 8 + 2 2 -4 6 -2 8
$ \left( \begin{array}{cc} -1 \\ 4\end{array} \right) + \left( \begin{array}{cc} -1 \\ 0\end{array} \right) + \left( \begin{array}{cc} 8 & 5 \\ 10 & -8\end{array} \right) \times \left( \begin{array}{cc} 5 \\ 5\end{array} \right) = \left( \begin{array}{cc} 63 \\ 14\end{array} \right) $
2 1 -1 4 + 2 1 -1 0 + 2 2 8 5 10 -8 * 2 1 5 5
2 1 63 14
Veřejné příklady + Makefile: