# Многомерни масиви
## Двумерни масиви.
```c++
int matrix1[3][4]; // създава се матрица с 3 реда и 4 колони
int arr[3][4] = { { 1, 2, 3, 4 }, { 9, 8, 7, 6 }, { 11, 12, 13, 14 } }; // изреждаме редовете
int matrix3[3][4] = { 1, 2, 3, 4, 9, 8, 7, 6, 11, 12, 13, 14 }; // изреждаме елементите
int matrix4[][4] = { 1, 2, 3, 4, 9, 8, 7, 6, 11, 12, 13, 14 }; // можем да изпуснем най-лявата спецификация на дължина
```

### Достъп до елемент.
```c++
int* row = arr[1]; //ред 1 (масивът на индекс 1)
std::cout << arr[2][0]<< std::endl //11;
std::cout << row[2]<< std::endl //7;
```
### Примери с n-мерни масиви.
```c++
int cube[3][3][3]; // създава се тримерен масив
```
### Достъп до елемент.
```c++
cube[2] // двумерен масив;
cube[2][1] // едномерен масив;
cube[2][1][4] // конкретен елемент;
```
Примерна имплементация на:
- Играта tic-tac-toe с поле NxN, произволна дължина на линията и произволен брой играчи.
Задачи
**Задача 1:** Напишете функция, която приема матрица NxN и транспонира матрицата.
**Задача 2:** Напишете функция, която приема матрица NxN и проверява дали релацията, която представлява матрицата, е релация на еквивалентност.
**Задача 3:** Напишете функция, която приема матрица NxM и матрица MxK и умножава първата матрица по втората.
**Задача 4:** Напишете функция, която приема матрица NxN и връща обратната матрица (ако дадената е обратима). Ако матрицата не е обратима, да се отпечата подходящо съобщение.
**Задача 5:** Напишете функция, която приема матрица NxN+1 и решава системата от линейни уравнения, репрезентирана в матрицата.
*Вход*:
3 2 5 0
2-3 4 10
2 1 1 4
*Изход: 4, -11.14, -12.85*
Тук се решава системата:
-3x + 2y - 5z = 0
2x - 3y + 4z = 10
2x + y + z=4
Тя има решение: x = 14, y = -78/4 (-11.14), z = -90/7 (-12.85).
Важно!
Програмата трябва да засича, ако системата няма решение или има безкраен брой решения и да отпечата подходящо съобщение в този случай.
## Проект: Мinesweeper
Да се реализира в **конзолна** играта **Мinesweeper**.
Целта на играта е да се разкрият всички квадратчета, които не съдържат мини , без да щракнем върху мина преди това. Разположението на мините може да се разбере логически, с помощта на цифрички, стоящи се на местата на квадратчетата след щракане върху тях. Цифрите показват колко квадратчета, в които има мини, има в съседство. Ако се щракне върху квадратче, което няма мини (стои числото 0) в съседство, то разкрива съседните, ако някое от тези разкрити също няма мини в съседство, то също разкрива съседните квадратчета и тн...

[Онлайн версия на играта](http://minesweeperonline.com/#)
**Забележка: От вас не се изисква създаването на графичен интерфейс. Играта трябва да бъде конзолна апликация.**
В конзолата трябва да изпълнявате команди от вида:
> [command] [x coordinate] [y coordinate]
Където [command] е **open**, **mark** или **unmark**, а след него стоят координатите на квадратчето.
- **open** - отваря квадратчето. Ако там седи мина - край на играта!
- **mark** - маркира квадратчето като "мина". Ако всички мини са маркирани
и всички други квардратчета са отворени, играта прилкючва с успех!
- **unmark** - отмаркира квадрачето като "мина". Ако квадратчето не е било
маркирано, то се извежда подходящо съобщение за грешка.
При започването на играта, потребителят трябва да може да избере на каква размерност да играе (3 <= N <= 10). След това трябва да избере колко мини да бъдат "скрити".
Броят трябва да е в интервала [1, 3N]. Ако някои от стойностите не са въведат правилно от потребителя, то трябва да се изведе подходящо съобщение и да бъде "приканен" да въведе отново.
Краен срок: