Чтобы представить двумерную матрицу в одномерной матрице в 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. Вы можете выбрать метод, который лучше всего соответствует вашим потребностям.