Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // lab_2.cpp: определяет точку входа для консольного приложения.
- //
- #include "stdafx.h"
- #include "windows.h"
- float* fill_matrix(int, int, float, float);
- void print_matrix(float*, int, int);
- float calc_p(float*, int, int);
- int main()
- {
- int C_n, C_m, D_n, D_m, S_n, S_m;
- float *C, *D, *S;
- float p_c, p_d, p_s;
- C_n = C_m = D_n = D_m = S_n = S_m = 0;
- do {
- printf("Input size of matrix C: ");
- scanf("%d%d", &C_m, &C_n);
- }
- while (C_m < 2 || C_n < 2 || C_m > 100 || C_n > 100);
- do {
- printf("Input size of matrix D: ");
- scanf("%d%d", &D_m, &D_n);
- }
- while (D_m < 2 || D_n < 2 || D_m > 100 || D_n > 100);
- do {
- printf("Input size of matrix S: ");
- scanf("%d%d", &S_m, &S_n);
- }
- while (S_m < 2 || S_n < 2 || S_m > 100 || S_n > 100);
- C = fill_matrix(C_m, C_n, -3.5, 1.7);
- D = fill_matrix(D_m, D_n, 4.2, -5.6);
- S = fill_matrix(S_m, S_n, -7.6, 5.2);
- printf("\n\n");
- printf("Matrix C:\n\n");
- print_matrix(C, C_m, C_n);
- p_c = calc_p(C, C_m, C_n);
- printf("\nP = %.3f", p_c);
- printf("\n\n---------------------------------------\n\n");
- printf("Matrix D:\n\n");
- print_matrix(D, D_m, D_n);
- p_d = calc_p(D, D_m, D_n);
- printf("\nP = %.3f", p_d);
- printf("\n\n---------------------------------------\n\n");
- printf("Matrix S:\n\n");
- print_matrix(S, S_m, S_n);
- p_s = calc_p(S, S_m, S_n);
- printf("\nP = %.3f", p_s);
- printf("\n\n");
- system("pause");
- delete[]C; delete[]D, delete[]S;
- return 0;
- }
- float* fill_matrix(int m, int n, float k1, float k2) {
- float* x = new float[m*n];
- for (int i = 0; i < m; i++)
- for (int j = 0; j < n; j++)
- *(x + i * n + j) = (i + 1 + k1)*(j + 1 + k2);
- return x;
- }
- void print_matrix(float *matrix, int m, int n) {
- for (int i = 0; i < m; i++) {
- for (int j = 0; j < n; j++)
- printf("%6.2f ", *(matrix + i * n + j));
- printf("\n");
- }
- }
- float calc_p(float *matrix, int m, int n) {
- float p = 1, max = INT_MIN;
- int max_i;
- for (int i = 0; i < m; i++) {
- for (int j = 0; j < n; j++) {
- if (*(matrix + i * n + j) > max) {
- max = *(matrix + i * n + j);
- max_i = i;
- }
- }
- }
- for (int j = 0; j < n; j++)
- if (*(matrix + max_i * n + j) != 0)
- p *= *(matrix + max_i * n + j);
- return p;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement