#include /* needed for std::size_t */ #include /* needed for printf */ struct Matrix { std::size_t m; /* number of rows */ std::size_t n; /* number of columns */ std::size_t incRow; std::size_t incCol; double* data; void init() { for (std::size_t i = 0; i < m; ++i) { for (std::size_t j = 0; j < n; ++j) { data[i*incRow + j*incCol] = j * n + i + 1; } } } }; void print_matrix(std::size_t m, std::size_t n, const double* A, std::size_t incRowA, std::size_t incColA) { for (std::size_t i = 0; i < m; ++i) { std::printf(" "); for (std::size_t j = 0; j < n; ++j) { std::printf(" %4.1lf", A[i*incRowA + j*incColA]); } std::printf("\n"); } } int main() { Matrix A; A.m = 7; A.n = 8; A.data = new double[A.m * A.n]; A.incRow = 1; A.incCol = 7; A.init(); std::printf("A =\n"); print_matrix(A.m, A.n, A.data, A.incRow, A.incCol); }