Kamis, 25 April 2013

PERHITUNGAN MATRIX

         Dalam kegiatan kali ini kita akan membuat sebuah program menggunakan bahasa c untuk menghitung penjumlahan, pengurangan, perkalian, pembagian dua buah matrix ordo 2 dalam bilangan yang dapat diinputkan oleh user.

Disamping ini merupakan video tutorialnya :


Output yang akan dihasilkan :


Source code :

#include <stdio.h>
#include <stdlib.h>
float varA[2][2],varB[2][2],varC[2][2];
int x,y,z;
 //Buat fungsi menu untuk tampilan pemilihan menu
void menu(){
  printf("\n[1] PENJUMLAHAN");    
  printf("\n[2] PENGURANGAN");
  printf("\n[3] PERKALIAN");  
  printf("\n[4] PEMBAGIAN");
  printf("\n[0] KELUAR");
}

//buat fungsi untuk memasukan nilai matrix
void masukkan(){
  int i,j;
  printf("===========Bilangan Matrix A=========\n\n");
  for (i=0; i<2; i++){
    for (j=0; j<2; j++){
    printf("Bilangan Matrix A [%d][%d] : ",i, j);
       //buat inputan user menggunakan fungsi scanf
    scanf("%f",&varA[i][j]);
    }
  }
  printf("\n===========Bilangan Matrix B=========\n\n");
  for (i=0; i<2; i++){
    for (j=0; j<2; j++){
    printf("Bilangan Matrix B [%d][%d] : ",i, j);
       //buat inputan user menggunakan fungsi scanf
    scanf("%f",&varB[i][j]);
    }
  }
}

//buat fungsi untuk menampilkan yang akan dipanggil pada fungsi
//lain seperti penjumlahan
void tampilkan(char opr){
  for (x=0; x<2; x++){
    for (y=0; y<2; y++){
      printf("%2.0f ",varA[x][y]);
    }
    if(x==0) printf("\t%c\t",opr);
    else printf("\t\t");
    for (y=0; y<2; y++){
      printf("%2.0f ",varB[x][y]);
    }
    printf("\n");
  }
  
}
//buat fungsi untuk penjumlahan
void jumlah(){
  masukkan(); //pemanggilan fungsi masukan
  tampilkan('+'); //pemanggilan fungsi untuk menampilkan
  printf("Hasil Penjumlahan:\n");
  for (x=0; x<2; x++){
    for (y=0; y<2; y++){
      printf("%2.0f ",varA[x][y]+varB[x][y]);
    }
    printf("\n");
  }
}

//buat fungsi untuk pengurangan
void kurang(){
  masukkan(); //pemanggilan fungsi masukan
  tampilkan('-'); //pemanggilan fungsi untuk menampilkan
  printf("Hasil Pengurangan:\n");
    for (x=0; x<2; x++){
    for (y=0; y<2; y++){
              //buat rumus penguranganya
      printf("%2.0f ",varA[x][y]-varB[x][y]);
    }
    printf("\n");
  }
}
//buat fungsi perkalian
void kali(){
  masukkan();
  tampilkan('x');
  printf("Hasil Perkalian:\n");
  for (x=0; x<2; x++){
    for (y=0; y<2; y++){
      varC[x][y]=0;
      for (z=0; z<2; z++){
                //buat rumus untuk perkalian
        varC[x][y]+=varA[x][z]*varB[z][y];
             
      }
      printf("%2.0f ",varC[x][y]);
    }
    printf("\n");
  }
}
//buat fungsi pembagian
void bagi(){
  float deterB,temp,vrBinvers[2][2];
  masukkan();
  tampilkan(':');

  deterB = 1/((varB[0][0]*varB[1][1])-(varB[0][1]*varB[1][0]));
  vrBinvers[0][0] = deterB*varB[1][1];
  vrBinvers[0][1] = deterB*(-varB[0][1]);
  vrBinvers[1][0] = deterB*(-varB[1][0]);
  vrBinvers[1][1] = deterB*varB[0][0];

  for (x=0; x<2; x++){
    for (y=0; y<2; y++){
      printf("%2.0f ",varA[x][y]);
    }
    if(x==0) printf("\tx\t");
    else printf("\t \t");
    for (y=0; y<2; y++){
      printf("%6.2f ",vrBinvers[x][y]);
    }
    printf("\n");
  }

  printf("Hasil Pembagian:\n");
  for (x=0; x<2; x++){
    for (y=0; y<2; y++){
      varC[x][y]=0;
      for (z=0; z<2; z++){
        varC[x][y]+=varA[x][z]*vrBinvers[z][y];
      }
      printf("%6.2f ",varC[x][y]);
    }
    printf("\n");
  }
}

//fungsi utama program
int main(void){
  int selesai=1,pilih;
  printf("\n================================================\n");
  printf("=========         PROGRAM C            =========\n");
  printf("=========    PERHITUNGAN MATRIKS       =========\n");
  printf("=========       Royan Rodiana          =========\n");
  printf("================================================\n\n");
  while(selesai==1){
    menu();
    printf("\nMasukkan pilihan >");
           scanf("%d",&pilih);
    switch(pilih){
      case 0 : selesai=0; break;
      case 1 : jumlah(); break;
      case 2 : kurang(); break;
      case 3 : kali(); break;
      case 4 : bagi(); break;
      
                //buat defaultnya jika memilih menu selain diatas ada peringatan dan sistem terhenti
      default :  printf("Maaf nomor yang anda masukan tidak ada di list \n silahkan ulangi !!!\n\n");
                system("pause");
                return 0;
                break;
    }
  }
  system("pause");
  return 0;
}


0 komentar:

Posting Komentar