shadeyourself

matrxing

Oct 11th, 2021
593
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //Необходимо написать программу, которая будет спрашивать у пользователя размер квадратной матрицы, выделять под неё память, //заполнять данными по формуле, считать некоторую характеристику, и удалять матрицу.
  2. //Матрица хранится в виде одномерного массива
  3. //Заполнение по формуле a(i,j) = max(i,j)
  4. //Характеристика: посчитать максимальную сумму модулей элементов по столбцам матрицы
  5. #define _CRT_SECURE_NO_WARNINGS
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8.  
  9. int max(int a, int b) {
  10.     if (a > b)
  11.         return a;
  12.     else
  13.         return b;
  14. }
  15.  
  16. void feel(int *matrix, int n, int m) {
  17.     int i, j;
  18.     for (i = 0; i < n; i++) {
  19.         for(j = 0; j < m; j++)
  20.             matrix[i*m + j] = max(i, j);
  21.     }
  22. }
  23.  
  24. //если правильно понял третий пункт, то посчитать максимальную
  25. //сумму модулей элементов по столбцам матрицы
  26. //значит найти столбец с максимальной суммой модулей его элементов
  27.  
  28.  
  29. //так же в моем случае все элементы матрицы не отрицательны и целы (по условию)
  30. //и я не буду использовать модуль
  31.  
  32. int max_abs(int * matrix, int n, int m) {
  33.     int i, j, stolbec = 0, max = 0;
  34.     for (i = 0; i < n; i++) {
  35.         for (j = 0; j < m; j++) {
  36.             stolbec += matrix[i*m + j];
  37.         }
  38.         if (stolbec > max) max = stolbec;
  39.         stolbec = 0;
  40.     }
  41.     return max;
  42. }
  43. int main() {
  44.     int n, m, *matrix;
  45.     printf("enter n and m: ");
  46.     if (scanf("%d %d", &n, &m) != 2) {
  47.         printf("wrong data\n");
  48.         return -1;
  49.     }
  50.     matrix = (int*)malloc(sizeof(int)*(m*n));
  51.     if (!matrix) {
  52.         printf("malloc error\n");
  53.         return -1;
  54.     }
  55.     feel(matrix, n, m);
  56.     printf("max sum of abss: %d", max_abs(matrix, n, m));
  57.     free(matrix);
  58.     return 0;
  59. }
RAW Paste Data