Advertisement
artmexbet

Angle

Apr 4th, 2024
644
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.63 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. #define ROWS 4
  6. #define COLS 5
  7.  
  8. void fill_matrix(int array[ROWS][COLS]) {
  9.     srand(time(NULL));
  10.     for (int i = 0; i < ROWS; i++) {
  11.         for (int j = 0; j < COLS; j++) {
  12.             array[i][j] = 1 + rand() % 3;
  13.         }
  14.     }
  15. }
  16.  
  17. void print_matrix(int array[ROWS][COLS]){
  18.     for (int i = 0; i < ROWS; i++){
  19.         for (int j = 0; j < COLS; j++){
  20.             printf("%d ", array[i][j]);
  21.         }
  22.         printf("\n");
  23.     }
  24. }
  25.  
  26. void find_g(int matrix[ROWS][COLS]){
  27.     int maxCount = 0;
  28.     int coords[] = {0, 0, 0, 0, 0, 0};
  29.     for (int i = 0; i < ROWS; i++){
  30.         for (int j = 0; j < COLS; j++){
  31.             // Вот отсюда можно выкинуть вычисление уголочка из этой точки в отдельный поток
  32.             int k = 0;
  33.             int lengthOfHorizontal = 0; // Сюда сохраняем длину повторящихся символов в строке
  34.             while (j + k < COLS && matrix[i][j + k] == matrix[i][j]){
  35.                 lengthOfHorizontal++;
  36.                 // Или вот отсюда можно запускать потоки, проверяющие вертикальные линии на совпадение с элементом matrix[i][j]
  37.                 // Нижний цикл выкинуть в отдельный поток
  38.                 int l = 0;
  39.                 int lengthOfVertical = 0; // Сюда сохраняем длину повторяющихся символов в столбце
  40.                 while (i + l < ROWS && matrix[i + l][j + k] == matrix[i][j + k]){
  41.                     lengthOfVertical++;
  42.                     l++;
  43.                 }
  44.                 if (lengthOfHorizontal + lengthOfVertical > maxCount){
  45.                     coords[0] = i;
  46.                     coords[1] = j;
  47.                     coords[2] = i;
  48.                     coords[3] = j + k;
  49.                     coords[4] = i + l - 1;
  50.                     coords[5] = j + k;
  51.                     maxCount = lengthOfHorizontal + lengthOfVertical;
  52. //                    coords = {i, j, i, j + k, i + l - 1, j + k};
  53.                 }
  54.                 k++;
  55.             }
  56.         }
  57.     }
  58.     for (int i = 0; i < 6; i++){
  59.         printf("%d ", coords[i]);
  60.     }
  61. }
  62.  
  63. int main() {
  64. //    printf("Hello, World!\n");
  65.     int arr[ROWS][COLS] = {{0, 2, 0, 2, 0},
  66.                            {0, 1, 1, 1, 0},
  67.                            {2, 0, 2, 1, 1},
  68.                            {0, 2, 0, 1, 1}};
  69. //    fill_matrix(arr);
  70.     print_matrix(arr);
  71.     find_g(arr);
  72.     return 0;
  73. }
  74.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement