- Матрица должна хранить только занятые элементы - значения которых хотя бы раз присваивались.
- Присвоение в ячейку значения по умолчанию освобождает ячейку.
- Необходимо уметь отвечать на вопрос - сколько ячеек реально занято?
- Необходимо уметь проходить по всем занятым ячейкам. Порядок не имеет значения. Возвращается позиция ячейки и ее значение.
- При чтении элемента из свободной ячейки возвращать значение по умолчанию.
- При запуске программы необходимо создать матрицу с пустым значением 0, заполнить главную диагональ матрицы (от [0,0] до [9,9]) значениями от 0 до 9.
- Второстепенную диагональ (от [0,9] до [9,0]) значениями от 9 до 0.
- Необходимо вывести фрагмент матрицы от [1,1] до [8,8].
- Между столбцами пробел.
- Каждая строка матрицы на новой строке консоли.
- Вывести количество занятых ячеек.
- Вывести все занятые ячейки вместе со своими позициями.
- Опционально реализовать N-мерную матрицу.
- Опционально реализовать каноническую форму оператора
=
, допускающую выражения
Matrix<int, -1> matrix;
((matrix[100][100] = 314) = 0) = 217;
Matrix<int, -1> matrix;
assert(matrix.size() == 0);
auto a = matrix[0][0];
assert(a == -1);
assert(matrix.size() == 0);
matrix[100][100] = 314;
assert(matrix[100][100] == 314);
assert(matrix.size() == 1);
// print one line
// 100100314
for(auto c: matrix)
{
for(auto value: c)
{
std::cout << value;
}
std::cout << std::endl;
}
// Operator's `=` canonical from
((matrix[100][100] = 314) = 0) = 217;
// print one line
// 100100217
for(auto c: matrix)
{
for(auto value: c)
{
std::cout << value;
}
std::cout << std::endl;
}
// N-arn matrix (N = 7)
matrix[1000][999][998][997][996][995][994] = 7777;
// print one line
// 1000 999 998 997 996 995 994 7777
for(auto c: matrix)
{
for(auto value: c)
{
std::cout << value << ' ';
}
std::cout << std::endl;
}
- индексация оператором
[]
- количество занятых ячеек должно быть 18 после выполнения примера выше
- Задание считается выполненным успешно, если после анализа кода, установки пакета и запуска приложения появился фрагмент матрицы, количество ячеек и список всех значений с позициями.
- mkdir build
- cd build
- cmake ../
- cmake --build . --config Release|Debug
- cmake --install .
- cmake --build . --target test --config Release|Debug
- cmake --build . --target RUN_TESTS --config Release|Debug
- cpack -C Release|Debug
- apt update && apt install -y matrix-0.0.X-Linux.deb
- ./matrix
- unzip matrix-0.0.X-win(64|32).zip
- matrix.exe