Advertisement
Guest User

operasi matriks

a guest
Nov 23rd, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.93 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int klm,brs,pil,m;
  5. int kolbar=0;
  6. int** matriks=new int *[kolbar];
  7. int** matriks2=new int *[kolbar];
  8. int** matriks3=new int *[kolbar];
  9. float matriksdet;
  10. float** matriksinv=new float *[kolbar];
  11. float** matriksrev=new float *[kolbar];
  12.  
  13. void anu(){
  14.     cout<<"Input Jumlah matriks: ";
  15.     cin>>m;
  16.     cout<<endl;
  17.     cout<<"Input Jumlah kolom dan baris: ";
  18.     cin>>kolbar;
  19.     cout<<endl;
  20.     for(int i=1;i<=kolbar;i++)
  21.            matriks[i] = new int[kolbar];
  22.     for(int i=1;i<=kolbar;i++)
  23.             matriks2[i] = new int[kolbar];
  24.     for(int i=1;i<=kolbar;i++)
  25.             matriks3[i] = new int[kolbar];
  26. }
  27.  
  28. main() {
  29.     cout<<"*******************************************\n";
  30.     cout<<"*                                         *\n";
  31.     cout<<"*         PROGRAM OPERASI MATRIKS         *\n";
  32.     cout<<"*      OLEH MUKTAZAM HASBI ASHIDIQI       *\n";
  33.     cout<<"*                                         *\n";
  34.     cout<<"*******************************************\n";
  35.     cout<<"\n";
  36.     cout<<"Pilihlah: \n 1. Penjumlahan\n 2. Pengurangan\n 3. Perkalian\n 4. Determinan\n 5. Invers\n";
  37.     cout<<"Masukan Pilihan Anda: ";
  38.     cin>>pil;
  39.     switch (pil){
  40.         case 1: {
  41.             anu();
  42.             cout<<"Matriks pertama\n";
  43.             for (klm=1;klm<=kolbar;klm++){
  44.                 for (brs=1;brs<=kolbar;brs++){
  45.                     cout<<"["<<klm<<"]["<<brs<<"] : ";
  46.                     cin >>matriks[klm][brs];
  47.                 }
  48.             }
  49.             cout<<endl;
  50.             for (klm=1;klm<=kolbar;klm++){
  51.                 for (brs=1;brs<=kolbar;brs++){
  52.                     cout<<matriks[klm][brs]<<" ";
  53.                 }
  54.                 cout<<endl;
  55.             }
  56.             cout<<endl;
  57.             for (int i=1;i<m;i++){
  58.                 cout<< "Matriks ke-" << i+1 << endl;
  59.                 for (klm=1;klm<=kolbar;klm++){
  60.                     for (brs=1;brs<=kolbar;brs++){
  61.                             cout<< "[" << klm << "][" << brs << "]: ";
  62.                             cin >> matriks2[klm][brs];
  63.                             matriks[klm][brs]=matriks[klm][brs]+matriks2[klm][brs];
  64.                     }
  65.                 }
  66.                 cout<<endl;
  67.                 for (klm=1;klm<=kolbar;klm++){
  68.                     for (brs=1;brs<=kolbar;brs++){
  69.                             cout<<matriks2[klm][brs] << " ";
  70.                     }
  71.                     cout<<endl;
  72.                 }
  73.                 cout<<endl;
  74.             }
  75.             cout<< "Hasil penjumlahan matriks:\n";
  76.             for (klm=1;klm<=kolbar;klm++){
  77.                 for (brs=1;brs<=kolbar;brs++){
  78.                     cout<<matriks[klm][brs] << " ";
  79.                 }
  80.                 cout<<endl;
  81.             }
  82.             cout<<endl;
  83.             break;
  84.         }
  85.         case 2: {
  86.             anu();
  87.             cout<<"Matriks pertama\n";
  88.             for (klm=1;klm<=kolbar;klm++){
  89.                 for (brs=1;brs<=kolbar;brs++){
  90.                     cout<<"["<<klm<<"]["<<brs<<"] : ";
  91.                     cin >>matriks[klm][brs];
  92.                 }
  93.             }
  94.             cout<<endl;
  95.             for (klm=1;klm<=kolbar;klm++){
  96.                 for (brs=1;brs<=kolbar;brs++){
  97.                     cout<<matriks[klm][brs]<<" ";
  98.                 }
  99.                 cout<<endl;
  100.             }
  101.             cout<<endl;
  102.             for (int i=1;i<m;i++){
  103.                 cout<< "Matriks ke-" << i+1 << endl;
  104.                 for (klm=1;klm<=kolbar;klm++){
  105.                     for (brs=1;brs<=kolbar;brs++){
  106.                             cout<< "[" << klm << "][" << brs << "]: ";
  107.                             cin >> matriks2[klm][brs];
  108.                             matriks[klm][brs]=matriks[klm][brs]-matriks2[klm][brs];
  109.                     }
  110.                 }
  111.                 cout<<endl;
  112.                 for (klm=1;klm<=kolbar;klm++){
  113.                     for (brs=1;brs<=kolbar;brs++){
  114.                             cout<<matriks2[klm][brs] << " ";
  115.                     }
  116.                     cout<<endl;
  117.                 }
  118.                 cout<<endl;
  119.             }
  120.             cout<< "Hasil pengurangan matriks:\n";
  121.             for (klm=1;klm<=kolbar;klm++){
  122.                 for (brs=1;brs<=kolbar;brs++){
  123.                     cout<<matriks[klm][brs] << " ";
  124.                 }
  125.                 cout<<endl;
  126.             }
  127.             cout<<endl;
  128.             break;
  129.         }
  130.         case 3: {
  131.             anu();
  132.            
  133.             cout<<"Matriks pertama\n";
  134.             for (klm=1;klm<=kolbar;klm++){
  135.                 for (brs=1;brs<=kolbar;brs++){
  136.                     cout<<"["<<klm<<"]["<<brs<<"] : ";
  137.                     cin>>matriks[klm][brs];
  138.                 }
  139.             }
  140.             cout<<endl;
  141.             for (klm=1;klm<=kolbar;klm++){
  142.                 for (brs=1;brs<=kolbar;brs++){
  143.                     cout<<matriks[klm][brs]<<" ";
  144.                 }
  145.                 cout<<endl;
  146.             }
  147.             for (int i=1; i<m; i++){
  148.                 cout<<"Matriks ke-"<<i+1;
  149.             for (klm=1;klm<=kolbar;klm++){
  150.                 for (brs=1;brs<=kolbar;brs++){
  151.                     cout<<"["<<klm<<"]["<<brs<<"] : ";
  152.                         cin >> matriks2[klm][brs];
  153.                     }
  154.                 }
  155.                 cout<<endl;
  156.                 for (klm=1;klm<=kolbar;klm++){
  157.                     for (brs=1;brs<=kolbar;brs++){
  158.                         matriks3[klm][brs]=0;
  159.                         for (int j=1; j<=kolbar; j++){
  160.                             matriks3[klm][brs]=matriks3[klm][brs]+(matriks[klm][j]*matriks2[j][brs]);
  161.                         }
  162.                     }
  163.                 }
  164.                 for (klm=1;klm<=kolbar;klm++){
  165.                     for (brs=1;brs<=kolbar;brs++){
  166.                         cout<<matriks[klm][brs]<<" ";
  167.                         matriks[klm][brs]=matriks3[klm][brs];
  168.                     }
  169.                     cout<<endl;
  170.                 }
  171.             }
  172.             cout<< "Hasil perkalian matriks adalah:\n";
  173.             for (klm=1; klm<=kolbar; klm++){
  174.                     for (brs=1; brs<=kolbar; brs++){
  175.                     cout<<matriks3[klm][brs] << " ";
  176.                 }
  177.                 cout<<endl;
  178.             }      
  179.             break;
  180.         }
  181.         case 4: {
  182.             anu();
  183.             //determinan
  184.             if (kolbar<4){
  185.                 cout<<"Input nilai matriks\n";
  186.                 for (klm=1; klm<=kolbar; klm++){
  187.                     for (brs=1; brs<=kolbar; brs++){
  188.                         cout<< "[" << klm << "][" << brs << "] : ";
  189.                         cin >> matriks[klm][brs];
  190.                     }
  191.                 }
  192.                 cout<<endl;
  193.                 for (klm=1; klm<=kolbar; klm++){
  194.                     for (brs=1; brs<=kolbar; brs++){
  195.                         cout<<matriks[klm][brs] << " ";
  196.                     }
  197.                     cout<<endl;
  198.                 }
  199.                 cout<<endl;
  200.                 if (kolbar==2){
  201.                     matriksdet=(matriks[1][1]*matriks[2][2])-(matriks[1][2]*matriks[2][1]);
  202.                 }
  203.                 if (kolbar==3){
  204.                     matriksdet=((matriks[1][1]*matriks[2][2]*matriks[3][3])+(matriks[2][1]*matriks[3][2]*matriks[1][3])+(matriks[3][1]*matriks[1][2]*matriks[2][3]))-((matriks[3][1]*matriks[2][2]*matriks[1][3])+(matriks[2][1]*matriks[1][2]*matriks[3][3])+(matriks[1][1]*matriks[3][2]*matriks[2][3]));
  205.                 }
  206.                 //hasil determinan
  207.                 cout<<"Determinan matriks: ";
  208.                 cout<<matriksdet<<endl;
  209.                 for (int i=1;i<m;i++){
  210.                     cout<< endl<< "\nMatriks ke-" << i+1 << endl;
  211.                     for (klm=1;klm<=kolbar;klm++){
  212.                         for (brs=1;brs<=kolbar;brs++){
  213.                                 cout<< "[" << klm << "][" << brs << "]: ";
  214.                                 cin >> matriks2[klm][brs];
  215.                         }
  216.                     }
  217.                     cout<<endl;
  218.                     for (klm=1;klm<=kolbar;klm++){
  219.                         for (brs=1;brs<=kolbar;brs++){
  220.                                 cout<<matriks2[klm][brs] << " ";
  221.                         }
  222.                         cout<<endl;
  223.                     }
  224.                     cout<<endl;
  225.                     if (kolbar==2){
  226.                         matriksdet=(matriks2[1][1]*matriks2[2][2])-(matriks2[1][2]*matriks2[2][1]);
  227.                     }
  228.                     if (kolbar==3){
  229.                         matriksdet=((matriks2[1][1]*matriks2[2][2]*matriks2[3][3])+(matriks2[2][1]*matriks2[3][2]*matriks2[1][3])+(matriks2[3][1]*matriks2[1][2]*matriks2[2][3]))-((matriks2[3][1]*matriks2[2][2]*matriks2[1][3])+(matriks2[2][1]*matriks2[1][2]*matriks2[3][3])+(matriks2[1][1]*matriks2[3][2]*matriks2[2][3]));
  230.                     }
  231.                     //hasil determinan
  232.                     cout<<"Determinan matriks ke-"<<i+1<<": ";
  233.                     cout<<matriksdet<<endl;
  234.                 }
  235.             } else{
  236.                 cout<<"Hanya bisa ordo 2x2 dan 3x3\n";
  237.             }
  238.             break;
  239.         }
  240.         case 5: {
  241.             anu();
  242.             for(int i=1;i<=kolbar;i++)
  243.                 matriksrev[i] = new float[kolbar];
  244.             for(int i=1;i<=kolbar;i++)
  245.                 matriksinv[i] = new float[kolbar];         
  246.             if (kolbar<3){
  247.                 cout<<"Input nilai matriks\n";
  248.                 for (klm=1; klm<=kolbar; klm++){
  249.                     for (brs=1; brs<=kolbar; brs++){
  250.                         cout<< "[" << klm << "][" << brs << "] : ";
  251.                         cin >> matriks[klm][brs];
  252.                     }
  253.                 }
  254.                 for (klm=1; klm<=kolbar; klm++){
  255.                     for (brs=1; brs<=kolbar; brs++){
  256.                         cout<<matriks[klm][brs] << " ";
  257.                     }
  258.                     cout<<endl;
  259.                 }
  260.                 //reverse
  261.                 matriksrev[1][1]=matriks[2][2];
  262.                 matriksrev[1][2]=-1*matriks[1][2];
  263.                 matriksrev[2][1]=-1*matriks[2][1];
  264.                 matriksrev[2][2]=matriks[1][1];
  265.  
  266.                 //determinan
  267.                 matriksdet=(matriks[1][1]*matriks[2][2])-(matriks[1][2]*matriks[2][1]);
  268.                 float seper=(1/matriksdet);
  269.                 //invers
  270.                 for(int klm=1;klm<=kolbar;klm++) {
  271.                     for(int brs=1;brs<=kolbar;brs++) {
  272.                         matriksinv[klm][brs]=matriksrev[klm][brs]*seper;
  273.                     }
  274.                 }
  275.                 if (kolbar==2){
  276.                     //hasil invers
  277.                     cout<<"\nHasil invers matriks:\n";
  278.                     if (matriksdet==0) {
  279.                         cout<<"Determinan matriks 0, tidak dapat diinvers";
  280.                     } else {
  281.                         for (klm=1;klm<=kolbar; klm++){
  282.                             for (brs=1;brs<=kolbar;brs++){
  283.                                 cout<<matriksinv[klm][brs]<<" ";
  284.                             }
  285.                             cout<<endl;
  286.                         }
  287.                     }
  288.                 }
  289.             } else{
  290.                 cout<<"Hanya bisa ordo 2x2\n";
  291.             }          
  292.             break;
  293.         }
  294.     }
  295. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement