Advertisement
alsiva

ForLiza

Jan 20th, 2023
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.05 KB | None | 0 0
  1. // Вам доступны следующие функции:
  2. size_t read_size();
  3. int64_t* array_int_min( int64_t* array, size_t size );
  4. int64_t** marray_read( size_t* rows, size_t* sizes[] );
  5. void marray_free( int64_t** marray, size_t rows );
  6. void marray_print(int64_t** marray, size_t* sizes, size_t rows);
  7.  
  8.  
  9. // Указатель на минимальное из двух чисел.
  10. // если хотя бы одно число NULL, то возвращать второе
  11. // если оба числа NULL результат NULL
  12. int64_t* int64_ptr_min(int64_t* x, int64_t* y) {
  13.     if (x == NULL && y == NULL) {
  14.         return NULL;
  15.     } else if (x != NULL && y == NULL) {
  16.         return x;
  17.     } else if (x == NULL && y != NULL) {
  18.         return y;
  19.     } else if (*x < *y) {
  20.         return x;
  21.     } else {
  22.         return y;
  23.     }
  24. }
  25.  
  26. // Вернуть адрес минимального элемента массива массивов
  27. int64_t* marray_int_min(int64_t** marray, size_t* sizes, size_t rows) {
  28.    
  29.     int64_t* min = NULL;
  30.  
  31.     for (size_t i = 0; i < rows; i++) {
  32.         int64_t* minString = array_int_min(marray[i], sizes[i]);
  33.         min = int64_ptr_min(min, minString);    
  34.     }
  35.  
  36.     return min;
  37. }
  38.  
  39. // Вычесть m изо всех элементов массива
  40. void marray_normalize( int64_t** marray, size_t sizes[], size_t rows, int64_t m ) {
  41.    
  42.     for (size_t i = 0; i < rows; i++) {
  43.         for (size_t j = 0; j < sizes[i]; j++) {
  44.             (marray[i])[j] = (marray[i])[j] - m;  
  45.         }
  46.     }
  47.  
  48. }
  49.  
  50. // Прочитать, найти минимум и нормализовать массив, вывести результат
  51. void perform() {
  52.  
  53.     size_t rows;
  54.     size_t* sizes;
  55.     int64_t** marray = marray_read(&rows, &sizes);
  56.  
  57.     int64_t* min;
  58.     min = marray_int_min(marray, sizes, rows);
  59.  
  60.     if (min != NULL) {
  61.         marray_normalize(marray, sizes, rows, *min);
  62.     }
  63.    
  64.     marray_print(marray, sizes, rows);
  65.      
  66.     marray_free(marray, rows);
  67.    
  68.     free(sizes);
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement