Программа на языке C: как представить 2D-матрицу в 1D-матрице

Чтобы представить двумерную матрицу в одномерной матрице в C, вы можете использовать несколько методов. Вот некоторые из них:

Метод 1: сведение матрицы
Одним из распространенных подходов является сведение двумерной матрицы в одномерный массив путем объединения строк. Вот пример фрагмента кода:

#include <stdio.h>
#define ROWS 3
#define COLS 3
void flattenMatrix(int matrix[ROWS][COLS], int array[], int rows, int cols) {
    int index = 0;
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            array[index++] = matrix[i][j];
        }
    }
}
int main() {
    int matrix[ROWS][COLS] = {{1, 2, 3},
                              {4, 5, 6},
                              {7, 8, 9}};
    int flattened[ROWS * COLS];
    flattenMatrix(matrix, flattened, ROWS, COLS);
    // Print the flattened array
    for (int i = 0; i < ROWS * COLS; i++) {
        printf("%d ", flattened[i]);
    }
    return 0;
}

Метод 2: использование указателей
Другой подход заключается в использовании указателей для представления двумерной матрицы в виде одномерного массива. Вот пример:

#include <stdio.h>
#define ROWS 3
#define COLS 3
void flattenMatrix(int matrix[ROWS][COLS], int* array, int rows, int cols) {
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            *array = matrix[i][j];
            array++;
        }
    }
}
int main() {
    int matrix[ROWS][COLS] = {{1, 2, 3},
                              {4, 5, 6},
                              {7, 8, 9}};
    int flattened[ROWS * COLS];
    flattenMatrix(matrix, flattened, ROWS, COLS);
    // Print the flattened array
    for (int i = 0; i < ROWS * COLS; i++) {
        printf("%d ", flattened[i]);
    }
    return 0;
}

Это всего лишь несколько методов представления 2D-матрицы в 1D-матрице на C. Вы можете выбрать метод, который лучше всего соответствует вашим потребностям.