1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
| #include <iostream>
#include <time.h>
using namespace std;
long long multiple(bool type, int sizeN, int sizeM, int **arr)//при разных размерах N и M - деревянный алгоритм
{
int size = min(sizeN, sizeM);//
long long result = 1;
for(int i=0; i<size; i++) {
if(type) {
result *= arr[i][i];//первая диагональ
} else {
result *= arr[size-i-1][i];//вторая диагональ
}
}
return result;
}
int main()
{
int **arr, n, m;
bool method = 0;
cout << "Enter N: ";
cin >> n;
cout << "Enter M: ";
cin >> m;
arr = new int*[n];
for(int i=0; i<m; i++)
arr[i] = new int[m];
cout << "Use random? 0 - no, 1 - yes: ";
cin >> method;
if(method) {
srand(time(0));
for(int i=0; i<n; i++) {
for(int j=0; j<m; j++) {
arr[i][j] = rand()%10;
}
}
} else {
for(int i=0; i<n; i++) {
for(int j=0; j<m; j++) {
printf("[%i][%i] = ", i, j);
cin >> arr[i][j];
cout << endl;
}
}
}
printf("==Array==\n");
for(int i=0; i<n; i++) {
for(int j=0; j<m; j++) {
printf(" %i", arr[i][j]);
}
printf("\n");
}
long long result = multiple(true, n, m, arr);
cout << "Result 1: " << result << endl;
result = multiple(false, n, m, arr);
cout << "Result 2: " << result << endl;
for(int i=0; i<n; i++)
delete[] arr[i];
//delete[] arr;
system("pause");
return 0;
} |