Advertisement
Guest User

Untitled

a guest
Feb 18th, 2020
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.27 KB | None | 0 0
  1. // lab_2.cpp: определяет точку входа для консольного приложения.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "windows.h"
  6.  
  7. float* fill_matrix(int, int, float, float);
  8. void print_matrix(float*, int, int);
  9. float calc_p(float*, int, int);
  10.  
  11. int main()
  12. {
  13.     int C_n, C_m, D_n, D_m, S_n, S_m;
  14.     float *C, *D, *S;
  15.     float p_c, p_d, p_s;
  16.  
  17.     C_n = C_m = D_n = D_m = S_n = S_m = 0;
  18.  
  19.     do {
  20.         printf("Input size of matrix C: ");
  21.         scanf("%d%d", &C_m, &C_n);
  22.     }
  23.     while (C_m < 2 || C_n < 2 || C_m > 100 || C_n > 100);
  24.  
  25.     do {
  26.         printf("Input size of matrix D: ");
  27.         scanf("%d%d", &D_m, &D_n);
  28.     }
  29.     while (D_m < 2 || D_n < 2 || D_m > 100 || D_n > 100);
  30.  
  31.     do {
  32.         printf("Input size of matrix S: ");
  33.         scanf("%d%d", &S_m, &S_n);
  34.     }
  35.     while (S_m < 2 || S_n < 2 || S_m > 100 || S_n > 100);
  36.  
  37.     C = fill_matrix(C_m, C_n, -3.5, 1.7);
  38.     D = fill_matrix(D_m, D_n, 4.2, -5.6);
  39.     S = fill_matrix(S_m, S_n, -7.6, 5.2);
  40.  
  41.     printf("\n\n");
  42.  
  43.     printf("Matrix C:\n\n");
  44.     print_matrix(C, C_m, C_n);
  45.     p_c = calc_p(C, C_m, C_n);
  46.     printf("\nP = %.3f", p_c);
  47.     printf("\n\n---------------------------------------\n\n");
  48.  
  49.     printf("Matrix D:\n\n");
  50.     print_matrix(D, D_m, D_n);
  51.     p_d = calc_p(D, D_m, D_n);
  52.     printf("\nP = %.3f", p_d);
  53.     printf("\n\n---------------------------------------\n\n");
  54.  
  55.     printf("Matrix S:\n\n");
  56.     print_matrix(S, S_m, S_n);
  57.     p_s = calc_p(S, S_m, S_n);
  58.     printf("\nP = %.3f", p_s);
  59.     printf("\n\n");
  60.  
  61.     system("pause");   
  62.  
  63.     delete[]C; delete[]D, delete[]S;
  64.  
  65.     return 0;
  66. }
  67.  
  68. float* fill_matrix(int m, int n, float k1, float k2) {
  69.     float* x = new float[m*n];
  70.  
  71.     for (int i = 0; i < m; i++)
  72.         for (int j = 0; j < n; j++)
  73.             *(x + i * n + j) = (i + 1 + k1)*(j + 1 + k2);
  74.  
  75.     return x;
  76. }
  77.  
  78. void print_matrix(float *matrix, int m, int n) {
  79.     for (int i = 0; i < m; i++) {
  80.         for (int j = 0; j < n; j++)
  81.             printf("%6.2f ", *(matrix + i * n + j));
  82.         printf("\n");
  83.     }
  84. }
  85.  
  86. float calc_p(float *matrix, int m, int n) {
  87.     float p = 1, max = INT_MIN;
  88.     int max_i;
  89.  
  90.     for (int i = 0; i < m; i++) {
  91.         for (int j = 0; j < n; j++) {
  92.             if (*(matrix + i * n + j) > max) {
  93.                 max = *(matrix + i * n + j);
  94.                 max_i = i;
  95.             }
  96.         }
  97.     }
  98.  
  99.     for (int j = 0; j < n; j++)
  100.         if (*(matrix + max_i * n + j) != 0)
  101.             p *= *(matrix + max_i * n + j);
  102.  
  103.     return p;
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement