Advertisement
Guest User

Untitled

a guest
May 22nd, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.01 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. int** get_matr(int n, int m)
  6. {
  7.     int** matr = (int**)malloc(n * sizeof(int));
  8.     for (int i = 0; i < n; ++i)
  9.     {
  10.         matr[i] = (int*)malloc(m * sizeof(int));
  11.         for (int j = 0; j < m; ++j)
  12.         {
  13.             matr[i][j] = rand() % 18 - 9;
  14.         }
  15.     }
  16.  
  17.     return matr;
  18. }
  19.  
  20. void print_matr(int** matr, int n, int m)
  21. {
  22.     for(int i = 0; i < n; ++i)
  23.     {
  24.         for(int j = 0; j < m; ++j)
  25.         {
  26.             if(matr[i][j] < 0) printf("%d ", matr[i][j]);
  27.             else printf(" %d ", matr[i][j]);
  28.         }
  29.         printf("\n");
  30.     }
  31. }
  32.  
  33. int LEN_LEFT = 0;
  34. int LEN_RIGHT = 0;
  35.  
  36. int MAGIC_NUM = 17;
  37.  
  38. int* left_pos(int** matr, int n, int m)
  39. {
  40.     for(int i = 0; i < n; i++)
  41.     {
  42.         for(int j = 0; j < (m)/2; j++)
  43.         {
  44.             if(matr[i][j] > 0) LEN_LEFT ++;
  45.         }
  46.     }
  47.     int* left = (int*)malloc(LEN_LEFT * sizeof(int));
  48.  
  49.     int cnt = 0;
  50.     for(int i = 0; i < n; i++)
  51.     {
  52.         for(int j = 0; j < (m)/2; j++)
  53.         {
  54.             if(matr[i][j] > 0)
  55.             {
  56.                 left[cnt] = i * MAGIC_NUM + j;
  57.                 cnt ++;
  58.             }
  59.         }
  60.     }
  61.     return left;
  62.  
  63. }
  64.  
  65. int* right_neg(int** matr, int n, int m)
  66. {
  67.     for(int i = 0; i < n; i++)
  68.     {
  69.         for(int j = m/2; j < m; j++)
  70.         {
  71.             if(matr[i][j] < 0) LEN_RIGHT ++;
  72.         }
  73.     }
  74.     int* right = (int*)malloc(LEN_RIGHT * sizeof(int));
  75.     int cnt = 0;
  76.     printf("%d\n", LEN_RIGHT);
  77.     for(int i = 0; i < n; i++)
  78.     {
  79.         for(int j = m/2; j < m; j++)
  80.         {
  81.             if(matr[i][j] < 0)
  82.             {
  83.                 right[cnt] = i * MAGIC_NUM + j;
  84.                 cnt ++;
  85.             }
  86.         }
  87.     }
  88.     return right;
  89. }
  90.  
  91.  
  92. int main(int argc, char const *argv[])
  93. {
  94.  
  95.     srand(time(NULL));
  96.  
  97.     int n, m;
  98.     printf("n = ");
  99.     scanf("%d", &n);
  100.     printf("m = ");
  101.     scanf("%d", &m);
  102.    
  103.     int** matr = get_matr(n, m);
  104.     print_matr(matr, n, m);
  105.  
  106.     int* l = left_pos(matr, n, m);
  107.     int* r = right_neg(matr, n, m);
  108.  
  109.     printf("------------\n");
  110.     for(int i = 0; i < LEN_LEFT; ++i) printf("(%d %d) ", l[i] / MAGIC_NUM, l[i] % MAGIC_NUM);
  111.     printf("\n");
  112.  
  113.     printf("------------\n");
  114.     for(int i = 0; i < LEN_RIGHT; ++i) printf("(%d %d) ", r[i] / MAGIC_NUM, r[i] % MAGIC_NUM);
  115.     printf("\n");
  116.     return 0;
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement