Advertisement
Adnan_Sarker

Sharif Vai Task

Apr 1st, 2023
542
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.17 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. #define read freopen("input.txt","r",stdin)
  4. #define write freopen("output.txt","w",stdout)
  5. #define dArray A[100][100]
  6.  
  7. using namespace std;
  8.  
  9. // print 3x4 matrix A
  10. void printMatrix(double dArray, int r, int c) {
  11.     for (int i = 0; i < r; i++) {
  12.         for (int j = 0; j < c; j++) {
  13.             cout << A[i][j] << "\t";
  14.         }
  15.         cout << endl;
  16.     }
  17.     cout << "====================" << endl << endl;
  18. }
  19.  
  20. void divideRow(double dArray, int c, int R, double P) {
  21.     for (int j = 0; j < c; j++) {
  22.         A[R][j] /= P;
  23.     }
  24. }
  25.  
  26. void addRow(double dArray, int c, int R1, int R2, double V) {
  27.     for (int j = 0; j < c; j++) {
  28.         A[R2][j] += V * A[R1][j];
  29.     }
  30. }
  31.  
  32. void rowReduce(double dArray, int r, int c) {
  33.     int R = 0;
  34.     for (int j = 0; j < c; j++) {
  35.         bool found = false;
  36.         for (int i = R; i < r; i++) {
  37.             if (A[i][j] != 0) {
  38.                 found = true;
  39.                 if (i != R) {
  40.                     for (int k = 0; k < c; k++) {
  41.                         swap(A[R][k],A[i][k]);
  42.                     }
  43.                 }
  44.                 double P = A[R][j];
  45.                 divideRow(A, c, R, P);
  46.                 for (int k = R + 1; k < r; k++) {
  47.                     double V = A[k][j];
  48.                     addRow(A, c, R, k, -V);
  49.                 }
  50.                 R++;
  51.                 break;
  52.             }
  53.         }
  54.         if (!found) {
  55.             // all elements in column j are zero
  56.             continue;
  57.         }
  58.         if (R == 3) {
  59.             break;
  60.         }
  61.     }
  62. }
  63.  
  64. // main function
  65. int main() {
  66.  
  67.     read;
  68.     //write;
  69.  
  70.     int r, c;
  71.     //int a[100][100];
  72.     //vector<vector<double> > A;
  73.     double A[100][100];
  74.     cin>>r>>c;
  75.  
  76.     for (int i = 0; i < r; i++){
  77.         for (int j = 0; j < c; j++){
  78.             cin>>A[i][j];
  79.         }
  80.     }
  81.  
  82.     /*
  83.     double A[r][c];
  84.     A[0][0] = 2; A[0][1] = 1; A[0][2] = 0; A[0][3] = 5;
  85.     A[1][0] = 3; A[1][1] = 6; A[1][2] = 1; A[1][3] = 1;
  86.     A[2][0] = 5; A[2][1] = 7; A[2][2] = 1; A[2][3] = 8;
  87.     p34(A);
  88.     */
  89.  
  90.     printMatrix(A, r, c);
  91.     rowReduce(A, r, c);
  92.     printMatrix(A, r, c);
  93.     return 0;
  94. }
  95.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement