Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "pch.h"
- #include<iostream>
- #include<fstream>
- #include<cmath>
- #include<iomanip>
- using namespace std;
- int** create(ifstream &f, int n, int m)
- {
- int i, j;
- int **y = new int *[n];
- 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;
- }
- double** create1(ifstream &f, int n, int m)
- {
- int i, j;
- double **y = new double *[n];
- for (i = 0; i < n; i++)
- {
- y[i] = new double[m];
- }
- for (i = 0; i < n; i++)
- for (j = 0; j < m; j++)
- f >> y[i][j];
- return y;
- }
- int kolznak(int a)
- {
- int k = 0;
- while (a != 0)
- {
- k++;
- a = a / 10;
- }
- return k;
- }
- int* mkzst(int** a, int n, int m)
- {
- int i, j, maxz;
- int *b = new int[m];
- for (j = 0; j < m; j++)
- {
- maxz = kolznak(a[0][j]);
- for (i = 0; i < n; i++)
- {
- if (kolznak(a[i][j]) > maxz)
- {
- maxz = kolznak(a[i][j]);
- }
- }
- b[j] = maxz;
- }
- return b;
- }
- void star(int k)
- {
- int i;
- for (i = 0; i < k + 1; i++)
- {
- cout << '*';
- }
- }
- void star1(int k)
- {
- cout << setw(k + 1) << '*';
- }
- void star2(int max, int k, int kz, int a)
- {
- int kzl, kzp;
- if (k == 1)
- {
- kzl = (max / 2) + 2;
- kzp = kz - kzl + 1;
- }
- else
- {
- if (max == k)
- {
- kzl = kz - 1;
- kzp = 2;
- }
- else
- {
- kzl = kz - (max - k);
- kzp = max - k + 1;
- }
- }
- cout << setw(kzl) << a << setw(kzp) << '*';
- }
- void table(int** a, int n, int m)
- {
- int i, j;
- int *b = new int[m];
- b = mkzst(a, n, m);
- cout << '*';
- for (j = 0; j < n; j++)
- {
- for (i = 0; i < m; i++)
- {
- star(b[i] + 2);
- }
- cout << endl << '*';
- for (i = 0; i < m; i++)
- {
- star1(b[i] + 2);
- }
- cout << endl << '*';
- for (i = 0; i < m; i++)
- {
- star2(b[i], kolznak(a[j][i]), b[i] + 2, a[j][i]);
- }
- cout << endl << '*';
- for (i = 0; i < m; i++)
- {
- star1(b[i] + 2);
- }
- cout << endl << '*';
- }
- for (i = 0; i < m; i++)
- {
- star(b[i] + 2);
- }
- }
- void sum(int **x, int **y, int **z, int n, int m)
- {
- int i, j;
- for (i = 0; i < n; i++)
- for (j = 0; j < m; j++)
- z[i][j] = x[i][j] + y[i][j];
- }
- void razn(int **x, int **y, int **z, int n, int m)
- {
- int i, j;
- for (i = 0; i < n; i++)
- for (j = 0; j < m; j++)
- z[i][j] = x[i][j] - y[i][j];
- }
- void mult(int **x, int**y, int**z, int n1, int m2, int m1)
- {
- int i, j, k;
- for (i = 0; i < n1; i++)
- for (j = 0; j < m2; j++)
- {
- z[i][j] = 0;
- for (k = 0; k < m1; k++)
- {
- z[i][j] += x[i][k] * y[k][j];
- }
- }
- }
- int** trans(int **x, int n, int m)
- {
- int i, j, **r;
- r = new int*[m];
- for (i = 0; i < m; i++)
- r[i] = new int[n];
- for (i = 0; i < n; i++)
- for (j = 0; j < m; j++)
- {
- r[j][i] = x[i][j];
- }
- return r;
- }
- void multch(int **x, int a, int n, int m)
- {
- int i, j;
- for (i = 0; i < n; i++)
- for (j = 0; j < m; j++)
- x[i][j] *= a;
- }
- double det(double**x, int n)
- {
- int i, j, k;
- double d, a, b;
- d = 1;
- for (i = 0; i < n - 1; i++)
- {
- if (x[i][i] == 0)
- return 0;
- if (x[i][i] != 1)
- {
- b = x[i][i];
- d = d * b;
- for (j = i; j < n; j++)
- x[i][j] = x[i][j] / b;
- if (i == n - 1)
- x[i][i + 1] = x[i][i + 1] / b;
- for (j = i; j < n - 1; j++)
- {
- a = x[j + 1][i];
- for (k = i; k < n; k++)
- {
- x[j + 1][k] = x[j + 1][k] - (x[i][k] * a);
- }
- }
- }
- else
- {
- for (j = i; j < n - 1; j++)
- {
- a = x[j + 1][i];
- for (k = i; k < n; k++)
- {
- x[j + 1][k] = x[j + 1][k] - (x[i][k] * a);
- }
- }
- }
- }
- d *= x[n - 1][n - 1];
- return d;
- }
- void gld(int **x, int n)
- {
- for (int i = 0; i < n; i++)
- {
- cout << x[i][i] << ' ';
- }
- }
- void pbd(int **x, int n)
- {
- int i, j;
- j = 0;
- for (int i = n - 1; i >= 0 && j < n; i--)
- {
- cout << x[j][i] << ' ';
- j++;
- }
- }
- int main()
- {
- ifstream in("in1.txt");
- ifstream ina("ina.txt");
- ifstream inb("inb.txt");
- ifstream inf("inf.txt");
- ifstream ind("ind.txt");
- ifstream ind1("ind1.txt");
- int **a, **b, **c, **s, **f, n, m, n1, m1, n2, m2, n3, m3, n4, m4, n5, m5, i, j, mnoj;
- double **d, **d1;
- in >> n >> m;
- ina >> n1 >> m1;
- inb >> n2 >> m2;
- inf >> n3 >> m3;
- ind >> n4 >> m4;
- ind1 >> n5 >> m5;
- a = create(in, n, m);
- b = create(ina, n1, m1);
- c = create(inb, n2, m2);
- f = create(inf, n3, m3);
- d = create1(ind, n4, m4);
- d1 = create1(ind1, n5, m5);
- table(f, n3, m3);
- cout << endl;
- if ((n1 == n3) && (m1 == m3))
- {
- s = new int*[n1];
- for (i = 0; i < n1; i++)
- {
- s[i] = new int[m3];
- }
- sum(b, f, s, n1, m1);
- cout << "Sum = " << endl;
- table(s, n1, m1);
- cout << endl;
- }
- else
- cout << "Can`t sum A, B" << endl;
- if ((n1 == n3) && (m1 == m3))
- {
- s = new int*[n1];
- for (i = 0; i < n1; i++)
- {
- s[i] = new int[m3];
- }
- razn(b, f, s, n1, m1);
- cout << "Razn = " << endl;
- table(s, n1, m1);
- cout << endl;
- }
- else
- cout << "Can`t subtract A, B" << endl;
- if (m1 == n2)
- {
- s = new int*[n1];
- for (i = 0; i < n1; i++)
- {
- s[i] = new int[m2];
- }
- mult(b, c, s, n1, m2, m1);
- cout << "Mult = " << endl;
- table(s, n1, m2);
- cout << endl;
- }
- else
- cout << "Can`t mult A,B" << endl;
- s = new int*[n];
- for (i = 0; i < n; i++)
- {
- s[i] = new int[m];
- }
- cout << "Trans = " << endl;
- table(trans(a, n, m), m, n);
- cout << endl;
- cout << "Enter factor = ";
- cin >> mnoj;
- multch(a, mnoj, n, m);
- cout << "Multed on num = " << endl;
- table(a, n, m);
- cout << endl;
- cout << "Determenant1 = " << det(d, n4) << endl;
- cout << "Determenant2 = " << det(d1, n5) << endl;
- gld(b, n1);
- cout << endl;
- pbd(b, n1);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement