Разрежённая матрица — это матрица с преимущественно нулевыми элементами. В противном случае, если бо́льшая часть элементов матрицы ненулевые, матрица считается плотной.
Среди специалистов нет единства в определении того, какое именно количество ненулевых элементов делает матрицу разрежённой. Разные авторы предлагают различные варианты. Для матрицы порядка n число ненулевых элементов:
Огромные разрежённые матрицы часто возникают при решении таких задач, как дифференциальное уравнение в частных производных.
При хранении и преобразовании разрежённых матриц в компьютере бывает полезно, а часто и необходимо, использовать специальные алгоритмы и структуры данных, которые учитывают разрежённую структуру матрицы. Операции и алгоритмы, применяемые для работы с обычными, плотными матрицами, применительно к большим разрежённым матрицам работают относительно медленно и требуют значительных объёмов памяти. Однако разрежённые матрицы могут быть легко сжаты путём записи только своих ненулевых элементов, что снижает требования к компьютерной памяти.
Составить программу на Си с процедурами и функциями для обработки прямоугольных разреженных матриц элементами комплексного типа, которая:
- Принимает на вход матрицы различного размера, представленные во входном текстовом файле в обычном формате(по строкам), с одновременных размещением ненулевых элементов в разреженной матрице в соответствии с заданной схемой.
- Печатает введенную матрицу в обычном виде и во внутреннем представлении согласно заданной схеме размещения.
- Выполняет необходимые преобразования разреженных матриц (или вычисления над ними) путем обращения к соответствующим процедурам и функциям.
- Печатает результат задания.
Найти строку, содержашую наибольшее количество ненулевых элементов, и напечатать ее номер и сумму элементов этой строки. Если таких строк несколько, обработать все.
Программа принимает на вход прямоугольную матрицу. Затем печатает матрицу в нормальном представлении. После этого во внутреннем представлении программы. А в конце печатает результат задания, очищает память от матрицы и заканчивает свою работу.
Скомпилировать программу можно командой make
и запустить командой ./start
. Далее необходимо ввести размер матрицы NxM и саму матрицу.