#pragma once const double precision = 1E-15; // точность сравнения вещественных чисел // Ввод двумерного массива c клавиатуры (элементы вводятся по строкам) // Двумерный массив хранится как плотный (одномерный массив, элементы по строкам) // Перегруженная функция read_new. Параметры: // a - указатель на начало одномерного массива, // rows - количество строк матрицы m, // cols - количество столбцов матрицы m. void read_new(double* &a, size_t &rows, size_t &cols); // Ввод двумерного массива c клавиатуры (элементы вводятся по строкам) // Двумерный массив хранится как разреженный (двумерный массив) // Перегруженная функция read_new. Параметры: // m - указатель на начало двумерного массива (матрицы), // rows - количество строк двумерного массива (матрицы) m, // cols - количество столбцов двумерного массива (матрицы) m. void read_new(double** &m, size_t &rows, size_t &cols); // Освобождение памяти занимаемой двумерным массивом, который хранится как разреженный // Функция delete_matrix. Параметры: // m - указатель на начало двумерного массива (матрицы), // rows - количество строк двумерного массива (матрицы) m, // cols - количество столбцов двумерного массива (матрицы) m. // для cols задано значение по умолчанию void delete_matrix(double** &m, const size_t rows, const size_t cols = 0); // Вывод одномерного массива на консоль в виде матрицы // Двумерный массив хранится как плотный (одномерный массив) // Перегруженная функция print. Параметры: // a – указатель на начало одномерного массива, // rows - количество строк для вывода, // cols - количество элементов в строке. void print(const double * a, const size_t rows, const size_t cols); // Вывод матрицы (двумерного массива) на консоль // Двумерный массив хранится как разреженный (двумерный массив) // Перегруженная функция print. Параметры: // m – указатель на начало двумерного массива (матрицы), // rows - количество строк для вывода, // cols - количество элементов в строке. void print(double const* const* m, const size_t rows, const size_t cols); // Проверка, что одномерный массив состоит из нолей // Функция is_zeros. Параметры: // a – указатель на начало одномерного массива, // len – размер одномерного массива, // precision – точность сравнения вещественных чисел. // для precision задано значение по умолчанию // Возвращаемое значение: // true, если все элементы равны нолю. bool is_zeros(const double * a, const size_t len, const double precision = ::precision); // Проверка, что в матрице есть нолевой столбец // Двумерный массив хранится как плотный (одномерный массив) // Перегруженная функция has_zero_col. Параметры: // a – указатель на начало одномерного массива, // rows - количество строк матрицы, // cols - количество столбцов матрицы, // precision – точность сравнения вещественных чисел. // для precision задано значение по умолчанию // Возвращаемое значение: // true, если существует столбец из нолей. bool has_zero_col(const double *a, const size_t rows, const size_t cols, const double precision = ::precision); // Проверка, что в матрице есть нолевой столбец // Двумерный массив хранится как разреженный // Перегруженная функция has_zero_col. Параметры: // m – указатель на начало двумерного массива (матрицы), // rows - количество строк матрицы, // cols - количество столбцов матрицы, // precision – точность сравнения вещественных чисел. // для precision задано значение по умолчанию // Возвращаемое значение: // true, если существует столбец из нолей. bool has_zero_col(double const* const* m, const size_t rows, const size_t cols, const double precision = ::precision); // Проверка, что в матрице есть нолевая строка // Двумерный массив хранится как плотный (одномерный массив) // Перегруженная функция has_zero_row. Параметры: // a – указатель на начало одномерного массива, // rows - количество строк матрицы, // cols - количество столбцов матрицы, // precision – точность сравнения вещественных чисел. // для precision задано значение по умолчанию // Возвращаемое значение: // true, если существует строка из нолей. bool has_zero_row(const double *a, const size_t rows, const size_t cols, const double precision = ::precision); // Проверка, что в матрице есть нолевая строка // Двумерный массив хранится как разреженный // Перегруженная функция has_zero_row. Параметры: // m – указатель на начало двумерного массива (матрицы), // rows - количество строк матрицы, // cols - количество столбцов матрицы, // precision – точность сравнения вещественных чисел. // для precision задано значение по умолчанию // Возвращаемое значение: // true, если существует строка из нолей. bool has_zero_row(double const* const* m, const size_t rows, const size_t cols, const double precision = ::precision);