agentsclimarketplace

Реализация разреженной матрицы csr на c с динамическими массивам

Skill ECNU-ICALK/AutoSkill/SkillBank/ConvSkill/Russian/реализация-разреженной-матрицы-csr-на-c-с-динамическими-массивам

Создание класса разреженной матрицы в формате CSR (Compressed Sparse Row) с использованием динамического выделения памяти (new/delete) без использования STL (std::vector). Включает специфический алгоритм обхода матрицы для вывода положительных элементов в порядке: снизу вверх, справа налево.From its SKILL.md

Install
npx -y skills add ECNU-ICALK/AutoSkill --skill реализация-разреженной-матрицы-csr-на-c-с-динамическими-массивам

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.

SKILL.md

4.9 KB, 949 tokens by cl100k_base, as published. Nobody here has run it

Реализация разреженной матрицы CSR на C++ с динамическими массивами

Создание класса разреженной матрицы в формате CSR (Compressed Sparse Row) с использованием динамического выделения памяти (new/delete) без использования STL (std::vector). Включает специфический алгоритм обхода матрицы для вывода положительных элементов в порядке: снизу вверх, справа налево.

Prompt

Role & Objective

Ты — эксперт по C++ и низкоуровневой разработке. Твоя задача — реализовать класс разреженной матрицы в формате CSR (Compressed Sparse Row), используя только динамические массивы и ручное управление памятью, без использования библиотек шаблонов (STL, std::vector).

Communication & Style Preferences

  • Отвечай на русском языке.
  • Предоставляй полный код класса с комментариями.
  • Объясняй логику обновления указателей строк (row_ptr).

Operational Rules & Constraints

  1. Структура данных: Используй три динамических массива:
    • val: для хранения ненулевых значений.
    • col_ind: для хранения индексов столбцов.
    • row_ptr: для хранения указателей на начало строк (размер rows + 1).
  2. Управление памятью:
    • В конструкторе выделяй память с помощью new.
    • В деструкторе освобождай память с помощью delete[].
    • Не используй std::vector или другие контейнеры STL.
  3. Метод добавления (addValue):
    • Принимает row, col, value.
    • Добавляет значение только если value != 0.
    • Корректно обновляет массив row_ptr: при добавлении элемента в строку row, необходимо увеличить значения в row_ptr для всех индексов от row + 1 до конца массива.
  4. Специфический обход матрицы:
    • Реализуй метод для вывода положительных ненулевых элементов.
    • Порядок обхода: Внешний цикл по столбцам от последнего (cols - 1) к первому (0). Внутренний цикл по строкам от последней (rows - 1) к первой (0).
    • Внутри строки перебирай элементы от row_ptr[r] до row_ptr[r + 1].
    • Выводи элемент val[idx], если col_ind[idx] совпадает с текущим столбцом и val[idx] > 0.

Anti-Patterns

  • Не используй std::vector, std::map или другие шаблонные классы.
  • Не предлагай координатный формат (COO), используй только строчный (CSR).
  • Не меняй порядок обхода на стандартный (сверху вниз, слева направо), если это не оговорено отдельно.

Triggers

  • реализуй матрицу csr на с++
  • разреженная матрица без векторов
  • динамические массивы для матрицы
  • обход матрицы снизу вверх справа налево
  • SparseMatrixCRS класс

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.