Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<fstream>
- #include<cmath>
- #include<iomanip>
- #include<cstring>
- using namespace std;
- const int lengthColumn = 7;
- const int Indent = 4;
- void show(int **x, int n)
- {
- for (int i = 0; i < n; i++) {
- for (int j = 0; j < n; j++)
- cout << x[i][j] << ' ';
- cout << endl;
- }
- }
- int** create(int n)
- {
- int **y = new int *[n];
- for (int i = 0; i < n; i++)
- {
- y[i] = new int[n];
- }
- return y;
- }
- int** create_mass(ifstream &f, int n,int m)
- {
- int **y = new int *[n];
- int i, j;
- for (i = 0; i < n; i++)
- {
- y[i] = new int[m];
- }
- for (i = 0; i < n; i++)
- for (j = 0; j < m; j++)
- f >> y[i][j];
- return y;
- }
- void star(int n, int m)
- {
- cout.width(n);
- for (int i = 0; i < m; i++)
- cout << '*';
- cout << endl;
- }
- void table(int** x, int n,int m)
- {
- int lengthTable = 9;
- for (int i = 0; i < m - 1; i++) {
- lengthTable += 8;
- }
- cout << endl;
- star(Indent, lengthTable);
- for (int i = 0; i < n; i++) {
- for (int j = 0; j < m; j++) {
- cout.width(Indent);
- cout << '*';
- cout.width(4);
- cout << x[i][j];
- }
- cout.width(Indent);
- cout << '*';
- cout << endl;
- star(Indent, lengthTable);
- }
- }
- int** summ(int **a, int **b, int n) {
- int **y = create(n);
- for (int i = 0; i < n; i++)
- for (int j = 0; j < n; j++)
- y[i][j] = a[i][j] + b[i][j];
- return y;
- }
- int** sub(int **a, int **b, int n) {
- int **y = create(n);
- for (int i = 0; i < n; i++)
- for (int j = 0; j < n; j++)
- y[i][j] = a[i][j] - b[i][j];
- return y;
- }
- int** mult_on_num(int **a, int n) {
- int num;
- cout << "Enter number: "; cin >> num;
- for (int i = 0; i < n; i++)
- for (int j = 0; j < n; j++)
- a[i][j] *= num;
- return a;
- }
- int** transp(int** a, int n) {
- for (int i = 0; i < n; i++)
- for (int j = i; j < n; j++)
- swap(a[i][j], a[j][i]);
- return a;
- }
- int** mult(int **a, int **b, int n, int m, int q) {
- int **y = create(n+1);
- for (int i = 0; i < m; i++)
- for (int j = 0; j < q; j++)
- {
- y[i][j] = 0;
- for (int k = 0; k < n; k++)
- y[i][j] += a[i][k] * b[k][j];
- }
- return y;
- }
- void GetMatr(int **mas, int **p, int i, int j, int m) {
- int ki, kj, di, dj;
- di = 0;
- for (ki = 0; ki<m - 1; ki++) {
- if (ki == i) di = 1;
- dj = 0;
- for (kj = 0; kj<m - 1; kj++) {
- if (kj == j) dj = 1;
- p[ki][kj] = mas[ki + di][kj + dj];
- }
- }
- }
- int Determinant(int **mas, int m) {
- int j, d, k, n;
- int **p = create(m);
- j = 0; d = 0;
- k = 1;
- n = m - 1;
- if (m<1) cout << "ERROR";
- if (m == 1) {
- d = mas[0][0];
- return(d);
- }
- if (m == 2) {
- d = mas[0][0] * mas[1][1]-(mas[1][0] * mas[0][1]);
- return(d);
- }
- if (m>2) {
- for (int i = 0; i<m; i++) {
- GetMatr(mas, p, i, 0, m);
- d = d + k * mas[i][0] * Determinant(p, n);
- k = -k;
- }
- }
- return(d);
- }
- void glav_diag(int **a, int n) {
- for (int i = 0; i < n; i++)
- cout << a[i][i] << ' ';
- cout << endl;
- }
- void poboch_diag(int **a, int n) {
- for (int i = 0; i < n; i++)
- cout << a[i][n-1-i]<< ' ';
- cout << endl;
- }
- int main()
- {
- ifstream in1("in1.txt");
- ifstream in2("in2.txt");
- ifstream in3("in3.txt");
- if (!in1 || !in2)
- {
- cout << "Can`t open file!" << endl;
- exit(-1);
- }
- int n,m,q,k;
- cout << "Enter size of array a: "; cin >> n >> m;
- cout << "Enter size of array b: "; cin >> m >> q;
- cout << "Enter size of square array g: "; cin >> k;
- int **a, **b,**c,**g;
- a = create_mass(in1, n, m);
- b = create_mass(in2, m, q);
- g = create_mass(in3, k, k);
- c = summ(g, g, k);
- cout << "A: " << endl;
- table(a, n, m);
- cout << "B: " << endl;
- table(b, m, q);
- cout << "G: " << endl;
- table(g, k, k);
- cout << "Sum:" << endl;
- table(c, k, k);
- cout << "Mult: " << endl;
- table(mult(a, b, m, n, q),m+1,m+1);
- cout << "Diag: "; glav_diag(g, k);
- cout << "Pob diag: "; poboch_diag(g, k);
- cout << "Determinant: " << Determinant(g, k)<<endl;
- cout << "Transp: " << endl;
- table(transp(g, k), k, k);
- in1.close();
- in2.close();
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement