Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- void init_matrix(int* C, int n, int m);
- void print_matrix(int* C, int n, int m);
- void zmeika_left_down_protch_lin(int* C, int n, int m);
- int main()
- {
- int m = 5;
- int n = 5;
- int* C = (int*)malloc(m * n * sizeof(int));
- init_matrix(C, n, m);
- print_matrix(C, n, m);
- zmeika_left_down_protch_lin(C, n, m);
- }
- void init_matrix(int* C, int n, int m)
- {
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- {
- C[m * i + j] = rand() % 100;
- }
- }
- return;
- }
- void print_matrix(int* C, int n, int m)
- {
- printf("Matrix:\n");
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- {
- printf("%3d", C[m * i + j]);
- }
- printf("\n");
- }
- return;
- }
- void zmeika_left_down_protch_lin(int* C, int n, int m) {
- int levo = 0, pravo = m - 1, verh = 0, niz = n - 1, gon = 0, pr = 0;
- while (levo <= pravo && verh <= niz && pr < n * m) {
- printf("\nprogon %d\n", gon);
- for (int i = levo; i <= pravo; i++) {
- if (pr == n * m)break;
- printf("%d ", C[niz * m + i]);
- pr++;
- }
- for (int i = niz - 1; i >= verh; i--) {
- if (pr == n * m)break;
- printf("%d ", C[i * m + pravo]);
- pr++;
- }
- for (int i = pravo - 1; i >= levo; i--) {
- if (pr == n * m)break;
- printf("%d ", C[verh * m + i]);
- pr++;
- }
- for (int i = verh + 1; i < niz; i++) {
- if (pr == n * m)break;
- printf("%d ", C[i * m + levo]);
- pr++;
- }
- gon++;
- levo++;
- pravo--;
- verh++;
- niz--;
- }
- }
RAW Paste Data