Advertisement
Guest User

Untitled

a guest
Jan 16th, 2019
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.28 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <iomanip>
  4.  
  5. using namespace std;
  6.  
  7. void printmatrix(int rows, int cols, float **A) {
  8.     for (int i = 0; i < rows; i++) {
  9.         for (int j = 0; j < cols; j++) {
  10.             if (A[i][j] == 0) {
  11.                 cout << setw(5) << 0 << " ";
  12.                 continue;
  13.             }
  14.  
  15.             cout << setw(5) << A[i][j] << " ";
  16.         }
  17.         cout << endl;
  18.     }
  19.  
  20.     cout << endl;
  21. }
  22.  
  23. void RowReduce(int rows, int cols, float **A) {
  24.  
  25.     int lead = 0;
  26.  
  27.     while (lead < rows) {
  28.         float d, m;
  29.  
  30.         for (int r = 0; r < rows; r++) {
  31.             d = A[lead][lead];
  32.             m = A[r][lead] / A[lead][lead];
  33.  
  34.             for (int c = 0; c < cols; c++) {
  35.                 if (r == lead)
  36.                     A[r][c] /= d;
  37.                 else
  38.                     A[r][c] -= A[lead][c] * m;
  39.             }
  40.         }
  41.  
  42.         lead++;
  43.     }
  44. }
  45.  
  46.  
  47. void getBasis(int n, int m, float **A, float **B, float **matrix) {
  48.     //gaussianElimination(n, n, A);
  49.     //RowReduce(m, n, B);
  50.  
  51.     for (int i = 0; i < n; i++) {
  52.         for (int j = 0; j < n; ++j) {
  53.             matrix[i][j] = A[i][j];
  54.         }
  55.     }
  56.  
  57.     for (int i = n; i < n + m; ++i) {
  58.         for (int j = 0; j < n; ++j) {
  59.             matrix[i][j] = B[i][j];
  60.         }
  61.     }
  62.  
  63.     printmatrix(n+m, n, matrix);
  64.     //RowReduce(m + n, n, matrix);
  65. }
  66.  
  67. int main() {
  68.     int m = 2;
  69.     int n = 4;
  70.  
  71.     float **A = new float *[n];
  72.     for (int i = 0; i < n; ++i) {
  73.         A[i] = new float[n];
  74.     }
  75.  
  76.     A[0][0] = 2;
  77.     A[0][1] = 8;
  78.     A[0][2] = -3;
  79.     A[0][3] = 14;
  80.  
  81.     A[1][0] = -1;
  82.     A[1][1] = 2;
  83.     A[1][2] = 3;
  84.     A[1][3] = 5;
  85.  
  86.     A[2][0] = -1;
  87.     A[2][1] = 14;
  88.     A[2][2] = 6;
  89.     A[2][3] = 29;
  90.  
  91.     A[3][0] = 0;
  92.     A[3][1] = 12;
  93.     A[3][2] = 3;
  94.     A[3][3] = 24;
  95.  
  96.     float **B = new float *[m];
  97.     for (int j = 0; j < m; ++j) {
  98.         B[j] = new float[n];
  99.     }
  100.  
  101.     B[0][0] = 0;
  102.     B[0][1] = 1;
  103.     B[0][2] = 1;
  104.     B[0][3] = 0;
  105.  
  106.     B[1][0] = 10;
  107.     B[1][1] = 7;
  108.     B[1][2] = 0;
  109.     B[1][3] = -8;
  110.  
  111.     float **matrix = new float *[m + n];
  112.     for (int i = 0; i < m + n; ++i) {
  113.         matrix[i] = new float[n];
  114.     }
  115.  
  116.     getBasis(n, m, A, B, matrix);
  117.  
  118.     printmatrix(m + n, n, matrix);
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement