Загрузка данных


#include <stdio.h>

#define N 15
#define M 13

void transform(int *buffer, int **matrix, int rows, int cols);
void make_picture(int **picture, int rows, int cols);
void reset_picture(int **picture, int rows, int cols);
void output_picture(int **picture, int rows, int cols);

int main(void) {
    int picture_data[N][M];
    int *picture[N];

    transform(&picture_data[0][0], picture, N, M);
    make_picture(picture, N, M);
    output_picture(picture, N, M);

    return 0;
}

void transform(int *buffer, int **matrix, int rows, int cols) {
    for (int i = 0; i < rows; i++) {
        matrix[i] = buffer + i * cols;
    }
}

void make_picture(int **picture, int rows, int cols) {
    int frame_w[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
    int frame_h[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
    int tree_trunk[] = {7};
    int tree_foliage[] = {3};
    int sun_data[6][5] = {{0, 6, 6, 6, 6},
                          {0, 0, 6, 6, 6},
                          {0, 0, 6, 6, 6},
                          {0, 6, 0, 0, 6},
                          {0, 0, 0, 0, 0},
                          {0, 0, 0, 0, 0}};

    reset_picture(picture, rows, cols);

    for (int j = 0; j < cols; j++) {
        picture[0][j] = frame_w[j];
        picture[7][j] = frame_w[j];
        picture[rows - 1][j] = frame_w[j];
    }

    for (int i = 0; i < rows; i++) {
        picture[i][0] = frame_h[i];
        picture[i][6] = frame_h[i];
        picture[i][cols - 1] = frame_h[i];
    }

    for (int i = 0; i < 6; i++) {
        for (int j = 0; j < 5; j++) {
            if (sun_data[i][j] != 0) {
                picture[i + 1][j + 7] = sun_data[i][j];
            }
        }
    }

    for (int i = 2; i < 6; i++) {
        for (int j = 2; j < 6; j++) {
            picture[i][j] = tree_foliage[0];
        }
    }

    picture[2][2] = 0;
    picture[5][2] = 0;
    picture[2][5] = 0;
    picture[5][5] = 0;

    for (int i = 6; i < 10; i++) {
        if (i != 7) {
            picture[i][3] = tree_trunk[0];
            picture[i][4] = tree_trunk[0];
        }
    }

    for (int j = 2; j < 6; j++) {
        picture[10][j] = tree_trunk[0];
    }
}

void reset_picture(int **picture, int rows, int cols) {
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            picture[i][j] = 0;
        }
    }
}

void output_picture(int **picture, int rows, int cols) {
    for (int i = 0; i < rows; i++) {
        if (i > 0) {
            printf("\n");
        }
        for (int j = 0; j < cols; j++) {
            if (j > 0) {
                printf(" ");
            }
            printf("%d", picture[i][j]);
        }
    }
}